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);
});
});
});