var assert = require('assert'); var Utils = require('../src/utils.js').Utils; var LineByLinePrinter = require('../src/line-by-line-printer.js').LineByLinePrinter; describe('LineByLinePrinter', function() { describe('_generateEmptyDiff', function() { it('should return an empty diff', function() { var lineByLinePrinter = new LineByLinePrinter({}); var fileHtml = lineByLinePrinter._generateEmptyDiff(); var expected = '\n' + ' \n' + '
\n' + ' File without changes\n' + '
\n' + ' \n' + ''; assert.equal(expected, fileHtml); }); }); describe('makeLineHtml', function() { it('should work for insertions', function() { var diffParser = require('../src/diff-parser.js').DiffParser; var lineByLinePrinter = new LineByLinePrinter({}); var fileHtml = lineByLinePrinter.makeLineHtml( diffParser.LINE_TYPE.INSERTS, '', 30, '+', 'test'); fileHtml = fileHtml.replace(/\n\n+/g, '\n'); var expected = '\n' + ' \n' + '
\n' + '
30
\n' + ' \n' + ' \n' + '
\n' + ' test\n' + ' +\n' + '
\n' + ' \n' + ''; assert.equal(expected, fileHtml); }); it('should work for deletions', function() { var diffParser = require('../src/diff-parser.js').DiffParser; var lineByLinePrinter = new LineByLinePrinter({}); var fileHtml = lineByLinePrinter.makeLineHtml( diffParser.LINE_TYPE.DELETES, 30, '', '-', 'test'); fileHtml = fileHtml.replace(/\n\n+/g, '\n'); var expected = '\n' + ' \n' + '
30
\n' + '
\n' + ' \n' + ' \n' + '
\n' + ' test\n' + ' -\n' + '
\n' + ' \n' + ''; assert.equal(expected, fileHtml); }); it('should convert indents into non breakin spaces (2 white spaces)', function() { var diffParser = require('../src/diff-parser.js').DiffParser; var lineByLinePrinter = new LineByLinePrinter({}); var fileHtml = lineByLinePrinter.makeLineHtml( diffParser.LINE_TYPE.INSERTS, '', 30, '+', ' test'); fileHtml = fileHtml.replace(/\n\n+/g, '\n'); var expected = '\n' + ' \n' + '
\n' + '
30
\n' + ' \n' + ' \n' + '
\n' + '   test\n' + ' +\n' + '
\n' + ' \n' + ''; assert.equal(expected, fileHtml); }); it('should convert indents into non breakin spaces (4 white spaces)', function() { var diffParser = require('../src/diff-parser.js').DiffParser; var lineByLinePrinter = new LineByLinePrinter({}); var fileHtml = lineByLinePrinter.makeLineHtml( diffParser.LINE_TYPE.INSERTS, '', 30, '+', ' test'); fileHtml = fileHtml.replace(/\n\n+/g, '\n'); var expected = '\n' + ' \n' + '
\n' + '
30
\n' + ' \n' + ' \n' + '
\n' + '     test\n' + ' +\n' + '
\n' + ' \n' + ''; assert.equal(expected, fileHtml); }); it('should convert indents into non breakin spaces (one tab)', function() { var diffParser = require('../src/diff-parser.js').DiffParser; var lineByLinePrinter = new LineByLinePrinter({}); var fileHtml = lineByLinePrinter.makeLineHtml( diffParser.LINE_TYPE.INSERTS, '', 30, '+', Utils.escape('\ttest')); fileHtml = fileHtml.replace(/\n\n+/g, '\n'); var expected = '\n' + ' \n' + '
\n' + '
30
\n' + ' \n' + ' \n' + '
\n' + '     test\n' + ' +\n' + '
\n' + ' \n' + ''; assert.equal(expected, fileHtml); }); }); });