blear.classes.template
Version:
166 lines (142 loc) • 4.35 kB
JavaScript
/**
* 测试 文件
* @author ydr.me
* @create 2016-05-17 12:13
*/
;
var Template = require('../src/index.js');
describe('filter', function () {
it('1级', function () {
var filer1 = 'f' + Date.now();
Template.filter(filer1, function (code) {
return filer1 + code;
});
var tpl = new Template('{{a | ' + filer1 + '}}');
var html = tpl.render({
a: 'aa'
});
expect(html).toBe(filer1 + 'aa');
});
it('2级', function () {
var filer1 = 'f1' + Date.now();
var filer2 = 'f2' + Date.now();
Template.filter(filer1, function (code) {
return filer1 + code;
});
Template.filter(filer2, function (code) {
return filer2 + code;
});
var tpl = new Template('{{a | ' + filer1 + ' | ' + filer2 + '}}');
var html = tpl.render({
a: 'aa'
});
expect(html).toBe(filer2 + filer1 + 'aa');
});
it('无参', function () {
var filer1 = 'f' + Date.now();
Template.filter(filer1, function (code) {
return filer1 + code;
});
var tpl = new Template('{{a | ' + filer1 + '}}');
var html = tpl.render({
a: 'aa',
b: 'bb'
});
expect(html).toBe(filer1 + 'aa');
});
it('单参', function () {
var filer1 = 'f' + Date.now();
Template.filter(filer1, function (code, a1) {
return filer1 + a1 + code;
});
var tpl = new Template('{{a | ' + filer1 + ': b}}');
var html = tpl.render({
a: 'aa',
b: 'bb'
});
expect(html).toBe(filer1 + 'bbaa');
});
it('多参', function () {
var filer1 = 'f' + Date.now();
Template.filter(filer1, function (code, a1, a2) {
return filer1 + a1 + a2 + code;
});
var tpl = new Template('{{a | ' + filer1 + ': b, "x"}}');
var html = tpl.render({
a: 'aa',
b: 'bb'
});
expect(html).toBe(filer1 + 'bbxaa');
});
it('参数类型', function () {
var filer1 = 'f' + Date.now();
Template.filter(filer1, function (code, a1, a2, a3) {
console.log(a3);
return (a1 + a2 + code).replace(a3, '-');
});
var tpl = new Template('{{a | ' + filer1 + ': 1, "2" + "3", /\\d/g/*注释*/}}');
var html = tpl.render({
a: 'aa',
b: 'bb'
});
expect(html).toBe('---aa');
});
it('三目表达式', function () {
var filer1 = 'f' + Date.now();
var tpl = new Template('{{ a ' +
' | ' + filer1 + ': c ? d : e, f ? g : h' +
' | ' + filer1 + ': c ? d : e, f ? g : h' +
'}}');
Template.filter(filer1, function (code, anther1, anther2) {
return code + anther1 + anther2;
});
// 1 | f: 3 ? 4 : 5, 6 ? 7 : 8
// 1 + 4 + 7
// 11 | f: 3 ? 4 : 5, 6 ? 7 : 8
// 12 + 4 + 7
var html = tpl.render({
a: 1,
c: 3,
d: 4,
e: 5,
f: 6,
g: 7,
h: 8
});
expect(html).toBe('23');
});
it('instance filter and static filter', function () {
var staticFilter1 = 'f1' + Date.now();
var staticFilter2 = 'f2' + Date.now();
// 与静态相同名字
var instanceFilter3 = staticFilter1;
var instanceFilter4 = 'f4' + Date.now();
Template.filter(staticFilter1, function () {
return '1';
});
Template.filter(staticFilter2, function () {
return '2';
});
var tpl = new Template(
// 3
'{{a | ' + staticFilter1 + '}}' +
// 2
'{{a | ' + staticFilter2 + '}}' +
// 3
'{{a | ' + instanceFilter3 + '}}' +
// 4
'{{a | ' + instanceFilter4 + '}}' +
''
);
tpl.filter(instanceFilter3, function () {
return '3';
});
tpl.filter(instanceFilter4, function () {
return '4';
});
var html = tpl.render({
a: ''
});
expect(html).toEqual('3234');
});
});