test: Use Jest snapshots
This commit is contained in:
parent
e573663789
commit
c3c5f60c0d
7 changed files with 2928 additions and 1396 deletions
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
|
@ -56,13 +56,13 @@ describe("FileListPrinter", () => {
|
|||
];
|
||||
|
||||
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);
|
||||
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", () => {
|
||||
|
|
@ -111,69 +111,66 @@ describe("FileListPrinter", () => {
|
|||
isDeleted: true
|
||||
}
|
||||
];
|
||||
|
||||
const fileHtml = render(files, hoganUtils);
|
||||
|
||||
const expected =
|
||||
'<div class="d2h-file-list-wrapper">\n' +
|
||||
' <div class="d2h-file-list-header">\n' +
|
||||
' <span class="d2h-file-list-title">Files changed (4)</span>\n' +
|
||||
' <a class="d2h-file-switch d2h-hide">hide</a>\n' +
|
||||
' <a class="d2h-file-switch d2h-show">show</a>\n' +
|
||||
" </div>\n" +
|
||||
' <ol class="d2h-file-list">\n' +
|
||||
' <li class="d2h-file-list-line">\n' +
|
||||
' <span class="d2h-file-name-wrapper">\n' +
|
||||
' <svg aria-hidden="true" class="d2h-icon d2h-changed" height="16" title="modified" version="1.1"\n' +
|
||||
' viewBox="0 0 14 16" width="14">\n' +
|
||||
' <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z"></path>\n' +
|
||||
' </svg> <a href="#d2h-781444" class="d2h-file-name">my/file/name.js</a>\n' +
|
||||
' <span class="d2h-file-stats">\n' +
|
||||
' <span class="d2h-lines-added">+12</span>\n' +
|
||||
' <span class="d2h-lines-deleted">-41</span>\n' +
|
||||
" </span>\n" +
|
||||
" </span>\n" +
|
||||
"</li>\n" +
|
||||
'<li class="d2h-file-list-line">\n' +
|
||||
' <span class="d2h-file-name-wrapper">\n' +
|
||||
' <svg aria-hidden="true" class="d2h-icon d2h-moved" height="16" title="renamed" version="1.1"\n' +
|
||||
' viewBox="0 0 14 16" width="14">\n' +
|
||||
' <path d="M6 9H3V7h3V4l5 4-5 4V9z m8-7v12c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h12c0.55 0 1 0.45 1 1z m-1 0H1v12h12V2z"></path>\n' +
|
||||
' </svg> <a href="#d2h-662683" class="d2h-file-name">my/file/{name1.js → name2.js}</a>\n' +
|
||||
' <span class="d2h-file-stats">\n' +
|
||||
' <span class="d2h-lines-added">+12</span>\n' +
|
||||
' <span class="d2h-lines-deleted">-41</span>\n' +
|
||||
" </span>\n" +
|
||||
" </span>\n" +
|
||||
"</li>\n" +
|
||||
'<li class="d2h-file-list-line">\n' +
|
||||
' <span class="d2h-file-name-wrapper">\n' +
|
||||
' <svg aria-hidden="true" class="d2h-icon d2h-added" height="16" title="added" version="1.1" viewBox="0 0 14 16"\n' +
|
||||
' width="14">\n' +
|
||||
' <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z"></path>\n' +
|
||||
' </svg> <a href="#d2h-781444" class="d2h-file-name">my/file/name.js</a>\n' +
|
||||
' <span class="d2h-file-stats">\n' +
|
||||
' <span class="d2h-lines-added">+12</span>\n' +
|
||||
' <span class="d2h-lines-deleted">-0</span>\n' +
|
||||
" </span>\n" +
|
||||
" </span>\n" +
|
||||
"</li>\n" +
|
||||
'<li class="d2h-file-list-line">\n' +
|
||||
' <span class="d2h-file-name-wrapper">\n' +
|
||||
' <svg aria-hidden="true" class="d2h-icon d2h-deleted" height="16" title="removed" version="1.1"\n' +
|
||||
' viewBox="0 0 14 16" width="14">\n' +
|
||||
' <path d="M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z"></path>\n' +
|
||||
' </svg> <a href="#d2h-781444" class="d2h-file-name">my/file/name.js</a>\n' +
|
||||
' <span class="d2h-file-stats">\n' +
|
||||
' <span class="d2h-lines-added">+0</span>\n' +
|
||||
' <span class="d2h-lines-deleted">-41</span>\n' +
|
||||
" </span>\n" +
|
||||
" </span>\n" +
|
||||
"</li>\n" +
|
||||
" </ol>\n" +
|
||||
"</div>";
|
||||
|
||||
expect(fileHtml).toEqual(expected);
|
||||
expect(fileHtml).toMatchInlineSnapshot(`
|
||||
"<div class=\\"d2h-file-list-wrapper\\">
|
||||
<div class=\\"d2h-file-list-header\\">
|
||||
<span class=\\"d2h-file-list-title\\">Files changed (4)</span>
|
||||
<a class=\\"d2h-file-switch d2h-hide\\">hide</a>
|
||||
<a class=\\"d2h-file-switch d2h-show\\">show</a>
|
||||
</div>
|
||||
<ol class=\\"d2h-file-list\\">
|
||||
<li class=\\"d2h-file-list-line\\">
|
||||
<span class=\\"d2h-file-name-wrapper\\">
|
||||
<svg aria-hidden=\\"true\\" class=\\"d2h-icon d2h-changed\\" height=\\"16\\" title=\\"modified\\" version=\\"1.1\\"
|
||||
viewBox=\\"0 0 14 16\\" width=\\"14\\">
|
||||
<path d=\\"M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM4 8c0-1.66 1.34-3 3-3s3 1.34 3 3-1.34 3-3 3-3-1.34-3-3z\\"></path>
|
||||
</svg> <a href=\\"#d2h-781444\\" class=\\"d2h-file-name\\">my/file/name.js</a>
|
||||
<span class=\\"d2h-file-stats\\">
|
||||
<span class=\\"d2h-lines-added\\">+12</span>
|
||||
<span class=\\"d2h-lines-deleted\\">-41</span>
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
<li class=\\"d2h-file-list-line\\">
|
||||
<span class=\\"d2h-file-name-wrapper\\">
|
||||
<svg aria-hidden=\\"true\\" class=\\"d2h-icon d2h-moved\\" height=\\"16\\" title=\\"renamed\\" version=\\"1.1\\"
|
||||
viewBox=\\"0 0 14 16\\" width=\\"14\\">
|
||||
<path d=\\"M6 9H3V7h3V4l5 4-5 4V9z m8-7v12c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h12c0.55 0 1 0.45 1 1z m-1 0H1v12h12V2z\\"></path>
|
||||
</svg> <a href=\\"#d2h-662683\\" class=\\"d2h-file-name\\">my/file/{name1.js → name2.js}</a>
|
||||
<span class=\\"d2h-file-stats\\">
|
||||
<span class=\\"d2h-lines-added\\">+12</span>
|
||||
<span class=\\"d2h-lines-deleted\\">-41</span>
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
<li class=\\"d2h-file-list-line\\">
|
||||
<span class=\\"d2h-file-name-wrapper\\">
|
||||
<svg aria-hidden=\\"true\\" class=\\"d2h-icon d2h-added\\" height=\\"16\\" title=\\"added\\" version=\\"1.1\\" viewBox=\\"0 0 14 16\\"
|
||||
width=\\"14\\">
|
||||
<path d=\\"M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM6 9H3V7h3V4h2v3h3v2H8v3H6V9z\\"></path>
|
||||
</svg> <a href=\\"#d2h-781444\\" class=\\"d2h-file-name\\">my/file/name.js</a>
|
||||
<span class=\\"d2h-file-stats\\">
|
||||
<span class=\\"d2h-lines-added\\">+12</span>
|
||||
<span class=\\"d2h-lines-deleted\\">-0</span>
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
<li class=\\"d2h-file-list-line\\">
|
||||
<span class=\\"d2h-file-name-wrapper\\">
|
||||
<svg aria-hidden=\\"true\\" class=\\"d2h-icon d2h-deleted\\" height=\\"16\\" title=\\"removed\\" version=\\"1.1\\"
|
||||
viewBox=\\"0 0 14 16\\" width=\\"14\\">
|
||||
<path d=\\"M13 1H1C0.45 1 0 1.45 0 2v12c0 0.55 0.45 1 1 1h12c0.55 0 1-0.45 1-1V2c0-0.55-0.45-1-1-1z m0 13H1V2h12v12zM11 9H3V7h8v2z\\"></path>
|
||||
</svg> <a href=\\"#d2h-781444\\" class=\\"d2h-file-name\\">my/file/name.js</a>
|
||||
<span class=\\"d2h-file-stats\\">
|
||||
<span class=\\"d2h-lines-added\\">+0</span>
|
||||
<span class=\\"d2h-lines-deleted\\">-41</span>
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
</ol>
|
||||
</div>"
|
||||
`);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -3,22 +3,21 @@ import { CSSLineClass } from "../render-utils";
|
|||
|
||||
describe("HoganJsUtils", () => {
|
||||
describe("render", () => {
|
||||
const emptyDiffHtml =
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-info">\n' +
|
||||
' <div class="d2h-code-line d2h-info">\n' +
|
||||
" File without changes\n" +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>";
|
||||
|
||||
it("should render view", () => {
|
||||
const hoganJsUtils = new HoganJsUtils({});
|
||||
const result = hoganJsUtils.render("generic", "empty-diff", {
|
||||
contentClass: "d2h-code-line",
|
||||
CSSLineClass: CSSLineClass
|
||||
});
|
||||
expect(result).toEqual(emptyDiffHtml);
|
||||
expect(result).toMatchInlineSnapshot(`
|
||||
"<tr>
|
||||
<td class=\\"d2h-info\\">
|
||||
<div class=\\"d2h-code-line d2h-info\\">
|
||||
File without changes
|
||||
</div>
|
||||
</td>
|
||||
</tr>"
|
||||
`);
|
||||
});
|
||||
|
||||
it("should render view without cache", () => {
|
||||
|
|
@ -27,7 +26,15 @@ describe("HoganJsUtils", () => {
|
|||
contentClass: "d2h-code-line",
|
||||
CSSLineClass: CSSLineClass
|
||||
});
|
||||
expect(result).toEqual(emptyDiffHtml);
|
||||
expect(result).toMatchInlineSnapshot(`
|
||||
"<tr>
|
||||
<td class=\\"d2h-info\\">
|
||||
<div class=\\"d2h-code-line d2h-info\\">
|
||||
File without changes
|
||||
</div>
|
||||
</td>
|
||||
</tr>"
|
||||
`);
|
||||
});
|
||||
|
||||
it("should throw exception if template is missing", () => {
|
||||
|
|
@ -40,7 +47,7 @@ describe("HoganJsUtils", () => {
|
|||
const hoganJsUtils = new HoganJsUtils({ compiledTemplates: { "generic-empty-diff": emptyDiffTemplate } });
|
||||
|
||||
const result = hoganJsUtils.render("generic", "empty-diff", { myName: "Rodrigo Fernandes" });
|
||||
expect(result).toEqual("<p>Rodrigo Fernandes</p>");
|
||||
expect(result).toMatchInlineSnapshot(`"<p>Rodrigo Fernandes</p>"`);
|
||||
});
|
||||
|
||||
it("should allow templates to be overridden with uncompiled templates", () => {
|
||||
|
|
@ -48,7 +55,7 @@ describe("HoganJsUtils", () => {
|
|||
const hoganJsUtils = new HoganJsUtils({ rawTemplates: { "generic-empty-diff": emptyDiffTemplate } });
|
||||
|
||||
const result = hoganJsUtils.render("generic", "empty-diff", { myName: "Rodrigo Fernandes" });
|
||||
expect(result).toEqual("<p>Rodrigo Fernandes</p>");
|
||||
expect(result).toMatchInlineSnapshot(`"<p>Rodrigo Fernandes</p>"`);
|
||||
});
|
||||
|
||||
it("should allow templates to be overridden giving priority to raw templates", () => {
|
||||
|
|
@ -60,7 +67,7 @@ describe("HoganJsUtils", () => {
|
|||
});
|
||||
|
||||
const result = hoganJsUtils.render("generic", "empty-diff", { myName: "Rodrigo Fernandes" });
|
||||
expect(result).toEqual("<p>Rodrigo Fernandes</p>");
|
||||
expect(result).toMatchInlineSnapshot(`"<p>Rodrigo Fernandes</p>"`);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -9,16 +9,15 @@ describe("LineByLineRenderer", () => {
|
|||
const hoganUtils = new HoganJsUtils({});
|
||||
const lineByLineRenderer = new LineByLineRenderer(hoganUtils, {});
|
||||
const fileHtml = lineByLineRenderer.generateEmptyDiff();
|
||||
const expected =
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-info">\n' +
|
||||
' <div class="d2h-code-line d2h-info">\n' +
|
||||
" File without changes\n" +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>";
|
||||
|
||||
expect(fileHtml).toEqual(expected);
|
||||
expect(fileHtml).toMatchInlineSnapshot(`
|
||||
"<tr>
|
||||
<td class=\\"d2h-info\\">
|
||||
<div class=\\"d2h-code-line d2h-info\\">
|
||||
File without changes
|
||||
</div>
|
||||
</td>
|
||||
</tr>"
|
||||
`);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -26,142 +25,131 @@ describe("LineByLineRenderer", () => {
|
|||
it("should work for insertions", () => {
|
||||
const hoganUtils = new HoganJsUtils({});
|
||||
const lineByLineRenderer = new LineByLineRenderer(hoganUtils, {});
|
||||
let fileHtml = lineByLineRenderer.generateSingleLineHtml({
|
||||
const fileHtml = lineByLineRenderer.generateSingleLineHtml({
|
||||
type: CSSLineClass.INSERTS,
|
||||
prefix: "+",
|
||||
content: "test",
|
||||
oldNumber: undefined,
|
||||
newNumber: 30
|
||||
});
|
||||
fileHtml = fileHtml.replace(/\n\n+/g, "\n");
|
||||
const expected =
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-code-linenumber d2h-ins">\n' +
|
||||
' <div class="line-num1"></div>\n' +
|
||||
'<div class="line-num2">30</div>\n' +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-ins">\n' +
|
||||
' <div class="d2h-code-line d2h-ins">\n' +
|
||||
' <span class="d2h-code-line-prefix">+</span>\n' +
|
||||
' <span class="d2h-code-line-ctn">test</span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>";
|
||||
|
||||
expect(fileHtml).toEqual(expected);
|
||||
expect(fileHtml).toMatchInlineSnapshot(`
|
||||
"<tr>
|
||||
<td class=\\"d2h-code-linenumber d2h-ins\\">
|
||||
<div class=\\"line-num1\\"></div>
|
||||
<div class=\\"line-num2\\">30</div>
|
||||
</td>
|
||||
<td class=\\"d2h-ins\\">
|
||||
<div class=\\"d2h-code-line d2h-ins\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">+</span>
|
||||
<span class=\\"d2h-code-line-ctn\\">test</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>"
|
||||
`);
|
||||
});
|
||||
|
||||
it("should work for deletions", () => {
|
||||
const hoganUtils = new HoganJsUtils({});
|
||||
const lineByLineRenderer = new LineByLineRenderer(hoganUtils, {});
|
||||
let fileHtml = lineByLineRenderer.generateSingleLineHtml({
|
||||
const fileHtml = lineByLineRenderer.generateSingleLineHtml({
|
||||
type: CSSLineClass.DELETES,
|
||||
prefix: "-",
|
||||
content: "test",
|
||||
oldNumber: 30,
|
||||
newNumber: undefined
|
||||
});
|
||||
fileHtml = fileHtml.replace(/\n\n+/g, "\n");
|
||||
const expected =
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-code-linenumber d2h-del">\n' +
|
||||
' <div class="line-num1">30</div>\n' +
|
||||
'<div class="line-num2"></div>\n' +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-del">\n' +
|
||||
' <div class="d2h-code-line d2h-del">\n' +
|
||||
' <span class="d2h-code-line-prefix">-</span>\n' +
|
||||
' <span class="d2h-code-line-ctn">test</span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>";
|
||||
|
||||
expect(fileHtml).toEqual(expected);
|
||||
expect(fileHtml).toMatchInlineSnapshot(`
|
||||
"<tr>
|
||||
<td class=\\"d2h-code-linenumber d2h-del\\">
|
||||
<div class=\\"line-num1\\">30</div>
|
||||
<div class=\\"line-num2\\"></div>
|
||||
</td>
|
||||
<td class=\\"d2h-del\\">
|
||||
<div class=\\"d2h-code-line d2h-del\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">-</span>
|
||||
<span class=\\"d2h-code-line-ctn\\">test</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>"
|
||||
`);
|
||||
});
|
||||
|
||||
it("should convert indents into non breakin spaces (2 white spaces)", () => {
|
||||
const hoganUtils = new HoganJsUtils({});
|
||||
const lineByLineRenderer = new LineByLineRenderer(hoganUtils, {});
|
||||
let fileHtml = lineByLineRenderer.generateSingleLineHtml({
|
||||
const fileHtml = lineByLineRenderer.generateSingleLineHtml({
|
||||
type: CSSLineClass.INSERTS,
|
||||
prefix: "+",
|
||||
content: " test",
|
||||
oldNumber: undefined,
|
||||
newNumber: 30
|
||||
});
|
||||
fileHtml = fileHtml.replace(/\n\n+/g, "\n");
|
||||
const expected =
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-code-linenumber d2h-ins">\n' +
|
||||
' <div class="line-num1"></div>\n' +
|
||||
'<div class="line-num2">30</div>\n' +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-ins">\n' +
|
||||
' <div class="d2h-code-line d2h-ins">\n' +
|
||||
' <span class="d2h-code-line-prefix">+</span>\n' +
|
||||
' <span class="d2h-code-line-ctn"> test</span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>";
|
||||
|
||||
expect(fileHtml).toEqual(expected);
|
||||
expect(fileHtml).toMatchInlineSnapshot(`
|
||||
"<tr>
|
||||
<td class=\\"d2h-code-linenumber d2h-ins\\">
|
||||
<div class=\\"line-num1\\"></div>
|
||||
<div class=\\"line-num2\\">30</div>
|
||||
</td>
|
||||
<td class=\\"d2h-ins\\">
|
||||
<div class=\\"d2h-code-line d2h-ins\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">+</span>
|
||||
<span class=\\"d2h-code-line-ctn\\"> test</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>"
|
||||
`);
|
||||
});
|
||||
|
||||
it("should convert indents into non breakin spaces (4 white spaces)", () => {
|
||||
const hoganUtils = new HoganJsUtils({});
|
||||
const lineByLineRenderer = new LineByLineRenderer(hoganUtils, {});
|
||||
let fileHtml = lineByLineRenderer.generateSingleLineHtml({
|
||||
const fileHtml = lineByLineRenderer.generateSingleLineHtml({
|
||||
type: CSSLineClass.INSERTS,
|
||||
prefix: "+",
|
||||
content: " test",
|
||||
oldNumber: undefined,
|
||||
newNumber: 30
|
||||
});
|
||||
fileHtml = fileHtml.replace(/\n\n+/g, "\n");
|
||||
const expected =
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-code-linenumber d2h-ins">\n' +
|
||||
' <div class="line-num1"></div>\n' +
|
||||
'<div class="line-num2">30</div>\n' +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-ins">\n' +
|
||||
' <div class="d2h-code-line d2h-ins">\n' +
|
||||
' <span class="d2h-code-line-prefix">+</span>\n' +
|
||||
' <span class="d2h-code-line-ctn"> test</span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>";
|
||||
|
||||
expect(fileHtml).toEqual(expected);
|
||||
expect(fileHtml).toMatchInlineSnapshot(`
|
||||
"<tr>
|
||||
<td class=\\"d2h-code-linenumber d2h-ins\\">
|
||||
<div class=\\"line-num1\\"></div>
|
||||
<div class=\\"line-num2\\">30</div>
|
||||
</td>
|
||||
<td class=\\"d2h-ins\\">
|
||||
<div class=\\"d2h-code-line d2h-ins\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">+</span>
|
||||
<span class=\\"d2h-code-line-ctn\\"> test</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>"
|
||||
`);
|
||||
});
|
||||
|
||||
it("should preserve tabs", () => {
|
||||
const hoganUtils = new HoganJsUtils({});
|
||||
const lineByLineRenderer = new LineByLineRenderer(hoganUtils, {});
|
||||
let fileHtml = lineByLineRenderer.generateSingleLineHtml({
|
||||
const fileHtml = lineByLineRenderer.generateSingleLineHtml({
|
||||
type: CSSLineClass.INSERTS,
|
||||
prefix: "+",
|
||||
content: "\ttest",
|
||||
oldNumber: undefined,
|
||||
newNumber: 30
|
||||
});
|
||||
fileHtml = fileHtml.replace(/\n\n+/g, "\n");
|
||||
const expected =
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-code-linenumber d2h-ins">\n' +
|
||||
' <div class="line-num1"></div>\n' +
|
||||
"" +
|
||||
'<div class="line-num2">30</div>\n' +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-ins">\n' +
|
||||
' <div class="d2h-code-line d2h-ins">\n' +
|
||||
' <span class="d2h-code-line-prefix">+</span>\n' +
|
||||
' <span class="d2h-code-line-ctn">\ttest</span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>";
|
||||
|
||||
expect(fileHtml).toEqual(expected);
|
||||
expect(fileHtml).toMatchInlineSnapshot(`
|
||||
"<tr>
|
||||
<td class=\\"d2h-code-linenumber d2h-ins\\">
|
||||
<div class=\\"line-num1\\"></div>
|
||||
<div class=\\"line-num2\\">30</div>
|
||||
</td>
|
||||
<td class=\\"d2h-ins\\">
|
||||
<div class=\\"d2h-code-line d2h-ins\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">+</span>
|
||||
<span class=\\"d2h-code-line-ctn\\"> test</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>"
|
||||
`);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -184,27 +172,26 @@ describe("LineByLineRenderer", () => {
|
|||
|
||||
const fileHtml = lineByLineRenderer.makeFileDiffHtml(file, diffs);
|
||||
|
||||
const expected =
|
||||
'<div id="d2h-781444" class="d2h-file-wrapper" data-lang="js">\n' +
|
||||
' <div class="d2h-file-header">\n' +
|
||||
' <span class="d2h-file-name-wrapper">\n' +
|
||||
' <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">\n' +
|
||||
' <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>\n' +
|
||||
' </svg> <span class="d2h-file-name">my/file/name.js</span>\n' +
|
||||
' <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span>\n' +
|
||||
" </div>\n" +
|
||||
' <div class="d2h-file-diff">\n' +
|
||||
' <div class="d2h-code-wrapper">\n' +
|
||||
' <table class="d2h-diff-table">\n' +
|
||||
' <tbody class="d2h-diff-tbody">\n' +
|
||||
" <span>Random Html</span>\n" +
|
||||
" </tbody>\n" +
|
||||
" </table>\n" +
|
||||
" </div>\n" +
|
||||
" </div>\n" +
|
||||
"</div>";
|
||||
|
||||
expect(fileHtml).toEqual(expected);
|
||||
expect(fileHtml).toMatchInlineSnapshot(`
|
||||
"<div id=\\"d2h-781444\\" class=\\"d2h-file-wrapper\\" data-lang=\\"js\\">
|
||||
<div class=\\"d2h-file-header\\">
|
||||
<span class=\\"d2h-file-name-wrapper\\">
|
||||
<svg aria-hidden=\\"true\\" class=\\"d2h-icon\\" height=\\"16\\" version=\\"1.1\\" viewBox=\\"0 0 12 16\\" width=\\"12\\">
|
||||
<path d=\\"M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z\\"></path>
|
||||
</svg> <span class=\\"d2h-file-name\\">my/file/name.js</span>
|
||||
<span class=\\"d2h-tag d2h-changed d2h-changed-tag\\">CHANGED</span></span>
|
||||
</div>
|
||||
<div class=\\"d2h-file-diff\\">
|
||||
<div class=\\"d2h-code-wrapper\\">
|
||||
<table class=\\"d2h-diff-table\\">
|
||||
<tbody class=\\"d2h-diff-tbody\\">
|
||||
<span>Random Html</span>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>"
|
||||
`);
|
||||
});
|
||||
it("should work for simple added file", () => {
|
||||
const hoganUtils = new HoganJsUtils({});
|
||||
|
|
@ -225,27 +212,26 @@ describe("LineByLineRenderer", () => {
|
|||
|
||||
const fileHtml = lineByLineRenderer.makeFileDiffHtml(file, diffs);
|
||||
|
||||
const expected =
|
||||
'<div id="d2h-781444" class="d2h-file-wrapper" data-lang="js">\n' +
|
||||
' <div class="d2h-file-header">\n' +
|
||||
' <span class="d2h-file-name-wrapper">\n' +
|
||||
' <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">\n' +
|
||||
' <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>\n' +
|
||||
' </svg> <span class="d2h-file-name">my/file/name.js</span>\n' +
|
||||
' <span class="d2h-tag d2h-added d2h-added-tag">ADDED</span></span>\n' +
|
||||
" </div>\n" +
|
||||
' <div class="d2h-file-diff">\n' +
|
||||
' <div class="d2h-code-wrapper">\n' +
|
||||
' <table class="d2h-diff-table">\n' +
|
||||
' <tbody class="d2h-diff-tbody">\n' +
|
||||
" <span>Random Html</span>\n" +
|
||||
" </tbody>\n" +
|
||||
" </table>\n" +
|
||||
" </div>\n" +
|
||||
" </div>\n" +
|
||||
"</div>";
|
||||
|
||||
expect(fileHtml).toEqual(expected);
|
||||
expect(fileHtml).toMatchInlineSnapshot(`
|
||||
"<div id=\\"d2h-781444\\" class=\\"d2h-file-wrapper\\" data-lang=\\"js\\">
|
||||
<div class=\\"d2h-file-header\\">
|
||||
<span class=\\"d2h-file-name-wrapper\\">
|
||||
<svg aria-hidden=\\"true\\" class=\\"d2h-icon\\" height=\\"16\\" version=\\"1.1\\" viewBox=\\"0 0 12 16\\" width=\\"12\\">
|
||||
<path d=\\"M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z\\"></path>
|
||||
</svg> <span class=\\"d2h-file-name\\">my/file/name.js</span>
|
||||
<span class=\\"d2h-tag d2h-added d2h-added-tag\\">ADDED</span></span>
|
||||
</div>
|
||||
<div class=\\"d2h-file-diff\\">
|
||||
<div class=\\"d2h-code-wrapper\\">
|
||||
<table class=\\"d2h-diff-table\\">
|
||||
<tbody class=\\"d2h-diff-tbody\\">
|
||||
<span>Random Html</span>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>"
|
||||
`);
|
||||
});
|
||||
it("should work for simple deleted file", () => {
|
||||
const hoganUtils = new HoganJsUtils({});
|
||||
|
|
@ -266,27 +252,26 @@ describe("LineByLineRenderer", () => {
|
|||
|
||||
const fileHtml = lineByLineRenderer.makeFileDiffHtml(file, diffs);
|
||||
|
||||
const expected =
|
||||
'<div id="d2h-781444" class="d2h-file-wrapper" data-lang="js">\n' +
|
||||
' <div class="d2h-file-header">\n' +
|
||||
' <span class="d2h-file-name-wrapper">\n' +
|
||||
' <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">\n' +
|
||||
' <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>\n' +
|
||||
' </svg> <span class="d2h-file-name">my/file/name.js</span>\n' +
|
||||
' <span class="d2h-tag d2h-deleted d2h-deleted-tag">DELETED</span></span>\n' +
|
||||
" </div>\n" +
|
||||
' <div class="d2h-file-diff">\n' +
|
||||
' <div class="d2h-code-wrapper">\n' +
|
||||
' <table class="d2h-diff-table">\n' +
|
||||
' <tbody class="d2h-diff-tbody">\n' +
|
||||
" <span>Random Html</span>\n" +
|
||||
" </tbody>\n" +
|
||||
" </table>\n" +
|
||||
" </div>\n" +
|
||||
" </div>\n" +
|
||||
"</div>";
|
||||
|
||||
expect(fileHtml).toEqual(expected);
|
||||
expect(fileHtml).toMatchInlineSnapshot(`
|
||||
"<div id=\\"d2h-781444\\" class=\\"d2h-file-wrapper\\" data-lang=\\"js\\">
|
||||
<div class=\\"d2h-file-header\\">
|
||||
<span class=\\"d2h-file-name-wrapper\\">
|
||||
<svg aria-hidden=\\"true\\" class=\\"d2h-icon\\" height=\\"16\\" version=\\"1.1\\" viewBox=\\"0 0 12 16\\" width=\\"12\\">
|
||||
<path d=\\"M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z\\"></path>
|
||||
</svg> <span class=\\"d2h-file-name\\">my/file/name.js</span>
|
||||
<span class=\\"d2h-tag d2h-deleted d2h-deleted-tag\\">DELETED</span></span>
|
||||
</div>
|
||||
<div class=\\"d2h-file-diff\\">
|
||||
<div class=\\"d2h-code-wrapper\\">
|
||||
<table class=\\"d2h-diff-table\\">
|
||||
<tbody class=\\"d2h-diff-tbody\\">
|
||||
<span>Random Html</span>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>"
|
||||
`);
|
||||
});
|
||||
it("should work for simple renamed file", () => {
|
||||
const hoganUtils = new HoganJsUtils({});
|
||||
|
|
@ -307,27 +292,26 @@ describe("LineByLineRenderer", () => {
|
|||
|
||||
const fileHtml = lineByLineRenderer.makeFileDiffHtml(file, diffs);
|
||||
|
||||
const expected =
|
||||
'<div id="d2h-662683" class="d2h-file-wrapper" data-lang="js">\n' +
|
||||
' <div class="d2h-file-header">\n' +
|
||||
' <span class="d2h-file-name-wrapper">\n' +
|
||||
' <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">\n' +
|
||||
' <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>\n' +
|
||||
' </svg> <span class="d2h-file-name">my/file/{name1.js → name2.js}</span>\n' +
|
||||
' <span class="d2h-tag d2h-moved d2h-moved-tag">RENAMED</span></span>\n' +
|
||||
" </div>\n" +
|
||||
' <div class="d2h-file-diff">\n' +
|
||||
' <div class="d2h-code-wrapper">\n' +
|
||||
' <table class="d2h-diff-table">\n' +
|
||||
' <tbody class="d2h-diff-tbody">\n' +
|
||||
" <span>Random Html</span>\n" +
|
||||
" </tbody>\n" +
|
||||
" </table>\n" +
|
||||
" </div>\n" +
|
||||
" </div>\n" +
|
||||
"</div>";
|
||||
|
||||
expect(fileHtml).toEqual(expected);
|
||||
expect(fileHtml).toMatchInlineSnapshot(`
|
||||
"<div id=\\"d2h-662683\\" class=\\"d2h-file-wrapper\\" data-lang=\\"js\\">
|
||||
<div class=\\"d2h-file-header\\">
|
||||
<span class=\\"d2h-file-name-wrapper\\">
|
||||
<svg aria-hidden=\\"true\\" class=\\"d2h-icon\\" height=\\"16\\" version=\\"1.1\\" viewBox=\\"0 0 12 16\\" width=\\"12\\">
|
||||
<path d=\\"M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z\\"></path>
|
||||
</svg> <span class=\\"d2h-file-name\\">my/file/{name1.js → name2.js}</span>
|
||||
<span class=\\"d2h-tag d2h-moved d2h-moved-tag\\">RENAMED</span></span>
|
||||
</div>
|
||||
<div class=\\"d2h-file-diff\\">
|
||||
<div class=\\"d2h-code-wrapper\\">
|
||||
<table class=\\"d2h-diff-table\\">
|
||||
<tbody class=\\"d2h-diff-tbody\\">
|
||||
<span>Random Html</span>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>"
|
||||
`);
|
||||
});
|
||||
it("should return empty when option renderNothingWhenEmpty is true and file blocks not present", () => {
|
||||
const hoganUtils = new HoganJsUtils({});
|
||||
|
|
@ -351,9 +335,7 @@ describe("LineByLineRenderer", () => {
|
|||
|
||||
const fileHtml = lineByLineRenderer.makeFileDiffHtml(file, diffs);
|
||||
|
||||
const expected = "";
|
||||
|
||||
expect(fileHtml).toEqual(expected);
|
||||
expect(fileHtml).toMatchInlineSnapshot(`""`);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -400,56 +382,55 @@ describe("LineByLineRenderer", () => {
|
|||
matching: LineMatchingType.LINES
|
||||
});
|
||||
const html = lineByLineRenderer.render(exampleJson);
|
||||
const expected =
|
||||
'<div class="d2h-wrapper">\n' +
|
||||
' <div id="d2h-675094" class="d2h-file-wrapper" data-lang="txt">\n' +
|
||||
' <div class="d2h-file-header">\n' +
|
||||
' <span class="d2h-file-name-wrapper">\n' +
|
||||
' <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">\n' +
|
||||
' <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>\n' +
|
||||
' </svg> <span class="d2h-file-name">sample</span>\n' +
|
||||
' <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span>\n' +
|
||||
" </div>\n" +
|
||||
' <div class="d2h-file-diff">\n' +
|
||||
' <div class="d2h-code-wrapper">\n' +
|
||||
' <table class="d2h-diff-table">\n' +
|
||||
' <tbody class="d2h-diff-tbody">\n' +
|
||||
" <tr>\n" +
|
||||
' <td class="d2h-code-linenumber d2h-info"></td>\n' +
|
||||
' <td class="d2h-info">\n' +
|
||||
' <div class="d2h-code-line d2h-info">@@ -1 +1 @@</div>\n' +
|
||||
" </td>\n" +
|
||||
"</tr><tr>\n" +
|
||||
' <td class="d2h-code-linenumber d2h-del d2h-change">\n' +
|
||||
' <div class="line-num1">1</div>\n' +
|
||||
'<div class="line-num2"></div>\n' +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-del d2h-change">\n' +
|
||||
' <div class="d2h-code-line d2h-del d2h-change">\n' +
|
||||
' <span class="d2h-code-line-prefix">-</span>\n' +
|
||||
' <span class="d2h-code-line-ctn"><del>test</del></span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr><tr>\n" +
|
||||
' <td class="d2h-code-linenumber d2h-ins d2h-change">\n' +
|
||||
' <div class="line-num1"></div>\n' +
|
||||
'<div class="line-num2">1</div>\n' +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-ins d2h-change">\n' +
|
||||
' <div class="d2h-code-line d2h-ins d2h-change">\n' +
|
||||
' <span class="d2h-code-line-prefix">+</span>\n' +
|
||||
' <span class="d2h-code-line-ctn"><ins>test1r</ins></span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>\n" +
|
||||
" </tbody>\n" +
|
||||
" </table>\n" +
|
||||
" </div>\n" +
|
||||
" </div>\n" +
|
||||
"</div>\n" +
|
||||
"</div>";
|
||||
|
||||
expect(html).toEqual(expected);
|
||||
expect(html).toMatchInlineSnapshot(`
|
||||
"<div class=\\"d2h-wrapper\\">
|
||||
<div id=\\"d2h-675094\\" class=\\"d2h-file-wrapper\\" data-lang=\\"txt\\">
|
||||
<div class=\\"d2h-file-header\\">
|
||||
<span class=\\"d2h-file-name-wrapper\\">
|
||||
<svg aria-hidden=\\"true\\" class=\\"d2h-icon\\" height=\\"16\\" version=\\"1.1\\" viewBox=\\"0 0 12 16\\" width=\\"12\\">
|
||||
<path d=\\"M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z\\"></path>
|
||||
</svg> <span class=\\"d2h-file-name\\">sample</span>
|
||||
<span class=\\"d2h-tag d2h-changed d2h-changed-tag\\">CHANGED</span></span>
|
||||
</div>
|
||||
<div class=\\"d2h-file-diff\\">
|
||||
<div class=\\"d2h-code-wrapper\\">
|
||||
<table class=\\"d2h-diff-table\\">
|
||||
<tbody class=\\"d2h-diff-tbody\\">
|
||||
<tr>
|
||||
<td class=\\"d2h-code-linenumber d2h-info\\"></td>
|
||||
<td class=\\"d2h-info\\">
|
||||
<div class=\\"d2h-code-line d2h-info\\">@@ -1 +1 @@</div>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td class=\\"d2h-code-linenumber d2h-del d2h-change\\">
|
||||
<div class=\\"line-num1\\">1</div>
|
||||
<div class=\\"line-num2\\"></div>
|
||||
</td>
|
||||
<td class=\\"d2h-del d2h-change\\">
|
||||
<div class=\\"d2h-code-line d2h-del d2h-change\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">-</span>
|
||||
<span class=\\"d2h-code-line-ctn\\"><del>test</del></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td class=\\"d2h-code-linenumber d2h-ins d2h-change\\">
|
||||
<div class=\\"line-num1\\"></div>
|
||||
<div class=\\"line-num2\\">1</div>
|
||||
</td>
|
||||
<td class=\\"d2h-ins d2h-change\\">
|
||||
<div class=\\"d2h-code-line d2h-ins d2h-change\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">+</span>
|
||||
<span class=\\"d2h-code-line-ctn\\"><ins>test1r</ins></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>"
|
||||
`);
|
||||
});
|
||||
|
||||
it("should work for empty blocks", () => {
|
||||
|
|
@ -471,35 +452,34 @@ describe("LineByLineRenderer", () => {
|
|||
renderNothingWhenEmpty: false
|
||||
});
|
||||
const html = lineByLineRenderer.render(exampleJson);
|
||||
const expected =
|
||||
'<div class="d2h-wrapper">\n' +
|
||||
' <div id="d2h-675094" class="d2h-file-wrapper" data-lang="js">\n' +
|
||||
' <div class="d2h-file-header">\n' +
|
||||
' <span class="d2h-file-name-wrapper">\n' +
|
||||
' <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">\n' +
|
||||
' <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>\n' +
|
||||
' </svg> <span class="d2h-file-name">sample</span>\n' +
|
||||
' <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span>\n' +
|
||||
" </div>\n" +
|
||||
' <div class="d2h-file-diff">\n' +
|
||||
' <div class="d2h-code-wrapper">\n' +
|
||||
' <table class="d2h-diff-table">\n' +
|
||||
' <tbody class="d2h-diff-tbody">\n' +
|
||||
" <tr>\n" +
|
||||
' <td class="d2h-info">\n' +
|
||||
' <div class="d2h-code-line d2h-info">\n' +
|
||||
" File without changes\n" +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>\n" +
|
||||
" </tbody>\n" +
|
||||
" </table>\n" +
|
||||
" </div>\n" +
|
||||
" </div>\n" +
|
||||
"</div>\n" +
|
||||
"</div>";
|
||||
|
||||
expect(html).toEqual(expected);
|
||||
expect(html).toMatchInlineSnapshot(`
|
||||
"<div class=\\"d2h-wrapper\\">
|
||||
<div id=\\"d2h-675094\\" class=\\"d2h-file-wrapper\\" data-lang=\\"js\\">
|
||||
<div class=\\"d2h-file-header\\">
|
||||
<span class=\\"d2h-file-name-wrapper\\">
|
||||
<svg aria-hidden=\\"true\\" class=\\"d2h-icon\\" height=\\"16\\" version=\\"1.1\\" viewBox=\\"0 0 12 16\\" width=\\"12\\">
|
||||
<path d=\\"M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z\\"></path>
|
||||
</svg> <span class=\\"d2h-file-name\\">sample</span>
|
||||
<span class=\\"d2h-tag d2h-changed d2h-changed-tag\\">CHANGED</span></span>
|
||||
</div>
|
||||
<div class=\\"d2h-file-diff\\">
|
||||
<div class=\\"d2h-code-wrapper\\">
|
||||
<table class=\\"d2h-diff-table\\">
|
||||
<tbody class=\\"d2h-diff-tbody\\">
|
||||
<tr>
|
||||
<td class=\\"d2h-info\\">
|
||||
<div class=\\"d2h-code-line d2h-info\\">
|
||||
File without changes
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>"
|
||||
`);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -555,59 +535,58 @@ describe("LineByLineRenderer", () => {
|
|||
|
||||
const html = lineByLineRenderer.generateFileHtml(file);
|
||||
|
||||
const expected =
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-code-linenumber d2h-info"></td>\n' +
|
||||
' <td class="d2h-info">\n' +
|
||||
' <div class="d2h-code-line d2h-info">@@ -1 +1 @@</div>\n' +
|
||||
" </td>\n" +
|
||||
"</tr><tr>\n" +
|
||||
' <td class="d2h-code-linenumber d2h-cntx">\n' +
|
||||
' <div class="line-num1">1</div>\n' +
|
||||
'<div class="line-num2">1</div>\n' +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-cntx">\n' +
|
||||
' <div class="d2h-code-line d2h-cntx">\n' +
|
||||
' <span class="d2h-code-line-prefix"> </span>\n' +
|
||||
' <span class="d2h-code-line-ctn">one context line</span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr><tr>\n" +
|
||||
' <td class="d2h-code-linenumber d2h-del d2h-change">\n' +
|
||||
' <div class="line-num1">2</div>\n' +
|
||||
'<div class="line-num2"></div>\n' +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-del d2h-change">\n' +
|
||||
' <div class="d2h-code-line d2h-del d2h-change">\n' +
|
||||
' <span class="d2h-code-line-prefix">-</span>\n' +
|
||||
' <span class="d2h-code-line-ctn"><del>test</del></span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr><tr>\n" +
|
||||
' <td class="d2h-code-linenumber d2h-ins d2h-change">\n' +
|
||||
' <div class="line-num1"></div>\n' +
|
||||
'<div class="line-num2">2</div>\n' +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-ins d2h-change">\n' +
|
||||
' <div class="d2h-code-line d2h-ins d2h-change">\n' +
|
||||
' <span class="d2h-code-line-prefix">+</span>\n' +
|
||||
' <span class="d2h-code-line-ctn"><ins>test1r</ins></span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr><tr>\n" +
|
||||
' <td class="d2h-code-linenumber d2h-ins">\n' +
|
||||
' <div class="line-num1"></div>\n' +
|
||||
'<div class="line-num2">3</div>\n' +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-ins">\n' +
|
||||
' <div class="d2h-code-line d2h-ins">\n' +
|
||||
' <span class="d2h-code-line-prefix">+</span>\n' +
|
||||
' <span class="d2h-code-line-ctn">test2r</span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>";
|
||||
|
||||
expect(html).toEqual(expected);
|
||||
expect(html).toMatchInlineSnapshot(`
|
||||
"<tr>
|
||||
<td class=\\"d2h-code-linenumber d2h-info\\"></td>
|
||||
<td class=\\"d2h-info\\">
|
||||
<div class=\\"d2h-code-line d2h-info\\">@@ -1 +1 @@</div>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td class=\\"d2h-code-linenumber d2h-cntx\\">
|
||||
<div class=\\"line-num1\\">1</div>
|
||||
<div class=\\"line-num2\\">1</div>
|
||||
</td>
|
||||
<td class=\\"d2h-cntx\\">
|
||||
<div class=\\"d2h-code-line d2h-cntx\\">
|
||||
<span class=\\"d2h-code-line-prefix\\"> </span>
|
||||
<span class=\\"d2h-code-line-ctn\\">one context line</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td class=\\"d2h-code-linenumber d2h-del d2h-change\\">
|
||||
<div class=\\"line-num1\\">2</div>
|
||||
<div class=\\"line-num2\\"></div>
|
||||
</td>
|
||||
<td class=\\"d2h-del d2h-change\\">
|
||||
<div class=\\"d2h-code-line d2h-del d2h-change\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">-</span>
|
||||
<span class=\\"d2h-code-line-ctn\\"><del>test</del></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td class=\\"d2h-code-linenumber d2h-ins d2h-change\\">
|
||||
<div class=\\"line-num1\\"></div>
|
||||
<div class=\\"line-num2\\">2</div>
|
||||
</td>
|
||||
<td class=\\"d2h-ins d2h-change\\">
|
||||
<div class=\\"d2h-code-line d2h-ins d2h-change\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">+</span>
|
||||
<span class=\\"d2h-code-line-ctn\\"><ins>test1r</ins></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td class=\\"d2h-code-linenumber d2h-ins\\">
|
||||
<div class=\\"line-num1\\"></div>
|
||||
<div class=\\"line-num2\\">3</div>
|
||||
</td>
|
||||
<td class=\\"d2h-ins\\">
|
||||
<div class=\\"d2h-code-line d2h-ins\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">+</span>
|
||||
<span class=\\"d2h-code-line-ctn\\">test2r</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>"
|
||||
`);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -41,14 +41,14 @@ describe("Utils", () => {
|
|||
oldName: "sample.js",
|
||||
newName: "sample.js"
|
||||
});
|
||||
expect("d2h-960013").toEqual(result);
|
||||
expect(result).toEqual("d2h-960013");
|
||||
});
|
||||
it("should generate file unique id for empty hashes", () => {
|
||||
const result = getHtmlId({
|
||||
oldName: "sample.js",
|
||||
newName: "sample.js"
|
||||
});
|
||||
expect("d2h-960013").toEqual(result);
|
||||
expect(result).toEqual("d2h-960013");
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -58,49 +58,49 @@ describe("Utils", () => {
|
|||
oldName: "sample.js",
|
||||
newName: "sample.js"
|
||||
});
|
||||
expect("sample.js").toEqual(result);
|
||||
expect(result).toEqual("sample.js");
|
||||
});
|
||||
it("should generate the file name for a changed file and full rename", () => {
|
||||
const result = filenameDiff({
|
||||
oldName: "sample1.js",
|
||||
newName: "sample2.js"
|
||||
});
|
||||
expect("sample1.js → sample2.js").toEqual(result);
|
||||
expect(result).toEqual("sample1.js → sample2.js");
|
||||
});
|
||||
it("should generate the file name for a changed file and prefix rename", () => {
|
||||
const result = filenameDiff({
|
||||
oldName: "src/path/sample.js",
|
||||
newName: "source/path/sample.js"
|
||||
});
|
||||
expect("{src → source}/path/sample.js").toEqual(result);
|
||||
expect(result).toEqual("{src → source}/path/sample.js");
|
||||
});
|
||||
it("should generate the file name for a changed file and suffix rename", () => {
|
||||
const result = filenameDiff({
|
||||
oldName: "src/path/sample1.js",
|
||||
newName: "src/path/sample2.js"
|
||||
});
|
||||
expect("src/path/{sample1.js → sample2.js}").toEqual(result);
|
||||
expect(result).toEqual("src/path/{sample1.js → sample2.js}");
|
||||
});
|
||||
it("should generate the file name for a changed file and middle rename", () => {
|
||||
const result = filenameDiff({
|
||||
oldName: "src/really/big/path/sample.js",
|
||||
newName: "src/small/path/sample.js"
|
||||
});
|
||||
expect("src/{really/big → small}/path/sample.js").toEqual(result);
|
||||
expect(result).toEqual("src/{really/big → small}/path/sample.js");
|
||||
});
|
||||
it("should generate the file name for a deleted file", () => {
|
||||
const result = filenameDiff({
|
||||
oldName: "src/my/file.js",
|
||||
newName: "/dev/null"
|
||||
});
|
||||
expect("src/my/file.js").toEqual(result);
|
||||
expect(result).toEqual("src/my/file.js");
|
||||
});
|
||||
it("should generate the file name for a new file", () => {
|
||||
const result = filenameDiff({
|
||||
oldName: "/dev/null",
|
||||
newName: "src/my/file.js"
|
||||
});
|
||||
expect("src/my/file.js").toEqual(result);
|
||||
expect(result).toEqual("src/my/file.js");
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -126,7 +126,7 @@ describe("Utils", () => {
|
|||
diffStyle: DiffStyleType.CHAR
|
||||
});
|
||||
|
||||
expect({
|
||||
expect(result).toEqual({
|
||||
oldLine: {
|
||||
prefix: "-",
|
||||
content: "var myVar = <del>2</del>;"
|
||||
|
|
@ -135,7 +135,7 @@ describe("Utils", () => {
|
|||
prefix: "+",
|
||||
content: "var myVar<ins>iable</ins> = <ins>3</ins>;"
|
||||
}
|
||||
}).toEqual(result);
|
||||
});
|
||||
});
|
||||
it("should highlight combined diff lines", () => {
|
||||
const result = diffHighlight(" -var myVar = 2;", " +var myVariable = 3;", true, {
|
||||
|
|
@ -144,7 +144,7 @@ describe("Utils", () => {
|
|||
matchWordsThreshold: 1.0
|
||||
});
|
||||
|
||||
expect({
|
||||
expect(result).toEqual({
|
||||
oldLine: {
|
||||
prefix: " -",
|
||||
content: 'var <del class="d2h-change">myVar</del> = <del class="d2h-change">2</del>;'
|
||||
|
|
@ -153,7 +153,7 @@ describe("Utils", () => {
|
|||
prefix: " +",
|
||||
content: 'var <ins class="d2h-change">myVariable</ins> = <ins class="d2h-change">3</ins>;'
|
||||
}
|
||||
}).toEqual(result);
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
|
|
@ -9,18 +9,18 @@ describe("SideBySideRenderer", () => {
|
|||
const hoganUtils = new HoganJsUtils({});
|
||||
const sideBySideRenderer = new SideBySideRenderer(hoganUtils, {});
|
||||
const fileHtml = sideBySideRenderer.generateEmptyDiff();
|
||||
const expectedRight = "";
|
||||
const expectedLeft =
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-info">\n' +
|
||||
' <div class="d2h-code-side-line d2h-info">\n' +
|
||||
" File without changes\n" +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>";
|
||||
|
||||
expect(fileHtml.right).toEqual(expectedRight);
|
||||
expect(fileHtml.left).toEqual(expectedLeft);
|
||||
expect(fileHtml).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"left": "<tr>
|
||||
<td class=\\"d2h-info\\">
|
||||
<div class=\\"d2h-code-side-line d2h-info\\">
|
||||
File without changes
|
||||
</div>
|
||||
</td>
|
||||
</tr>",
|
||||
"right": "",
|
||||
}
|
||||
`);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -77,85 +77,82 @@ describe("SideBySideRenderer", () => {
|
|||
|
||||
const fileHtml = sideBySideRenderer.generateFileHtml(file);
|
||||
|
||||
const expectedLeft =
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-info"></td>\n' +
|
||||
' <td class="d2h-info">\n' +
|
||||
' <div class="d2h-code-side-line d2h-info">@@ -19,7 +19,7 @@</div>\n' +
|
||||
" </td>\n" +
|
||||
"</tr><tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-cntx">\n' +
|
||||
" 19\n" +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-cntx">\n' +
|
||||
' <div class="d2h-code-side-line d2h-cntx">\n' +
|
||||
' <span class="d2h-code-line-prefix"> </span>\n' +
|
||||
' <span class="d2h-code-line-ctn">context</span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr><tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-del d2h-change">\n' +
|
||||
" 20\n" +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-del d2h-change">\n' +
|
||||
' <div class="d2h-code-side-line d2h-del d2h-change">\n' +
|
||||
' <span class="d2h-code-line-prefix">-</span>\n' +
|
||||
' <span class="d2h-code-line-ctn"><del>removed</del></span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr><tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder">\n' +
|
||||
" " +
|
||||
"\n" +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-cntx d2h-emptyplaceholder">\n' +
|
||||
' <div class="d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder">\n' +
|
||||
' <span class="d2h-code-line-prefix"> </span>\n' +
|
||||
' <span class="d2h-code-line-ctn"> </span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>";
|
||||
expect(fileHtml).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"left": "<tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-info\\"></td>
|
||||
<td class=\\"d2h-info\\">
|
||||
<div class=\\"d2h-code-side-line d2h-info\\">@@ -19,7 +19,7 @@</div>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-cntx\\">
|
||||
19
|
||||
</td>
|
||||
<td class=\\"d2h-cntx\\">
|
||||
<div class=\\"d2h-code-side-line d2h-cntx\\">
|
||||
<span class=\\"d2h-code-line-prefix\\"> </span>
|
||||
<span class=\\"d2h-code-line-ctn\\">context</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-del d2h-change\\">
|
||||
20
|
||||
</td>
|
||||
<td class=\\"d2h-del d2h-change\\">
|
||||
<div class=\\"d2h-code-side-line d2h-del d2h-change\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">-</span>
|
||||
<span class=\\"d2h-code-line-ctn\\"><del>removed</del></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
|
||||
|
||||
const expectedRight =
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-info"></td>\n' +
|
||||
' <td class="d2h-info">\n' +
|
||||
' <div class="d2h-code-side-line d2h-info"></div>\n' +
|
||||
" </td>\n" +
|
||||
"</tr><tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-cntx">\n' +
|
||||
" 19\n" +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-cntx">\n' +
|
||||
' <div class="d2h-code-side-line d2h-cntx">\n' +
|
||||
' <span class="d2h-code-line-prefix"> </span>\n' +
|
||||
' <span class="d2h-code-line-ctn">context</span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr><tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-ins d2h-change">\n' +
|
||||
" 20\n" +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-ins d2h-change">\n' +
|
||||
' <div class="d2h-code-side-line d2h-ins d2h-change">\n' +
|
||||
' <span class="d2h-code-line-prefix">+</span>\n' +
|
||||
' <span class="d2h-code-line-ctn"><ins>added</ins></span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr><tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-ins">\n' +
|
||||
" 21\n" +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-ins">\n' +
|
||||
' <div class="d2h-code-side-line d2h-ins">\n' +
|
||||
' <span class="d2h-code-line-prefix">+</span>\n' +
|
||||
' <span class="d2h-code-line-ctn">another added</span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>";
|
||||
|
||||
expect(fileHtml.left).toEqual(expectedLeft);
|
||||
expect(fileHtml.right).toEqual(expectedRight);
|
||||
</td>
|
||||
<td class=\\"d2h-cntx d2h-emptyplaceholder\\">
|
||||
<div class=\\"d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
|
||||
<span class=\\"d2h-code-line-prefix\\"> </span>
|
||||
<span class=\\"d2h-code-line-ctn\\"> </span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>",
|
||||
"right": "<tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-info\\"></td>
|
||||
<td class=\\"d2h-info\\">
|
||||
<div class=\\"d2h-code-side-line d2h-info\\"></div>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-cntx\\">
|
||||
19
|
||||
</td>
|
||||
<td class=\\"d2h-cntx\\">
|
||||
<div class=\\"d2h-code-side-line d2h-cntx\\">
|
||||
<span class=\\"d2h-code-line-prefix\\"> </span>
|
||||
<span class=\\"d2h-code-line-ctn\\">context</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-ins d2h-change\\">
|
||||
20
|
||||
</td>
|
||||
<td class=\\"d2h-ins d2h-change\\">
|
||||
<div class=\\"d2h-code-side-line d2h-ins d2h-change\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">+</span>
|
||||
<span class=\\"d2h-code-line-ctn\\"><ins>added</ins></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-ins\\">
|
||||
21
|
||||
</td>
|
||||
<td class=\\"d2h-ins\\">
|
||||
<div class=\\"d2h-code-side-line d2h-ins\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">+</span>
|
||||
<span class=\\"d2h-code-line-ctn\\">another added</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>",
|
||||
}
|
||||
`);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -170,34 +167,32 @@ describe("SideBySideRenderer", () => {
|
|||
number: 30
|
||||
});
|
||||
|
||||
const expected = {
|
||||
left:
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder">\n' +
|
||||
" \n" +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-cntx d2h-emptyplaceholder">\n' +
|
||||
' <div class="d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder">\n' +
|
||||
' <span class="d2h-code-line-prefix"> </span>\n' +
|
||||
' <span class="d2h-code-line-ctn"> </span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>",
|
||||
right:
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-ins">\n' +
|
||||
" 30\n" +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-ins">\n' +
|
||||
' <div class="d2h-code-side-line d2h-ins">\n' +
|
||||
' <span class="d2h-code-line-prefix">+</span>\n' +
|
||||
' <span class="d2h-code-line-ctn">test</span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>"
|
||||
};
|
||||
expect(fileHtml).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"left": "<tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
|
||||
|
||||
expect(fileHtml).toEqual(expected);
|
||||
</td>
|
||||
<td class=\\"d2h-cntx d2h-emptyplaceholder\\">
|
||||
<div class=\\"d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
|
||||
<span class=\\"d2h-code-line-prefix\\"> </span>
|
||||
<span class=\\"d2h-code-line-ctn\\"> </span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>",
|
||||
"right": "<tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-ins\\">
|
||||
30
|
||||
</td>
|
||||
<td class=\\"d2h-ins\\">
|
||||
<div class=\\"d2h-code-side-line d2h-ins\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">+</span>
|
||||
<span class=\\"d2h-code-line-ctn\\">test</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>",
|
||||
}
|
||||
`);
|
||||
});
|
||||
it("should work for deletions", () => {
|
||||
const hoganUtils = new HoganJsUtils({});
|
||||
|
|
@ -211,34 +206,33 @@ describe("SideBySideRenderer", () => {
|
|||
},
|
||||
undefined
|
||||
);
|
||||
const expected = {
|
||||
left:
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-del">\n' +
|
||||
" 30\n" +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-del">\n' +
|
||||
' <div class="d2h-code-side-line d2h-del">\n' +
|
||||
' <span class="d2h-code-line-prefix">-</span>\n' +
|
||||
' <span class="d2h-code-line-ctn">test</span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>",
|
||||
right:
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder">\n' +
|
||||
" \n" +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-cntx d2h-emptyplaceholder">\n' +
|
||||
' <div class="d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder">\n' +
|
||||
' <span class="d2h-code-line-prefix"> </span>\n' +
|
||||
' <span class="d2h-code-line-ctn"> </span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>"
|
||||
};
|
||||
|
||||
expect(fileHtml).toEqual(expected);
|
||||
expect(fileHtml).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"left": "<tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-del\\">
|
||||
30
|
||||
</td>
|
||||
<td class=\\"d2h-del\\">
|
||||
<div class=\\"d2h-code-side-line d2h-del\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">-</span>
|
||||
<span class=\\"d2h-code-line-ctn\\">test</span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>",
|
||||
"right": "<tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
|
||||
|
||||
</td>
|
||||
<td class=\\"d2h-cntx d2h-emptyplaceholder\\">
|
||||
<div class=\\"d2h-code-side-line d2h-code-side-emptyplaceholder d2h-cntx d2h-emptyplaceholder\\">
|
||||
<span class=\\"d2h-code-line-prefix\\"> </span>
|
||||
<span class=\\"d2h-code-line-ctn\\"> </span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>",
|
||||
}
|
||||
`);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -283,70 +277,69 @@ describe("SideBySideRenderer", () => {
|
|||
const hoganUtils = new HoganJsUtils({});
|
||||
const sideBySideRenderer = new SideBySideRenderer(hoganUtils, { matching: LineMatchingType.LINES });
|
||||
const html = sideBySideRenderer.render(exampleJson);
|
||||
const expected =
|
||||
'<div class="d2h-wrapper">\n' +
|
||||
' <div id="d2h-675094" class="d2h-file-wrapper" data-lang="txt">\n' +
|
||||
' <div class="d2h-file-header">\n' +
|
||||
' <span class="d2h-file-name-wrapper">\n' +
|
||||
' <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">\n' +
|
||||
' <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>\n' +
|
||||
' </svg> <span class="d2h-file-name">sample</span>\n' +
|
||||
' <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span>\n' +
|
||||
" </div>\n" +
|
||||
' <div class="d2h-files-diff">\n' +
|
||||
' <div class="d2h-file-side-diff">\n' +
|
||||
' <div class="d2h-code-wrapper">\n' +
|
||||
' <table class="d2h-diff-table">\n' +
|
||||
' <tbody class="d2h-diff-tbody">\n' +
|
||||
" <tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-info"></td>\n' +
|
||||
' <td class="d2h-info">\n' +
|
||||
' <div class="d2h-code-side-line d2h-info">@@ -1 +1 @@</div>\n' +
|
||||
" </td>\n" +
|
||||
"</tr><tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-del d2h-change">\n' +
|
||||
" 1\n" +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-del d2h-change">\n' +
|
||||
' <div class="d2h-code-side-line d2h-del d2h-change">\n' +
|
||||
' <span class="d2h-code-line-prefix">-</span>\n' +
|
||||
' <span class="d2h-code-line-ctn"><del>test</del></span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>\n" +
|
||||
" </tbody>\n" +
|
||||
" </table>\n" +
|
||||
" </div>\n" +
|
||||
" </div>\n" +
|
||||
' <div class="d2h-file-side-diff">\n' +
|
||||
' <div class="d2h-code-wrapper">\n' +
|
||||
' <table class="d2h-diff-table">\n' +
|
||||
' <tbody class="d2h-diff-tbody">\n' +
|
||||
" <tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-info"></td>\n' +
|
||||
' <td class="d2h-info">\n' +
|
||||
' <div class="d2h-code-side-line d2h-info"></div>\n' +
|
||||
" </td>\n" +
|
||||
"</tr><tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-ins d2h-change">\n' +
|
||||
" 1\n" +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-ins d2h-change">\n' +
|
||||
' <div class="d2h-code-side-line d2h-ins d2h-change">\n' +
|
||||
' <span class="d2h-code-line-prefix">+</span>\n' +
|
||||
' <span class="d2h-code-line-ctn"><ins>test1r</ins></span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>\n" +
|
||||
" </tbody>\n" +
|
||||
" </table>\n" +
|
||||
" </div>\n" +
|
||||
" </div>\n" +
|
||||
" </div>\n" +
|
||||
"</div>\n" +
|
||||
"</div>";
|
||||
|
||||
expect(html).toEqual(expected);
|
||||
expect(html).toMatchInlineSnapshot(`
|
||||
"<div class=\\"d2h-wrapper\\">
|
||||
<div id=\\"d2h-675094\\" class=\\"d2h-file-wrapper\\" data-lang=\\"txt\\">
|
||||
<div class=\\"d2h-file-header\\">
|
||||
<span class=\\"d2h-file-name-wrapper\\">
|
||||
<svg aria-hidden=\\"true\\" class=\\"d2h-icon\\" height=\\"16\\" version=\\"1.1\\" viewBox=\\"0 0 12 16\\" width=\\"12\\">
|
||||
<path d=\\"M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z\\"></path>
|
||||
</svg> <span class=\\"d2h-file-name\\">sample</span>
|
||||
<span class=\\"d2h-tag d2h-changed d2h-changed-tag\\">CHANGED</span></span>
|
||||
</div>
|
||||
<div class=\\"d2h-files-diff\\">
|
||||
<div class=\\"d2h-file-side-diff\\">
|
||||
<div class=\\"d2h-code-wrapper\\">
|
||||
<table class=\\"d2h-diff-table\\">
|
||||
<tbody class=\\"d2h-diff-tbody\\">
|
||||
<tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-info\\"></td>
|
||||
<td class=\\"d2h-info\\">
|
||||
<div class=\\"d2h-code-side-line d2h-info\\">@@ -1 +1 @@</div>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-del d2h-change\\">
|
||||
1
|
||||
</td>
|
||||
<td class=\\"d2h-del d2h-change\\">
|
||||
<div class=\\"d2h-code-side-line d2h-del d2h-change\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">-</span>
|
||||
<span class=\\"d2h-code-line-ctn\\"><del>test</del></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class=\\"d2h-file-side-diff\\">
|
||||
<div class=\\"d2h-code-wrapper\\">
|
||||
<table class=\\"d2h-diff-table\\">
|
||||
<tbody class=\\"d2h-diff-tbody\\">
|
||||
<tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-info\\"></td>
|
||||
<td class=\\"d2h-info\\">
|
||||
<div class=\\"d2h-code-side-line d2h-info\\"></div>
|
||||
</td>
|
||||
</tr><tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-ins d2h-change\\">
|
||||
1
|
||||
</td>
|
||||
<td class=\\"d2h-ins d2h-change\\">
|
||||
<div class=\\"d2h-code-side-line d2h-ins d2h-change\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">+</span>
|
||||
<span class=\\"d2h-code-line-ctn\\"><ins>test1r</ins></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>"
|
||||
`);
|
||||
});
|
||||
it("should work for files without blocks", () => {
|
||||
const exampleJson: DiffFile[] = [
|
||||
|
|
@ -365,46 +358,45 @@ describe("SideBySideRenderer", () => {
|
|||
const hoganUtils = new HoganJsUtils({});
|
||||
const sideBySideRenderer = new SideBySideRenderer(hoganUtils, {});
|
||||
const html = sideBySideRenderer.render(exampleJson);
|
||||
const expected =
|
||||
'<div class="d2h-wrapper">\n' +
|
||||
' <div id="d2h-675094" class="d2h-file-wrapper" data-lang="js">\n' +
|
||||
' <div class="d2h-file-header">\n' +
|
||||
' <span class="d2h-file-name-wrapper">\n' +
|
||||
' <svg aria-hidden="true" class="d2h-icon" height="16" version="1.1" viewBox="0 0 12 16" width="12">\n' +
|
||||
' <path d="M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z"></path>\n' +
|
||||
' </svg> <span class="d2h-file-name">sample</span>\n' +
|
||||
' <span class="d2h-tag d2h-changed d2h-changed-tag">CHANGED</span></span>\n' +
|
||||
" </div>\n" +
|
||||
' <div class="d2h-files-diff">\n' +
|
||||
' <div class="d2h-file-side-diff">\n' +
|
||||
' <div class="d2h-code-wrapper">\n' +
|
||||
' <table class="d2h-diff-table">\n' +
|
||||
' <tbody class="d2h-diff-tbody">\n' +
|
||||
" <tr>\n" +
|
||||
' <td class="d2h-info">\n' +
|
||||
' <div class="d2h-code-side-line d2h-info">\n' +
|
||||
" File without changes\n" +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>\n" +
|
||||
" </tbody>\n" +
|
||||
" </table>\n" +
|
||||
" </div>\n" +
|
||||
" </div>\n" +
|
||||
' <div class="d2h-file-side-diff">\n' +
|
||||
' <div class="d2h-code-wrapper">\n' +
|
||||
' <table class="d2h-diff-table">\n' +
|
||||
' <tbody class="d2h-diff-tbody">\n' +
|
||||
" \n" +
|
||||
" </tbody>\n" +
|
||||
" </table>\n" +
|
||||
" </div>\n" +
|
||||
" </div>\n" +
|
||||
" </div>\n" +
|
||||
"</div>\n" +
|
||||
"</div>";
|
||||
expect(html).toMatchInlineSnapshot(`
|
||||
"<div class=\\"d2h-wrapper\\">
|
||||
<div id=\\"d2h-675094\\" class=\\"d2h-file-wrapper\\" data-lang=\\"js\\">
|
||||
<div class=\\"d2h-file-header\\">
|
||||
<span class=\\"d2h-file-name-wrapper\\">
|
||||
<svg aria-hidden=\\"true\\" class=\\"d2h-icon\\" height=\\"16\\" version=\\"1.1\\" viewBox=\\"0 0 12 16\\" width=\\"12\\">
|
||||
<path d=\\"M6 5H2v-1h4v1zM2 8h7v-1H2v1z m0 2h7v-1H2v1z m0 2h7v-1H2v1z m10-7.5v9.5c0 0.55-0.45 1-1 1H1c-0.55 0-1-0.45-1-1V2c0-0.55 0.45-1 1-1h7.5l3.5 3.5z m-1 0.5L8 2H1v12h10V5z\\"></path>
|
||||
</svg> <span class=\\"d2h-file-name\\">sample</span>
|
||||
<span class=\\"d2h-tag d2h-changed d2h-changed-tag\\">CHANGED</span></span>
|
||||
</div>
|
||||
<div class=\\"d2h-files-diff\\">
|
||||
<div class=\\"d2h-file-side-diff\\">
|
||||
<div class=\\"d2h-code-wrapper\\">
|
||||
<table class=\\"d2h-diff-table\\">
|
||||
<tbody class=\\"d2h-diff-tbody\\">
|
||||
<tr>
|
||||
<td class=\\"d2h-info\\">
|
||||
<div class=\\"d2h-code-side-line d2h-info\\">
|
||||
File without changes
|
||||
</div>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
<div class=\\"d2h-file-side-diff\\">
|
||||
<div class=\\"d2h-code-wrapper\\">
|
||||
<table class=\\"d2h-diff-table\\">
|
||||
<tbody class=\\"d2h-diff-tbody\\">
|
||||
|
||||
expect(html).toEqual(expected);
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>"
|
||||
`);
|
||||
});
|
||||
});
|
||||
|
||||
|
|
@ -431,34 +423,33 @@ describe("SideBySideRenderer", () => {
|
|||
const hoganUtils = new HoganJsUtils({});
|
||||
const sideBySideRenderer = new SideBySideRenderer(hoganUtils, { matching: LineMatchingType.LINES });
|
||||
const html = sideBySideRenderer.processChangedLines(false, oldLines, newLines);
|
||||
const expected = {
|
||||
left:
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-del d2h-change">\n' +
|
||||
" 1\n" +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-del d2h-change">\n' +
|
||||
' <div class="d2h-code-side-line d2h-del d2h-change">\n' +
|
||||
' <span class="d2h-code-line-prefix">-</span>\n' +
|
||||
' <span class="d2h-code-line-ctn"><del>test</del></span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>",
|
||||
right:
|
||||
"<tr>\n" +
|
||||
' <td class="d2h-code-side-linenumber d2h-ins d2h-change">\n' +
|
||||
" 1\n" +
|
||||
" </td>\n" +
|
||||
' <td class="d2h-ins d2h-change">\n' +
|
||||
' <div class="d2h-code-side-line d2h-ins d2h-change">\n' +
|
||||
' <span class="d2h-code-line-prefix">+</span>\n' +
|
||||
' <span class="d2h-code-line-ctn"><ins>test1r</ins></span>\n' +
|
||||
" </div>\n" +
|
||||
" </td>\n" +
|
||||
"</tr>"
|
||||
};
|
||||
|
||||
expect(html).toEqual(expected);
|
||||
expect(html).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"left": "<tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-del d2h-change\\">
|
||||
1
|
||||
</td>
|
||||
<td class=\\"d2h-del d2h-change\\">
|
||||
<div class=\\"d2h-code-side-line d2h-del d2h-change\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">-</span>
|
||||
<span class=\\"d2h-code-line-ctn\\"><del>test</del></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>",
|
||||
"right": "<tr>
|
||||
<td class=\\"d2h-code-side-linenumber d2h-ins d2h-change\\">
|
||||
1
|
||||
</td>
|
||||
<td class=\\"d2h-ins d2h-change\\">
|
||||
<div class=\\"d2h-code-side-line d2h-ins d2h-change\\">
|
||||
<span class=\\"d2h-code-line-prefix\\">+</span>
|
||||
<span class=\\"d2h-code-line-ctn\\"><ins>test1r</ins></span>
|
||||
</div>
|
||||
</td>
|
||||
</tr>",
|
||||
}
|
||||
`);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue