diff --git a/package.json b/package.json index 1971ef2..400078a 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ }, "devDependencies": { "codacy-coverage": "^1.1.3", + "fast-html-parser": "^1.0.1", "istanbul": "^0.4.1", "less": "2.5.*", "mocha": "^2.3.4", diff --git a/test/side-by-side-printer-tests.js b/test/side-by-side-printer-tests.js index b11d4ae..6821865 100644 --- a/test/side-by-side-printer-tests.js +++ b/test/side-by-side-printer-tests.js @@ -21,4 +21,99 @@ describe('SideBySidePrinter', function() { 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 parsedExpectedRight = HTMLParser.parse(expectedRight); + var parsedFileRight = HTMLParser.parse(fileHtml.right); + assert.equal(parsedExpectedRight.querySelectorAll(".d2h-code-line-prefix").length > 0, true); + assert.equal(parsedExpectedRight.querySelectorAll(".d2h-code-line-prefix").length, parsedFileRight.querySelectorAll(".d2h-code-line-prefix").length); + + var parsedExpectedLeft = HTMLParser.parse(expectedLeft); + var parsedFileLeft = HTMLParser.parse(fileHtml.left); + assert.equal(parsedExpectedLeft.querySelectorAll(".d2h-code-line-prefix").length > 0, true); + assert.equal(parsedExpectedLeft.querySelectorAll(".d2h-code-line-prefix").length, parsedFileLeft.querySelectorAll(".d2h-code-line-prefix").length); + }); + }); });