\n' +
' | \n' +
- ' \n' +
- ' 1 \n' +
+ ' \n' +
+ '1 \n' +
' | \n' +
' \n' +
' \n' +
@@ -121,60 +120,67 @@ var htmlLineExample1WithFilesSummary = filesExample1 + htmlLineExample1;
var htmlSideExample1 =
' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' | \n' +
- ' \n' +
- ' @@ -1 +1 @@ \n' +
- ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' | \n' +
+ ' \n' +
+ ' @@ -1 +1 @@ \n' +
+ ' | \n' +
+ ' \n' +
+ ' | \n' +
+ ' 1\n' +
+ ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' -\n' +
+ ' test\n' +
+ ' \n' +
+ ' | \n' +
' \n' +
- '\n' +
- ' | 1 | \n' +
- ' -test | \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \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' +
+ ' test1\n' +
+ ' \n' +
+ ' | \n' +
' \n' +
- '\n' +
- ' | 1 | \n' +
- ' +test1 | \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- '\n';
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' ';
var htmlSideExample1WithFilesSummary = filesExample1 + htmlSideExample1;
diff --git a/test/file-list-printer-tests.js b/test/file-list-printer-tests.js
new file mode 100644
index 0000000..89e9dc1
--- /dev/null
+++ b/test/file-list-printer-tests.js
@@ -0,0 +1,105 @@
+var assert = require('assert');
+
+var fileListPrinter = require('../src/file-list-printer.js').FileListPrinter;
+
+describe('FileListPrinter', function() {
+ describe('generateFileList', function() {
+ it('should work for all kinds of files', function() {
+
+ var files = [{
+ addedLines: 12,
+ deletedLines: 41,
+ language: 'js',
+ oldName: 'my/file/name.js',
+ newName: 'my/file/name.js'
+ }, {
+ addedLines: 12,
+ deletedLines: 41,
+ language: 'js',
+ oldName: 'my/file/name1.js',
+ newName: 'my/file/name2.js'
+ }, {
+ addedLines: 12,
+ deletedLines: 0,
+ language: 'js',
+ oldName: 'dev/null',
+ newName: 'my/file/name.js',
+ isNew: true
+ }, {
+ addedLines: 0,
+ deletedLines: 41,
+ language: 'js',
+ oldName: 'my/file/name.js',
+ newName: 'dev/null',
+ isDeleted: true
+ }];
+
+ var fileHtml = fileListPrinter.generateFileList(files);
+
+ var expected =
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' - \n' +
+ ' \n' +
+ ' \n' +
+ ' my/file/name.js\n' +
+ ' \n' +
+ ' +12\n' +
+ ' -41\n' +
+ ' \n' +
+ ' \n' +
+ '
\n' +
+ '- \n' +
+ ' \n' +
+ ' \n' +
+ ' my/file/{name1.js → name2.js}\n' +
+ ' \n' +
+ ' +12\n' +
+ ' -41\n' +
+ ' \n' +
+ ' \n' +
+ '
\n' +
+ '- \n' +
+ ' \n' +
+ ' \n' +
+ ' my/file/name.js\n' +
+ ' \n' +
+ ' +12\n' +
+ ' -0\n' +
+ ' \n' +
+ ' \n' +
+ '
\n' +
+ '- \n' +
+ ' \n' +
+ ' \n' +
+ ' my/file/name.js\n' +
+ ' \n' +
+ ' +0\n' +
+ ' -41\n' +
+ ' \n' +
+ ' \n' +
+ '
\n' +
+ ' \n' +
+ ' ';
+
+ assert.equal(expected, fileHtml);
+ });
+ });
+});
diff --git a/test/hogan-cache-tests.js b/test/hogan-cache-tests.js
index c5f65ce..190bf6f 100644
--- a/test/hogan-cache-tests.js
+++ b/test/hogan-cache-tests.js
@@ -1,28 +1,35 @@
var assert = require('assert');
var HoganJsUtils = require('../src/hoganjs-utils.js').HoganJsUtils;
+var diffParser = require('../src/diff-parser.js').DiffParser;
describe('HoganJsUtils', function() {
describe('render', function() {
var emptyDiffHtml =
' \n' +
- ' \n' +
- ' \n' +
+ ' \n' +
+ ' \n' +
' File without changes\n' +
' \n' +
' | \n' +
' | ';
it('should render view', function() {
- var result = HoganJsUtils.render('line-by-line', 'empty-diff', {});
+ var result = HoganJsUtils.render('generic', 'empty-diff', {
+ contentClass: 'd2h-code-line',
+ diffParser: diffParser
+ });
assert.equal(emptyDiffHtml, result);
});
it('should render view without cache', function() {
- var result = HoganJsUtils.render('line-by-line', 'empty-diff', {}, {noCache: true});
+ var result = HoganJsUtils.render('generic', 'empty-diff', {
+ contentClass: 'd2h-code-line',
+ diffParser: diffParser
+ }, {noCache: true});
assert.equal(emptyDiffHtml + '\n', result);
});
it('should return null if template is missing', function() {
- var result = HoganJsUtils.render('line-by-line', 'missing-template', {}, {noCache: true});
+ var result = HoganJsUtils.render('generic', 'missing-template', {}, {noCache: true});
assert.equal(null, result);
});
});
diff --git a/test/line-by-line-tests.js b/test/line-by-line-tests.js
index 16dabbf..a0ba661 100644
--- a/test/line-by-line-tests.js
+++ b/test/line-by-line-tests.js
@@ -31,8 +31,8 @@ describe('LineByLinePrinter', function() {
fileHtml = fileHtml.replace(/\n\n+/g, '\n');
var expected = ' \n' +
' | \n' +
- ' \n' +
- ' 30 \n' +
+ ' \n' +
+ '30 \n' +
' | \n' +
' \n' +
' \n' +
@@ -53,8 +53,8 @@ describe('LineByLinePrinter', function() {
fileHtml = fileHtml.replace(/\n\n+/g, '\n');
var expected = ' \n' +
' | \n' +
- ' 30 \n' +
- ' \n' +
+ ' 30 \n' +
+ '\n' +
' | \n' +
' \n' +
' \n' +
@@ -75,8 +75,8 @@ describe('LineByLinePrinter', function() {
fileHtml = fileHtml.replace(/\n\n+/g, '\n');
var expected = ' \n' +
' | \n' +
- ' \n' +
- ' 30 \n' +
+ ' \n' +
+ '30 \n' +
' | \n' +
' \n' +
' \n' +
@@ -97,8 +97,8 @@ describe('LineByLinePrinter', function() {
fileHtml = fileHtml.replace(/\n\n+/g, '\n');
var expected = ' \n' +
' | \n' +
- ' \n' +
- ' 30 \n' +
+ ' \n' +
+ '30 \n' +
' | \n' +
' \n' +
' \n' +
@@ -119,8 +119,9 @@ describe('LineByLinePrinter', function() {
fileHtml = fileHtml.replace(/\n\n+/g, '\n');
var expected = ' \n' +
' | \n' +
- ' \n' +
- ' 30 \n' +
+ ' \n' +
+ '' +
+ '30 \n' +
' | \n' +
' \n' +
' \n' +
@@ -149,19 +150,129 @@ describe('LineByLinePrinter', function() {
var fileHtml = lineByLinePrinter.makeFileDiffHtml(file, diffs);
- var expected = ' \n' +
+ var expected =
+ ' \n' +
' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' Random Html\n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' ';
+
+ assert.equal(expected, fileHtml);
+ });
+ it('should work for simple added file', function() {
+ var lineByLinePrinter = new LineByLinePrinter({});
+
+ var file = {
+ addedLines: 12,
+ deletedLines: 0,
+ language: 'js',
+ oldName: 'dev/null',
+ newName: 'my/file/name.js',
+ isNew: true
+ };
+ var diffs = ' Random Html';
+
+ var fileHtml = lineByLinePrinter.makeFileDiffHtml(file, diffs);
+
+ var expected =
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' Random Html\n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' ';
+
+ assert.equal(expected, fileHtml);
+ });
+ it('should work for simple deleted file', function() {
+ var lineByLinePrinter = new LineByLinePrinter({});
+
+ var file = {
+ addedLines: 0,
+ deletedLines: 41,
+ language: 'js',
+ oldName: 'my/file/name.js',
+ newName: 'dev/null',
+ isDeleted: true
+ };
+ var diffs = ' Random Html';
+
+ var fileHtml = lineByLinePrinter.makeFileDiffHtml(file, diffs);
+
+ var expected =
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' Random Html\n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' ';
+
+ assert.equal(expected, fileHtml);
+ });
+ it('should work for simple renamed file', function() {
+ var lineByLinePrinter = new LineByLinePrinter({});
+
+ var file = {
+ addedLines: 12,
+ deletedLines: 41,
+ language: 'js',
+ oldName: 'my/file/name1.js',
+ newName: 'my/file/name2.js',
+ isRename: true
+ };
+ var diffs = ' Random Html';
+
+ var fileHtml = lineByLinePrinter.makeFileDiffHtml(file, diffs);
+
+ var expected =
+ ' \n' +
+ ' \n' +
' \n' +
' \n' +
@@ -229,17 +340,12 @@ describe('LineByLinePrinter', function() {
' \n' +
' \n' +
' \n' +
' \n' +
' \n' +
@@ -248,12 +354,12 @@ describe('LineByLinePrinter', function() {
' \n' +
' | \n' +
' \n' +
- ' \n' +
+ ' @@ -1 +1 @@ \n' +
' | \n' +
' \n' +
' | \n' +
- ' 1 \n' +
- ' \n' +
+ ' 1 \n' +
+ '\n' +
' | \n' +
' \n' +
' \n' +
@@ -263,8 +369,8 @@ describe('LineByLinePrinter', function() {
' | \n' +
' \n' +
' | \n' +
- ' \n' +
- ' 1 \n' +
+ ' \n' +
+ '1 \n' +
' | \n' +
' \n' +
' \n' +
@@ -300,17 +406,12 @@ describe('LineByLinePrinter', function() {
' \n' +
' \n' +
' \n' +
' \n' +
' \n' +
@@ -356,8 +457,8 @@ describe('LineByLinePrinter', function() {
var expected =
' \n' +
' | \n' +
- ' 1 \n' +
- ' \n' +
+ ' 1 \n' +
+ '\n' +
' | \n' +
' \n' +
' \n' +
@@ -366,8 +467,8 @@ describe('LineByLinePrinter', function() {
' | \n' +
' \n' +
' | \n' +
- ' \n' +
- ' 1 \n' +
+ ' \n' +
+ '1 \n' +
' | \n' +
' \n' +
' \n' +
@@ -430,12 +531,12 @@ describe('LineByLinePrinter', function() {
' \n' +
' | \n' +
' \n' +
- ' \n' +
+ ' @@ -1 +1 @@ \n' +
' | \n' +
' \n' +
' | \n' +
- ' 1 \n' +
- ' 1 \n' +
+ ' 1 \n' +
+ '1 \n' +
' | \n' +
' \n' +
' \n' +
@@ -444,8 +545,8 @@ describe('LineByLinePrinter', function() {
' | \n' +
' \n' +
' | \n' +
- ' 2 \n' +
- ' \n' +
+ ' 2 \n' +
+ '\n' +
' | \n' +
' \n' +
' \n' +
@@ -455,8 +556,8 @@ describe('LineByLinePrinter', function() {
' | \n' +
' \n' +
' | \n' +
- ' \n' +
- ' 2 \n' +
+ ' \n' +
+ '2 \n' +
' | \n' +
' \n' +
' \n' +
@@ -466,8 +567,8 @@ describe('LineByLinePrinter', function() {
' | \n' +
' \n' +
' | \n' +
- ' \n' +
- ' 3 \n' +
+ ' \n' +
+ '3 \n' +
' | \n' +
' \n' +
' \n' +
diff --git a/test/side-by-side-printer-tests.js b/test/side-by-side-printer-tests.js
index e2e2286..b90e2c2 100644
--- a/test/side-by-side-printer-tests.js
+++ b/test/side-by-side-printer-tests.js
@@ -10,11 +10,11 @@ describe('SideBySidePrinter', function() {
var fileHtml = sideBySidePrinter.generateEmptyDiff();
var expectedRight = '';
var expectedLeft = ' \n' +
- ' | ' +
- ' ' +
- 'File without changes' +
- ' ' +
- ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' File without changes\n' +
+ ' \n' +
+ ' | \n' +
' \n';
assert.equal(expectedRight, fileHtml.right);
@@ -73,43 +73,78 @@ describe('SideBySidePrinter', function() {
var expectedLeft =
' \n' +
- ' | \n' +
- ' \n' +
- ' @@ -19,7 +19,7 @@ \n' +
- ' | \n' +
- ' \n' +
- ' \n' +
- ' | 19 | \n' +
- ' context | \n' +
- ' \n' +
- ' \n' +
- ' | 20 | \n' +
- ' -removed | \n' +
- ' \n' +
- ' \n' +
- ' | \n' +
- ' | \n' +
- ' \n';
+ ' | \n' +
+ ' \n' +
+ ' @@ -19,7 +19,7 @@ \n' +
+ ' | \n' +
+ ' | \n' +
+ ' | \n' +
+ ' 19\n' +
+ ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' context\n' +
+ ' \n' +
+ ' | \n' +
+ ' \n' +
+ ' | \n' +
+ ' 20\n' +
+ ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' -\n' +
+ ' removed\n' +
+ ' \n' +
+ ' | \n' +
+ ' \n' +
+ ' | \n' +
+ ' ' +
+ '\n' +
+ ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' | \n' +
+ ' ';
var expectedRight =
' \n' +
- ' | \n' +
- ' \n' +
- ' \n' +
- ' | \n' +
- ' \n' +
- ' \n' +
- ' | 19 | \n' +
- ' context | \n' +
- ' \n' +
- ' \n' +
- ' | 20 | \n' +
- ' +added | \n' +
- ' \n' +
- ' \n' +
- ' | 21 | \n' +
- ' +another added | \n' +
- ' \n';
+ ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' | \n' +
+ ' | \n' +
+ ' | \n' +
+ ' 19\n' +
+ ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' context\n' +
+ ' \n' +
+ ' | \n' +
+ ' \n' +
+ ' | \n' +
+ ' 20\n' +
+ ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' +\n' +
+ ' added\n' +
+ ' \n' +
+ ' | \n' +
+ ' \n' +
+ ' | \n' +
+ ' 21\n' +
+ ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' +\n' +
+ ' another added\n' +
+ ' \n' +
+ ' | \n' +
+ ' ';
assert.equal(expectedLeft, fileHtml.left);
assert.equal(expectedRight, fileHtml.right);
@@ -124,11 +159,16 @@ describe('SideBySidePrinter', function() {
var fileHtml = sideBySidePrinter.generateSingleLineHtml(
diffParser.LINE_TYPE.INSERTS, 30, 'test', '+');
var expected = ' \n' +
- ' | 30 | \n' +
- ' ' +
- ' +test ' +
+ ' | \n' +
+ ' 30\n' +
' | \n' +
- ' \n';
+ ' \n' +
+ ' \n' +
+ ' +\n' +
+ ' test\n' +
+ ' \n' +
+ ' | \n' +
+ ' | ';
assert.equal(expected, fileHtml);
});
@@ -139,11 +179,16 @@ describe('SideBySidePrinter', function() {
var fileHtml = sideBySidePrinter.generateSingleLineHtml(
diffParser.LINE_TYPE.DELETES, 30, 'test', '-');
var expected = ' \n' +
- ' | 30 | \n' +
- ' ' +
- ' -test ' +
+ ' | \n' +
+ ' 30\n' +
' | \n' +
- ' \n';
+ ' \n' +
+ ' \n' +
+ ' -\n' +
+ ' test\n' +
+ ' \n' +
+ ' | \n' +
+ ' | ';
assert.equal(expected, fileHtml);
});
@@ -184,60 +229,67 @@ describe('SideBySidePrinter', function() {
var html = sideBySidePrinter.generateSideBySideJsonHtml(exampleJson);
var expected =
' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' | \n' +
- ' \n' +
- ' @@ -1 +1 @@ \n' +
- ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' | \n' +
+ ' \n' +
+ ' @@ -1 +1 @@ \n' +
+ ' | \n' +
+ ' \n' +
+ ' | \n' +
+ ' 1\n' +
+ ' | \n' +
+ ' \n' +
+ ' \n' +
+ ' -\n' +
+ ' test\n' +
+ ' \n' +
+ ' | \n' +
' \n' +
- '\n' +
- ' | 1 | \n' +
- ' -test | \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \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' +
+ ' test1r\n' +
+ ' \n' +
+ ' | \n' +
' \n' +
- '\n' +
- ' | 1 | \n' +
- ' +test1r | \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- '\n';
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' ';
assert.equal(expected, html);
});
@@ -254,43 +306,44 @@ describe('SideBySidePrinter', function() {
var html = sideBySidePrinter.generateSideBySideJsonHtml(exampleJson);
var expected =
' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' | File without changes | \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' | \n' +
+ ' \n' +
+ ' File without changes\n' +
+ ' \n' +
+ ' | \n' +
' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- ' \n' +
- '\n';
+ '\n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' \n' +
+ ' ';
assert.equal(expected, html);
});
@@ -316,24 +369,29 @@ describe('SideBySidePrinter', function() {
var html = sideBySidePrinter.processLines(oldLines, newLines);
var expectedLeft =
' \n' +
- ' | 1 | \n' +
- ' ' +
- ' ' +
- '-' +
- 'test ' +
+ ' | \n' +
+ ' 1\n' +
' | \n' +
- ' \n';
+ ' \n' +
+ ' \n' +
+ ' -\n' +
+ ' test\n' +
+ ' \n' +
+ ' | \n' +
+ ' | ';
var expectedRight =
' \n' +
- ' | 1 | \n' +
- ' ' +
- ' ' +
- '+' +
- 'test1r' +
- ' ' +
+ ' | \n' +
+ ' 1\n' +
' | \n' +
- ' \n';
+ ' \n' +
+ ' \n' +
+ ' +\n' +
+ ' test1r\n' +
+ ' \n' +
+ ' | \n' +
+ ' | ';
assert.equal(expectedLeft, html.left);
assert.equal(expectedRight, html.right);
| | |