var assert = require('assert'); var SideBySidePrinter = require('../src/side-by-side-printer.js').SideBySidePrinter; describe('SideBySidePrinter', function() { describe('generateEmptyDiff', function() { it('should return an empty diff', function() { var sideBySidePrinter = new SideBySidePrinter({}); var fileHtml = sideBySidePrinter.generateEmptyDiff(); var expectedRight = ''; var expectedLeft = '\n' + ' ' + '
' + 'File without changes' + '
' + ' \n' + '\n'; assert.equal(expectedRight, fileHtml.right); assert.equal(expectedLeft, fileHtml.left); }); }); describe('generateSideBySideFileHtml', function() { it('should generate lines with the right prefixes', function() { var sideBySidePrinter = new SideBySidePrinter({}); var file = { "blocks": [{ "lines": [{ "content": " context", "type": "d2h-cntx", "oldNumber": 19, "newNumber": 19 }, {"content": "-removed", "type": "d2h-del", "oldNumber": 20, "newNumber": null}, { "content": "+added", "type": "d2h-ins", "oldNumber": null, "newNumber": 20 }], "oldStartLine": "19", "newStartLine": "19", "header": "@@ -19,7 +19,7 @@" }], "deletedLines": 1, "addedLines": 1, "checksumBefore": "fc56817", "checksumAfter": "e8e7e49", "mode": "100644", "oldName": "coverage.init", "language": "init", "newName": "coverage.init", "isCombined": false }; var fileHtml = sideBySidePrinter.generateSideBySideFileHtml(file); var expectedRight = '' + ' ' + ' ' + '
' + ' ' + '' + '' + ' 19' + ' ' + '
' + ' ' + ' context' + '
' + ' ' + '' + '' + ' 20' + ' ' + '
' + ' +' + ' added' + '
' + ' ' + ''; var expectedLeft = '' + ' ' + ' ' + '
@@ -19,7 +19,7 @@
' + ' ' + '' + '' + ' 19' + ' ' + '
' + ' ' + ' context' + '
' + ' ' + '' + '' + ' 20' + ' ' + '
' + ' -' + ' removed' + '
' + ' ' + ''; var HTMLParser = require('fast-html-parser'); var prefixTag = '.d2h-code-line-prefix'; var parsedExpectedRight = HTMLParser.parse(expectedRight); var parsedFileRight = HTMLParser.parse(fileHtml.right); assert.equal(parsedExpectedRight.querySelectorAll(prefixTag).length > 0, true); assert.equal(parsedExpectedRight.querySelectorAll(prefixTag).length, parsedFileRight.querySelectorAll(prefixTag).length); var parsedExpectedLeft = HTMLParser.parse(expectedLeft); var parsedFileLeft = HTMLParser.parse(fileHtml.left); assert.equal(parsedExpectedLeft.querySelectorAll(prefixTag).length > 0, true); assert.equal(parsedExpectedLeft.querySelectorAll(prefixTag).length, parsedFileLeft.querySelectorAll(prefixTag).length); }); }); describe('generateSingleLineHtml', function() { it('should work for insertions', function() { var diffParser = require('../src/diff-parser.js').DiffParser; var sideBySidePrinter = new SideBySidePrinter({}); var fileHtml = sideBySidePrinter.generateSingleLineHtml( diffParser.LINE_TYPE.INSERTS, 30, 'test', '+'); var expected = '\n' + ' 30\n' + ' ' + '
+test
' + ' \n' + ' \n'; assert.equal(expected, fileHtml); }); it('should work for deletions', function() { var diffParser = require('../src/diff-parser.js').DiffParser; var sideBySidePrinter = new SideBySidePrinter({}); var fileHtml = sideBySidePrinter.generateSingleLineHtml( diffParser.LINE_TYPE.DELETES, 30, 'test', '-'); var expected = '\n' + ' 30\n' + ' ' + '
-test
' + ' \n' + ' \n'; assert.equal(expected, fileHtml); }); }); });