arc-templates
Version:
Fully powered JavaScript template engine with halfway-decent syntax.
62 lines (54 loc) • 2.52 kB
JavaScript
import assert from 'assert';
import Arc from '../index';
describe('javascript', () => {
describe('for block', () => {
it('evaluates content n times', () => {
const engine = new Arc();
return engine.evaluateString('<% for (let i = 0; i != 3; ++i) { %><div/><% } %>').then(result => {
assert.equal(result.content, '<div/><div/><div/>');
});
});
});
describe('for block with embedded document', () => {
it('evaluates content n times', () => {
const engine = new Arc();
return engine.evaluateString('<% for (let i = 0; i != 3; ++i) { <: <div/> :> } %>').then(result => {
assert.equal(result.content, ' <div/> <div/> <div/> ');
});
});
it('defines local variable usable in expressions', () => {
const engine = new Arc();
return engine.evaluateString('<% for (let i = 0; i != 3; ++i) { <:<div${i}/>:> } %>').then(result => {
assert.equal(result.content, '<div0/><div1/><div2/>');
});
});
it('local variable overwrites builtin locals', () => {
const engine = new Arc();
return engine.evaluateString('<% for (let raw = 0; raw != 3; ++raw) { <:<div${raw}/>:> } %>').then(result => {
assert.equal(result.content, '<div0/><div1/><div2/>');
});
});
it('local variable overwrites data', () => {
const engine = new Arc();
return engine.evaluateString('<% for (let val = 0; val != 3; ++val) { <:<div${val}/>:> } %>', { val: 13 }).then(result => {
assert.equal(result.content, '<div0/><div1/><div2/>');
});
});
});
describe('for-of block', () => {
it('evaluates content', () => {
const engine = new Arc();
return engine.evaluateString('<% for (let e of array) { <: <div>${e}</div> :> } %>', { array: ['a', 'b', 13]}).then(result => {
assert.equal(result.content, ' <div>a</div> <div>b</div> <div>13</div> ');
});
});
});
describe('variable declaration', () => {
it('is available in later expressions', () => {
const engine = new Arc();
return engine.evaluateString('<% const x = 13; %>${x}').then(result => {
assert.equal(result.content, '13');
});
});
});
});