var expect = require('expect.js'), defaultOpts = require('..').prototype.options, _ = require('lodash'), parse = require('../lib/parse'), render = require('../lib/render'); var html = function(str, options) { options = _.defaults(options || {}, defaultOpts); var dom = parse(str, options); return render(dom); }; var xml = function(str, options) { options = _.defaults(options || {}, defaultOpts); options.xmlMode = true; var dom = parse(str, options); return render(dom, options); }; describe('render', function() { describe('(html)', function() { it('should render
tags correctly', function() { var str = '
'; expect(html(str)).to.equal('
'); }); it('should handle double quotes within single quoted attributes properly', function() { var str = '
'; expect(html(str)).to.equal('
'); }); it('should retain encoded HTML content within attributes', function() { var str = '
'; expect(html(str)).to.equal('
'); }); it('should shorten the "checked" attribute when it contains the value "checked"', function() { var str = ''; expect(html(str)).to.equal(''); }); it('should not shorten the "name" attribute when it contains the value "name"', function() { var str = ''; expect(html(str)).to.equal(''); }); it('should render comments correctly', function() { var str = ''; expect(html(str)).to.equal(''); }); it('should render whitespace by default', function() { var str = 'hi blah'; expect(html(str)).to.equal(str); }); it('should normalize whitespace if specified', function() { var str = 'hi blah '; expect(html(str, { normalizeWhitespace: true })).to.equal('hi blah '); }); it('should preserve multiple hyphens in data attributes', function() { var str = '
'; expect(html(str)).to.equal('
'); }); it('should render CDATA correctly', function() { var str = ' '; expect(xml(str)).to.equal(str); }); }); });