123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228 |
- /**
- * @file laytpl - 测试
- * @author xuexb <fe.xiaowu@gmail.com>
- */
- /* global layui */
- var laytpl = layui.laytpl;
- describe('laytpl', function () {
- it('param is error', function () {
- [
- [], {},
- null,
- 1,
- true
- ].forEach(function (key) {
- expect(laytpl(key)).to.have.string('Laytpl Error');
- });
- });
- it('async render callback', function (done) {
- expect(laytpl('').render()).to.have.string('Laytpl Error');
- laytpl('{{ d.name }}是一位公猿').render({
- name: '贤心'
- }, function (result) {
- expect(result).to.equal('贤心是一位公猿');
- done();
- });
- });
- it('sync result', function () {
- var result = laytpl('{{ d.name }}是一位公猿').render({
- name: '贤心'
- });
- expect(result).to.equal('贤心是一位公猿');
- });
- it('cached', function () {
- var compile = laytpl('{{ d.name }}');
- expect(compile.render({
- name: 1
- })).to.equal('1');
- expect(compile.render({
- name: 2
- })).to.equal('2');
- });
- it('unescape result', function () {
- var result = laytpl('{{ d.name }}<div></div>').render({
- name: '<em>laytpl</em>'
- });
- expect(result).to.equal('<em>laytpl</em><div></div>');
- });
- it('escape result', function () {
- var result = laytpl('{{= d.name }}<div></div>').render({
- name: '<em>laytpl</em>'
- });
- expect(result).to.equal('<em>laytpl</em><div></div>');
- });
- describe('typeof result', function () {
- it('string', function () {
- expect(laytpl('{{ d.name }}').render({
- name: 1
- })).to.be.a('string');
- expect(laytpl([
- '{{# ',
- ' if (true) {',
- ' return "1";',
- ' }',
- '}}'
- ].join('')).render({})).to.be.a('string');
- });
- // 表达式返回boolean
- it('boolean', function () {
- expect(laytpl([
- '{{# ',
- ' if (true) {',
- ' return true;',
- ' }',
- '}}'
- ].join('')).render({})).to.be.a('boolean');
- });
- it('number', function () {
- expect(laytpl([
- '{{# ',
- ' if (true) {',
- ' return 1;',
- ' }',
- '}}'
- ].join('')).render({})).to.be.a('number');
- });
- });
- describe('method config', function () {
- // reset
- afterEach(function () {
- laytpl.config({
- open: '{{',
- close: '}}'
- });
- });
- it('typeof', function () {
- expect(laytpl.config).to.be.a('function');
- });
- it('param is empty', function () {
- expect(laytpl.config()).to.be.undefined;
- });
- it('set open', function () {
- laytpl.config({
- open: '<%'
- });
- var result = laytpl([
- '<%# var name = "laytpl"; }}',
- '你好, <% name }}, <% d.date }}'
- ].join('')).render({
- date: '2017'
- });
- expect(result).to.equal('你好, laytpl, 2017');
- });
- it('set open and close', function () {
- laytpl.config({
- open: '<%',
- close: '%>'
- });
- var result = laytpl([
- '<%# var name = "laytpl"; %>',
- '你好, <% name %>, <% d.date %>'
- ].join('')).render({
- date: '2017'
- });
- expect(result).to.equal('你好, laytpl, 2017');
- });
- });
- describe('js expression', function () {
- it('var', function () {
- var result = laytpl('{{# var type = 1; }}{{ type }}{{ d.name }}').render({
- name: 2
- });
- expect(result).to.equal('12');
- });
- it('function', function () {
- var result = laytpl('{{# var fn = function () {return "ok"}; }}{{ fn() }}').render({});
- expect(result).to.equal('ok');
- });
- it('for', function () {
- var result = laytpl([
- '{{# ',
- ' var fn = function () {',
- ' var num = 0;',
- ' for (var i = 0; i < 10;i++) {',
- ' num += 1;',
- ' }',
- ' return num',
- ' };',
- '}}',
- '{{# ',
- ' var name = "laytpl";',
- '}}',
- '你好, {{ name }}, {{ d.name }}, {{ fn() }}'
- ].join('')).render({
- name: 'ok'
- });
- expect(result).to.equal('你好, laytpl, ok, 10');
- });
- it('if else', function () {
- var result;
- result = laytpl([
- '{{# ',
- ' if (true) {',
- ' return true;',
- ' }',
- ' else {',
- ' return false',
- ' }',
- '}}'
- ].join('')).render({});
- expect(result).to.be.true;
- result = laytpl([
- '{{# ',
- ' if (!true) {',
- ' return true;',
- ' }',
- ' else {',
- ' return false',
- ' }',
- '}}'
- ].join('')).render({});
- expect(result).to.be.false;
- });
- });
- describe('parse error', function () {
- it('error var', function () {
- var result = laytpl('{{ data.xxoo }}').render({});
- expect(result).to.have.string('data');
- expect(result).to.have.string('ReferenceError');
- expect(result).to.have.string('Laytpl Error');
- });
- it('error expression', function () {
- var result = laytpl('{{# var xxoo = ; }}').render({});
- expect(result).to.have.string('Laytpl Error');
- expect(result).to.have.string('SyntaxError');
- });
- });
- });
|