import { escapeForHtml, getHtmlId, filenameDiff, diffHighlight } from "../render-utils"; import { DiffStyleType, LineMatchingType } from "../types"; describe("Utils", () => { describe("escapeForHtml", () => { it("should escape & with &", () => { const result = escapeForHtml("&"); expect(result).toEqual("&"); }); it("should escape < with <", () => { const result = escapeForHtml("<"); expect(result).toEqual("<"); }); it("should escape > with >", () => { const result = escapeForHtml(">"); expect(result).toEqual(">"); }); it('should escape " with "', () => { const result = escapeForHtml('"'); expect(result).toEqual("""); }); it("should escape ' with '", () => { const result = escapeForHtml("'"); expect(result).toEqual("'"); }); it("should escape / with /", () => { const result = escapeForHtml("/"); expect(result).toEqual("/"); }); it("should escape a string containing HTML code", () => { const result = escapeForHtml(`Search 'Diff2Html'`); expect(result).toEqual( "<a href="/search?q=diff2html">Search 'Diff2Html'</a>" ); }); }); describe("getHtmlId", () => { it("should generate file unique id", () => { const result = getHtmlId({ oldName: "sample.js", newName: "sample.js" }); expect(result).toEqual("d2h-960013"); }); it("should generate file unique id for empty hashes", () => { const result = getHtmlId({ oldName: "sample.js", newName: "sample.js" }); expect(result).toEqual("d2h-960013"); }); }); describe("getDiffName", () => { it("should generate the file name for a changed file", () => { const result = filenameDiff({ oldName: "sample.js", newName: "sample.js" }); 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(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(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(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(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(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(result).toEqual("src/my/file.js"); }); }); describe("diffHighlight", () => { it("should highlight two lines", () => { const result = diffHighlight("-var myVar = 2;", "+var myVariable = 3;", false, { matching: LineMatchingType.WORDS }); expect(result).toEqual({ oldLine: { prefix: "-", content: "var myVar = 2;" }, newLine: { prefix: "+", content: "var myVariable = 3;" } }); }); it("should highlight two lines char by char", () => { const result = diffHighlight("-var myVar = 2;", "+var myVariable = 3;", false, { diffStyle: DiffStyleType.CHAR }); expect(result).toEqual({ oldLine: { prefix: "-", content: "var myVar = 2;" }, newLine: { prefix: "+", content: "var myVariable = 3;" } }); }); it("should highlight combined diff lines", () => { const result = diffHighlight(" -var myVar = 2;", " +var myVariable = 3;", true, { diffStyle: DiffStyleType.WORD, matching: LineMatchingType.WORDS, matchWordsThreshold: 1.0 }); expect(result).toEqual({ oldLine: { prefix: " -", content: 'var myVar = 2;' }, newLine: { prefix: " +", content: 'var myVariable = 3;' } }); }); }); });