els-addon-typed-templates
Version:
Ember Language Server Typed Templates
49 lines (45 loc) • 1.74 kB
text/typescript
import { getClassMeta as classMeta, cleanComment } from './ast-parser';
function getClassMeta(src) {
return classMeta(src).nodes;
}
describe('getClassMeta', () => {
it('able to hande wrong hbs', ()=>{
expect(getClassMeta('\}}').length).toEqual(0);
});
it('able to handle pure mustache', ()=>{
expect(getClassMeta('{{foo}}').length).toEqual(1);
});
it('able to handle modifiers', ()=>{
expect(getClassMeta('<input {{foo}} >').length).toEqual(1);
});
it('able to handle blocks', ()=>{
expect(getClassMeta('{{#foo}}{{/foo}}').length).toEqual(1);
});
it('able to handle block components', ()=>{
expect(getClassMeta('<Boo as |a|></Boo>').length).toEqual(1);
});
it('able to handle pure mustache with subexp', ()=>{
expect(getClassMeta('{{foo (bar)}}')[0].length).toEqual(2);
});
it('able to handle modifiers with subexp', ()=>{
expect(getClassMeta('<input {{foo (bar)}} >')[0].length).toEqual(2);
});
it('able to handle blocks with subexp', ()=>{
expect(getClassMeta('{{#foo (bar)}}{{/foo}}')[0].length).toEqual(2);
});
});
describe('cleanComment', () => {
it('able to remove script tag from comment', ()=>{
expect(cleanComment(`<script>foo</script>`)).toEqual('foo');
});
it('able to remove js comment from line', ()=>{
expect(cleanComment(` @ts-ignore // foo`)).toEqual('@ts-ignore');
});
it('able to remove js comment from multi line', ()=>{
expect(cleanComment(`
@ts-ignore // foo
@ts-ignore // foo
@ts-ignore // foo
`)).toEqual(new Array(3).fill('@ts-ignore').join('\n'));
});
})