gulp-htmlhint-junit-reporter
Version:
junit reporter for gulp-htmlhint
42 lines (36 loc) • 1.43 kB
JavaScript
/* eslint-env node, mocha */
;
const chai = require('chai');
const expect = chai.expect;
const DOMParser = require('xmldom').DOMParser;
const xmlEscape = require('../lib/xml-escape');
describe('xml-escape', function() {
it('should escape xml properly', (done) => {
expect(xmlEscape('<')).to.equal('<');
expect(xmlEscape('>')).to.equal('>');
expect(xmlEscape('&')).to.equal('&');
expect(xmlEscape('"')).to.equal('"');
expect(xmlEscape('\'')).to.equal(''');
expect(xmlEscape('\u00a9')).to.equal('©');
done();
});
it('should escape cdata', (done) => {
expect(xmlEscape('<', true)).to.equal('<');
const srcText = 'foo <![CDATA[bar]]> baz';
const escaped = xmlEscape(srcText, true);
// A simple equality comparison
expect(escaped).to.equal('foo ]]><![CDATA[<![CDATA[bar]]>]]><![CDATA[ baz');
done();
});
it('should escape cdata as valid xml', (done) => {
const srcText = 'foo <![CDATA[bar]]> baz';
const escaped = xmlEscape(srcText, true);
// Test that the parsed dom text equals the original source text
const parser = new DOMParser();
const doc = parser.parseFromString(`<div><![CDATA[${escaped}]]></div>`, 'text/xml');
expect(doc.getElementsByTagName('div').length).to.equal(1);
const div = doc.getElementsByTagName('div')[0];
expect(div.textContent).to.equal(srcText);
done();
});
});