UNPKG

humpty

Version:

Makes sure your changelogs mention your breaking changes

132 lines (117 loc) 4.57 kB
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); }); }); });