1- //------------------------------------------------------------------------------
2- // Requirements
3- //------------------------------------------------------------------------------
4-
51const rule = require ( '../../../lib/rules/template-no-yield-only' ) ;
62const RuleTester = require ( 'eslint' ) . RuleTester ;
73
8- //------------------------------------------------------------------------------
9- // Tests
10- //------------------------------------------------------------------------------
4+ const validHbs = [
5+ '{{yield (hash someProp=someValue)}}' ,
6+ '{{field}}' ,
7+ '{{#yield}}{{/yield}}' ,
8+ '<Yield/>' ,
9+ '<yield/>' ,
10+ ] ;
1111
12- const ruleTester = new RuleTester ( {
13- parser : require . resolve ( 'ember-eslint-parser' ) ,
14- parserOptions : { ecmaVersion : 2022 , sourceType : 'module' } ,
15- } ) ;
12+ const invalidHbs = [
13+ {
14+ code : '{{yield}}' ,
15+ output : null ,
16+ errors : [ { messageId : 'noYieldOnly' } ] ,
17+ } ,
18+ {
19+ code : ' {{yield}}' ,
20+ output : null ,
21+ errors : [ { messageId : 'noYieldOnly' } ] ,
22+ } ,
23+ {
24+ code : '\n {{yield}}\n ' ,
25+ output : null ,
26+ errors : [ { messageId : 'noYieldOnly' } ] ,
27+ } ,
28+ {
29+ code : '\n{{! some comment }} {{yield}}\n ' ,
30+ output : null ,
31+ errors : [ { messageId : 'noYieldOnly' } ] ,
32+ } ,
33+ ] ;
1634
17- ruleTester . run ( 'template-no-yield-only' , rule , {
18- valid : [
19- `<template>
20- <div>
21- {{yield}}
22- </div>
23- </template>` ,
24- `<template>
25- {{this.something}}
26- {{yield}}
27- </template>` ,
28- `<template>
29- <div></div>
30- </template>` ,
35+ function wrapTemplate ( entry ) {
36+ if ( typeof entry === 'string' ) {
37+ return `<template>${ entry } </template>` ;
38+ }
3139
32- '<template>{{yield (hash someProp=someValue)}}</template>' ,
33- '<template>{{field}}</template>' ,
34- ' <template>{{#yield}}{{/yield}} </template>' ,
35- ' <template><Yield/></ template>' ,
36- '<template><yield/></template>' ,
37- ] ,
40+ return {
41+ ... entry ,
42+ code : ` <template>${ entry . code } </template>` ,
43+ output : entry . output ? ` <template>${ entry . output } </ template>` : entry . output ,
44+ } ;
45+ }
3846
39- invalid : [
40- {
41- code : `<template>
42- {{yield}}
43- </template>` ,
44- output : null ,
45- errors : [
46- {
47- message :
48- 'Component should not only yield. Add wrapper element or additional functionality.' ,
49- type : 'GlimmerMustacheStatement' ,
50- } ,
51- ] ,
52- } ,
53- {
54- code : `<template>
55-
56- {{yield}}
57-
58- </template>` ,
59- output : null ,
60- errors : [
61- {
62- message :
63- 'Component should not only yield. Add wrapper element or additional functionality.' ,
64- type : 'GlimmerMustacheStatement' ,
65- } ,
66- ] ,
67- } ,
68- {
69- code : '<template>{{yield}}</template>' ,
70- output : null ,
71- errors : [
72- {
73- message :
74- 'Component should not only yield. Add wrapper element or additional functionality.' ,
75- type : 'GlimmerMustacheStatement' ,
76- } ,
77- ] ,
78- } ,
47+ const gjsRuleTester = new RuleTester ( {
48+ parser : require . resolve ( 'ember-eslint-parser' ) ,
49+ parserOptions : { ecmaVersion : 2022 , sourceType : 'module' } ,
50+ } ) ;
7951
80- {
81- code : '<template> {{yield}}</template>' ,
82- output : null ,
83- errors : [
84- {
85- message :
86- 'Component should not only yield. Add wrapper element or additional functionality.' ,
87- } ,
88- ] ,
89- } ,
90- {
91- code : `<template>
92- {{yield}}
93- </template>` ,
94- output : null ,
95- errors : [
96- {
97- message :
98- 'Component should not only yield. Add wrapper element or additional functionality.' ,
99- } ,
100- ] ,
101- } ,
102- {
103- code : `<template>
104- {{! some comment }} {{yield}}
105- </template>` ,
106- output : null ,
107- errors : [
108- {
109- message :
110- 'Component should not only yield. Add wrapper element or additional functionality.' ,
111- } ,
112- ] ,
113- } ,
114- ] ,
52+ gjsRuleTester . run ( 'template-no-yield-only' , rule , {
53+ valid : validHbs . filter ( ( entry ) => ! entry . includes ( 'template-lint-disable' ) ) . map ( wrapTemplate ) ,
54+ invalid : invalidHbs . map ( wrapTemplate ) ,
11555} ) ;
11656
11757const hbsRuleTester = new RuleTester ( {
@@ -123,33 +63,6 @@ const hbsRuleTester = new RuleTester({
12363} ) ;
12464
12565hbsRuleTester . run ( 'template-no-yield-only' , rule , {
126- valid : [
127- '{{yield (hash someProp=someValue)}}' ,
128- '{{field}}' ,
129- '{{#yield}}{{/yield}}' ,
130- '<Yield/>' ,
131- '<yield/>' ,
132- ] ,
133- invalid : [
134- {
135- code : '{{yield}}' ,
136- output : null ,
137- errors : [ { messageId : 'noYieldOnly' } ] ,
138- } ,
139- {
140- code : ' {{yield}}' ,
141- output : null ,
142- errors : [ { messageId : 'noYieldOnly' } ] ,
143- } ,
144- {
145- code : '\n {{yield}}\n ' ,
146- output : null ,
147- errors : [ { messageId : 'noYieldOnly' } ] ,
148- } ,
149- {
150- code : '\n{{! some comment }} {{yield}}\n ' ,
151- output : null ,
152- errors : [ { messageId : 'noYieldOnly' } ] ,
153- } ,
154- ] ,
66+ valid : validHbs ,
67+ invalid : invalidHbs ,
15568} ) ;
0 commit comments