import { render } from "../file-list-renderer"; import HoganJsUtils from "../hoganjs-utils"; describe("FileListPrinter", () => { describe("generateFileList", () => { it("should expose old and new files to templates", () => { const hoganUtils = new HoganJsUtils({ rawTemplates: { "file-summary-wrapper": "{{{files}}}", "file-summary-line": "{{oldName}}, {{newName}}, {{fileName}}" } }); const files = [ { isCombined: false, isGitDiff: false, blocks: [], addedLines: 12, deletedLines: 41, language: "js", oldName: "my/file/name.js", newName: "my/file/name.js" }, { isCombined: false, isGitDiff: false, blocks: [], addedLines: 12, deletedLines: 41, language: "js", oldName: "my/file/name1.js", newName: "my/file/name2.js" }, { isCombined: false, isGitDiff: false, blocks: [], addedLines: 12, deletedLines: 0, language: "js", oldName: "dev/null", newName: "my/file/name.js", isNew: true }, { isCombined: false, isGitDiff: false, blocks: [], addedLines: 0, deletedLines: 41, language: "js", oldName: "my/file/name.js", newName: "dev/null", isDeleted: true } ]; const fileHtml = render(files, hoganUtils); const expected = "my/file/name.js, my/file/name.js, my/file/name.js\n" + "my/file/name1.js, my/file/name2.js, my/file/{name1.js → name2.js}\n" + "dev/null, my/file/name.js, my/file/name.js\n" + "my/file/name.js, dev/null, my/file/name.js"; expect(fileHtml).toEqual(expected); }); it("should work for all kinds of files", () => { const hoganUtils = new HoganJsUtils({}); const files = [ { isCombined: false, isGitDiff: false, blocks: [], addedLines: 12, deletedLines: 41, language: "js", oldName: "my/file/name.js", newName: "my/file/name.js" }, { isCombined: false, isGitDiff: false, blocks: [], addedLines: 12, deletedLines: 41, language: "js", oldName: "my/file/name1.js", newName: "my/file/name2.js" }, { isCombined: false, isGitDiff: false, blocks: [], addedLines: 12, deletedLines: 0, language: "js", oldName: "dev/null", newName: "my/file/name.js", isNew: true }, { isCombined: false, isGitDiff: false, blocks: [], addedLines: 0, deletedLines: 41, language: "js", oldName: "my/file/name.js", newName: "dev/null", isDeleted: true } ]; const fileHtml = render(files, hoganUtils); const expected = '
\n' + '
\n' + ' Files changed (4)\n' + ' hide\n' + ' show\n' + "
\n" + '
    \n' + '
  1. \n' + ' \n' + ' my/file/name.js\n' + ' \n' + ' +12\n' + ' -41\n' + " \n" + " \n" + "
  2. \n" + '
  3. \n' + ' \n' + ' my/file/{name1.js → name2.js}\n' + ' \n' + ' +12\n' + ' -41\n' + " \n" + " \n" + "
  4. \n" + '
  5. \n' + ' \n' + ' my/file/name.js\n' + ' \n' + ' +12\n' + ' -0\n' + " \n" + " \n" + "
  6. \n" + '
  7. \n' + ' \n' + ' my/file/name.js\n' + ' \n' + ' +0\n' + ' -41\n' + " \n" + " \n" + "
  8. \n" + "
\n" + "
"; expect(fileHtml).toEqual(expected); }); }); });