diff --git a/test/diff2html-tests.js b/test/diff2html-tests.js index 49108b2..765df8a 100644 --- a/test/diff2html-tests.js +++ b/test/diff2html-tests.js @@ -2,6 +2,182 @@ var assert = require('assert'); var Diff2Html = require('../src/diff2html.js').Diff2Html; +var diffExample1 = + 'diff --git a/sample b/sample\n' + + 'index 0000001..0ddf2ba\n' + + '--- a/sample\n' + + '+++ b/sample\n' + + '@@ -1 +1 @@\n' + + '-test\n' + + '+test1\n'; + +var jsonExample1 = + [{ + blocks: [{ + lines: [{ + content: '-test', + type: 'd2h-del', + oldNumber: 1, + newNumber: null + }, + { + content: '+test1', + type: 'd2h-ins', + oldNumber: null, + newNumber: 1 + }], + oldStartLine: '1', + oldStartLine2: null, + newStartLine: '1', + header: '@@ -1 +1 @@' + }], + deletedLines: 1, + addedLines: 1, + checksumBefore: '0000001', + checksumAfter: '0ddf2ba', + oldName: 'sample', + language: undefined, + newName: 'sample', + isCombined: false + }]; + +var filesExample1 = + '
\n' + + '
\n' + + ' Files changed (1)  \n' + + ' hide\n' + + ' show\n' + + '
\n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + '
\n' + + ' +1\n' + + ' \n' + + ' -1\n' + + ' \n' + + '  sample \n' + + '
\n'; + +var htmlLineExample1 = + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + ' +1\n' + + ' \n' + + ' \n' + + ' -1\n' + + ' \n' + + ' \n' + + ' \n' + + '  sample\n' + + ' \n' + + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + '\n' + + ' \n' + + ' \n' + + '\n' + + ' \n' + + ' \n' + + '\n' + + ' \n' + + '
\n' + + '
\n' + + '
\n' + + '
1
\n' + + '
\n' + + '
\n' + + '
\n' + + ' -\n' + + ' test\n' + + '
\n' + + '
\n' + + '
\n' + + '
1
\n' + + '
\n' + + '
\n' + + ' +\n' + + ' test1\n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + '
'; + +var htmlLineExample1WithFilesSummary = filesExample1 + htmlLineExample1; + +var htmlSideExample1 = + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + ' +1\n' + + ' \n' + + ' \n' + + ' -1\n' + + ' \n' + + ' \n' + + ' \n' + + ' sample\n' + + ' \n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + '\n' + + '\n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + '
\n' + + '
@@ -1 +1 @@
\n' + + '
1
-test
\n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + '\n' + + '\n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + '
\n' + + '
\n' + + '
1
+test1
\n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + '
\n'; + +var htmlSideExample1WithFilesSummary = filesExample1 + htmlSideExample1; + describe('Diff2Html', function() { describe('getJsonFromDiff', function() { it('should parse simple diff to json', function() { @@ -14,6 +190,8 @@ describe('Diff2Html', function() { '-test\n' + '+test1\n'; var result = Diff2Html.getJsonFromDiff(diff); + + console.log(result); var file1 = result[0]; assert.equal(1, result.length); assert.equal(1, file1.addedLines); @@ -71,5 +249,35 @@ describe('Diff2Html', function() { assert.equal(null, result[0].blocks[0].lines[8].oldNumber); assert.equal(56, result[0].blocks[0].lines[8].newNumber); }); + + it('should generate pretty line by line html from diff', function() { + var result = Diff2Html.getPrettyHtmlFromDiff(diffExample1); + assert.equal(htmlLineExample1, result); + }); + + it('should generate pretty line by line html from json', function() { + var result = Diff2Html.getPrettyHtmlFromJson(jsonExample1); + assert.equal(htmlLineExample1, result); + }); + + it('should generate pretty diff with files summary', function() { + var result = Diff2Html.getPrettyHtmlFromDiff(diffExample1, {showFiles: true}); + assert.equal(htmlLineExample1WithFilesSummary, result); + }); + + it('should generate pretty side by side html from diff', function() { + var result = Diff2Html.getPrettySideBySideHtmlFromDiff(diffExample1); + assert.equal(htmlSideExample1, result); + }); + + it('should generate pretty side by side html from json', function() { + var result = Diff2Html.getPrettySideBySideHtmlFromJson(jsonExample1); + assert.equal(htmlSideExample1, result); + }); + + it('should generate pretty side by side html from diff', function() { + var result = Diff2Html.getPrettySideBySideHtmlFromDiff(diffExample1, {showFiles: true}); + assert.equal(htmlSideExample1WithFilesSummary, result); + }); }); }); diff --git a/test/side-by-side-printer-tests.js b/test/side-by-side-printer-tests.js index d4b9837..c0d71cb 100644 --- a/test/side-by-side-printer-tests.js +++ b/test/side-by-side-printer-tests.js @@ -153,4 +153,98 @@ describe('SideBySidePrinter', function() { assert.equal(expected, fileHtml); }); }); + + describe('generateSideBySideJsonHtml', function() { + it('should work for list of files', function() { + var exampleJson = [{ + blocks: [{ + lines: [{ + content: '-test', + type: 'd2h-del', + oldNumber: 1, + newNumber: null + }, + { + content: '+test1r', + type: 'd2h-ins', + oldNumber: null, + newNumber: 1 + }], + oldStartLine: '1', + oldStartLine2: null, + newStartLine: '1', + header: '@@ -1 +1 @@' + }], + deletedLines: 1, + addedLines: 1, + checksumBefore: '0000001', + checksumAfter: '0ddf2ba', + oldName: 'sample', + language: undefined, + newName: 'sample', + isCombined: false + }]; + + var sideBySidePrinter = new SideBySidePrinter({matching: 'lines'}); + var html = sideBySidePrinter.generateSideBySideJsonHtml(exampleJson); + var expected = + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + ' +1\n' + + ' \n' + + ' \n' + + ' -1\n' + + ' \n' + + ' \n' + + ' \n' + + ' sample\n' + + ' \n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + '\n' + + '\n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + '
\n' + + '
@@ -1 +1 @@
\n' + + '
1
-test
\n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + '\n' + + '\n' + + ' \n' + + ' \n' + + ' \n' + + ' \n' + + '
\n' + + '
\n' + + '
1
+test1r
\n' + + '
\n' + + '
\n' + + '
\n' + + '
\n' + + '
\n'; + + assert.equal(expected, html); + }); + }); });