xtemplate
Version:
eXtensible Template Engine lib on browser and nodejs. support async control, inheritance, include, logic expression, custom function and more.
159 lines (115 loc) • 4.01 kB
JavaScript
/**
* test escape for xtemplate
* @author yiminghe@gmail.com
*/
var XTemplate = require('xtemplate');
describe('escape', function () {
it('can output {{', function () {
var tpl = '\\{{ {{x}}';
var render = new XTemplate(tpl).render({x: 1});
expect(render).to.equal('{{ 1');
});
it('can escape {{{', function () {
var tpl = '\\{{{x}}\\}';
var render = new XTemplate(tpl).render({x: 1});
expect(render).to.equal('{{{x}}\\}');
});
it('can output {escape}', function () {
var tpl = '{{"{"+x+"}"}}';
var render = new XTemplate(tpl).render({x: '<'});
expect(render).to.equal('{<}');
});
it('support escape {{', function () {
var tpl = 'my {{!\n' +
'comment' +
'\n}} \\{{title}}';
var data = {
title: 'oo'
};
var render = new XTemplate(tpl).render(data);
expect(render).to.equal('my {{title}}');
render = new XTemplate('\\{{@').render({});
expect(render).to.equal('{{@');
});
it('support escape {{ more', function () {
var tpl = 'my {{!\n' +
'comment' +
'\n}} \\{{title}}{{title}}';
var data = {
title: 'oo'
};
var render = new XTemplate(tpl).render(data);
expect(render).to.equal('my {{title}}oo');
});
it('escapeHtml works', function () {
var tpl = 'my {{title}} is {{{title}}}';
var data = {
title: '<a>'
};
var render = new XTemplate(tpl).render(data);
expect(render).to.equal('my <a> is <a>');
});
it('escape in inline command', function () {
var tpl = 'my {{title()}} is {{{title()}}}';
var render = new XTemplate(tpl, {
commands: {
title: function () {
return '<a>';
}
}
}).render();
expect(render).to.equal('my <a> is <a>');
});
it('escape in inline command 2', function () {
var tpl = 'my {{title(2)}} is {{{title(2)}}}';
var render = new XTemplate(tpl, {
commands: {
title: function () {
return '<a>';
}
}
}).render();
expect(render).to.equal('my <a> is <a>');
});
it('support escape " in tpl', function () {
var tpl = '{{{"haha \\""}}}';
var render = new XTemplate(tpl).render({});
expect(render).to.equal('haha "');
});
it('support escape \' in tpl', function () {
var tpl = '{{{\'haha \\\'\'}}}';
var render = new XTemplate(tpl).render({});
expect(render).to.equal('haha \'');
});
it('support escape \\\' in tpl', function () {
var tpl = '{{{"haha \'"}}}';
var render = new XTemplate(tpl).render({});
/*jshint quotmark:false*/
expect(render).to.equal("haha '");
});
it('does support escape " in content', function () {
var tpl = '"haha \\"';
var render = new XTemplate(tpl).render({});
expect(render).to.equal('"haha \\"');
});
it('support escape escape', function () {
var tpl = 'haha \\\\{{title}}';
var data = {
title: 'a'
};
var render = new XTemplate(tpl).render(data);
expect(render).to.equal('haha \\a');
tpl = 'haha \\\\\\{{title}}';
data = {
title: 'a'
};
render = new XTemplate(tpl).render(data);
expect(render).to.equal('haha \\{{title}}');
tpl = 'haha \\\\\\\\\\{{title}}';
data = {
title: 'a'
};
render = new XTemplate(tpl).render(data);
expect(render).to.equal('haha \\\\{{title}}');
});
});