humpty
Version:
Makes sure your changelogs mention your breaking changes
132 lines (117 loc) • 4.57 kB
JavaScript
import simpleGit from "simple-git";
import basicComponentOld from "./dummy_exports/basic/old";
import basicComponentNew from "./dummy_exports/basic/old";
import {
entryOld,
entryNew,
namedOld,
namedNew
} from "./inputs/getExportsAndCommits/defaultAndNamed";
import * as defaultAndNamedDeep from "./inputs/getExportsAndCommits/defaultAndNamedDeep";
import * as defaultAndNamedDeep2 from "./inputs/getExportsAndCommits/defaultAndNamedDeep2";
import getExportsAndCommits from "../src/getExportsAndCommits";
describe("getExportsAndCommits()", () => {
test("single component in root index.js", () => {
simpleGit.__setCommits__(["commit 1", "commit 2"]);
simpleGit.__setFiles__({
aaaaaa: {
"index.js": basicComponentOld
},
ffffff: {
"index.js": basicComponentNew
}
});
return getExportsAndCommits({
oldApi: "aaaaaa",
newApi: "ffffff"
}).then(result => {
expect(result.commitMessages).toEqual(["commit 1", "commit 2"]);
expect(result).toMatchSnapshot();
});
});
test("default component export from index.js + named export from separate file", () => {
simpleGit.__setCommits__(["commit 1", "commit 2"]);
simpleGit.__setFiles__({
aaaaaa: {
"index.js": entryOld,
"Dog.js": namedOld
},
ffffff: {
"index.js": entryNew,
"Dog.js": namedNew
}
});
return getExportsAndCommits({
oldApi: "aaaaaa",
newApi: "ffffff"
}).then(result => {
expect(result.commitMessages).toEqual(["commit 1", "commit 2"]);
expect(result.newExports.length).toBe(2);
expect(result.newExports[0].isDefaultExport).toBe(true);
expect(result.newExports[0].name).toBe(undefined);
expect(result.newExports[0].api.props.length).toBe(2);
expect(result.newExports[1].isDefaultExport).toBe(false);
expect(result.newExports[1].name).toBe("Dog");
expect(result.newExports[1].api.props.length).toBe(1);
expect(result.oldExports.length).toBe(2);
});
});
test("default component export from index.js > intermediary file > named export from separate file", () => {
simpleGit.__setCommits__(["commit 1", "commit 2"]);
simpleGit.__setFiles__({
aaaaaa: {
"index.js": defaultAndNamedDeep.entryOld,
"middle/Middle.jsx": defaultAndNamedDeep.middleOld,
"middle/components/Dog.js": defaultAndNamedDeep.deepOld
},
ffffff: {
"index.js": defaultAndNamedDeep.entryNew,
"middle/Middle.jsx": defaultAndNamedDeep.middleNew,
"middle/components/Dog.js": defaultAndNamedDeep.deepNew
}
});
return getExportsAndCommits({
oldApi: "aaaaaa",
newApi: "ffffff"
}).then(result => {
expect(result.commitMessages).toEqual(["commit 1", "commit 2"]);
expect(result.newExports.length).toBe(2);
expect(result.newExports[0].isDefaultExport).toBe(true);
expect(result.newExports[0].name).toBe(undefined);
expect(result.newExports[0].api.props.length).toBe(2);
expect(result.newExports[1].isDefaultExport).toBe(false);
expect(result.newExports[1].name).toBe("Dog");
expect(result.newExports[1].api.props.length).toBe(1);
expect(result.oldExports.length).toBe(2);
});
});
test("default component export from index.js > intermediary file > named export from separate file (variant)", () => {
simpleGit.__setCommits__(["commit 1", "commit 2"]);
simpleGit.__setFiles__({
aaaaaa: {
"index.js": defaultAndNamedDeep2.entryOld,
"middle/Middle.jsx": defaultAndNamedDeep2.middleOld,
"middle/components/Dog.js": defaultAndNamedDeep2.deepOld
},
ffffff: {
"index.js": defaultAndNamedDeep2.entryNew,
"middle/Middle.jsx": defaultAndNamedDeep2.middleNew,
"middle/components/Dog.js": defaultAndNamedDeep2.deepNew
}
});
return getExportsAndCommits({
oldApi: "aaaaaa",
newApi: "ffffff"
}).then(result => {
expect(result.commitMessages).toEqual(["commit 1", "commit 2"]);
expect(result.newExports.length).toBe(2);
expect(result.newExports[0].isDefaultExport).toBe(true);
expect(result.newExports[0].name).toBe(undefined);
expect(result.newExports[0].api.props.length).toBe(2);
expect(result.newExports[1].isDefaultExport).toBe(false);
expect(result.newExports[1].name).toBe("Dog");
expect(result.newExports[1].api.props.length).toBe(1);
expect(result.oldExports.length).toBe(2);
});
});
});