@alicd/templateparser
Version:
walle template parser
67 lines (60 loc) • 2.44 kB
JavaScript
import TemplateParser from '../dist/TemplateParser';
describe('sum', () => {
it('comment', () => {
var rawHtml = '<!-- var hello = 1; var foo = 123; --> <div>111</div>';
var parser = new TemplateParser({ comment: true });
parser.parseTemplate(rawHtml);
expect(parser.domJSON).toBeDefined();
});
it('x-if', () => {
var rawHtml =
'<div x-if={this.state.test === 1 }>x-if</div><div x-elseif={this.state.test === 2 }>x-if</div><div x-else={true }>x-if</div>';
var parser = new TemplateParser({ comment: true });
parser.parseTemplate(rawHtml);
expect(parser.domJSON).toBeDefined();
});
it('x-for', () => {
var rawHtml =
'<div x-for={(item, index) in this.state.list }>{ index + ":" +item }</div>';
var parser = new TemplateParser({ comment: true });
parser.parseTemplate(rawHtml);
expect(parser.domJSON).toBeDefined();
});
it('template parser render', () => {
var rawHtml =
'<div style={{ background:"#F00", color: "#00F", height:"50px" }} ><div x-for={(item, index) in this.state.list }>{ index + ":" +item }</div></div>';
var parser = new TemplateParser({ comment: true });
parser.render(rawHtml, {});
expect(parser.domJSON).toBeDefined();
expect(parser.logicJSON).toBeDefined();
});
it('$ 、#', () => {
var rawHtml =
'<div title="$title"><button onClick={#handleClick}></button></div>';
var parser = new TemplateParser({ comment: true });
parser.parseTemplate(rawHtml);
expect(parser.domJSON).toBeDefined();
});
it('arrow functions', () => {
var rawHtml = '<button onClick={(e)=>{console.log(e)}}>button</button>';
var parser = new TemplateParser({ comment: true });
parser.render(rawHtml, {});
expect(parser.domJSON).toBeDefined();
expect(parser.logicJSON).toBeDefined();
});
it('x-block, x-bind', () => {
var rawHtml = '<x-block><input x-bind={this.state.bind} /></x-block>';
var parser = new TemplateParser({ comment: true });
parser.render(rawHtml, {});
expect(parser.domJSON).toBeDefined();
expect(parser.logicJSON).toBeDefined();
});
it('spread attribute', () => {
var rawHtml =
'<!-- spread attribute --><div {...this.state.layout}>spread attribute</div>';
var parser = new TemplateParser({ comment: false });
parser.render(rawHtml, {});
expect(parser.domJSON).toBeDefined();
expect(parser.logicJSON).toBeDefined();
});
});