els-addon-typed-templates
Version:
Ember Language Server Typed Templates
48 lines (43 loc) • 1.3 kB
text/typescript
import { getClassMeta } from './ast-parser';
import { extractRelationships } from './hbs-extractor';
function results(source) {
let items: any = extractRelationships(getClassMeta(source).nodes, '');
delete items.klass;
return items;
}
describe('getClassMeta', () => {
const cases = [
'{{1}}',
`{{"1"}}`,
`{{foo}}`,
`{{#let foo as |bar|}}{{bar}}{{/let}}`,
'<MyComponent as |ctx|> {{ctx.result}} </MyComponent>',
`{{foo this.bar baz=this.boo}}`,
'<input {{foo-bar this.baz a="1"}}>',
'<MyComponent as |ctx|>{{#let ctx.result as |bar|}}{{bar}}{{/let}}</MyComponent>',
];
cases.forEach((str)=>{
it(str, ()=>{
expect(results(str)).toMatchSnapshot();
});
});
});
describe('getClassMeta - complex case', () => {
expect(results(`
{{#each @model.tagsList as |tag|}}
<LinkTo
@query={{hash tags=tag}}
>
{{tag}}
</LinkTo>
{{/each}}
`)).toMatchSnapshot();
})
describe('getClassMeta - simple scope', () => {
expect(results(`{{#each @model.tagsList as |tag|}}
{{tag}}
{{/each}}`)).toMatchSnapshot();
})
describe('dash in path names', () => {
expect(results(`{{@classNames.ui-wrapper}}`)).toMatchSnapshot();
})