import { FileListRenderer } from '../file-list-renderer'; import HoganJsUtils from '../hoganjs-utils'; import { ColorSchemeType } from '../types'; describe('FileListRenderer', () => { describe('render', () => { 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 fileListRenderer = new FileListRenderer(hoganUtils); 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 = fileListRenderer.render(files); expect(fileHtml).toMatchInlineSnapshot(` "my/file/name.js, my/file/name.js, my/file/name.js my/file/name1.js, my/file/name2.js, my/file/{name1.js → name2.js} dev/null, my/file/name.js, my/file/name.js my/file/name.js, dev/null, my/file/name.js" `); }); it('should work for all kinds of files', () => { const hoganUtils = new HoganJsUtils({}); const fileListRenderer = new FileListRenderer(hoganUtils); 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 = fileListRenderer.render(files); expect(fileHtml).toMatchInlineSnapshot(` "