@@ -32,6 +32,25 @@ ruleTester.run('template-no-at-ember-render-modifiers', rule, {
3232 '<template>{{did-insert}}</template>' ,
3333 '<template>{{did-update}}</template>' ,
3434 '<template>{{will-destroy}}</template>' ,
35+
36+ // In GJS/GTS, kebab identifiers cannot be imports; these are bare paths
37+ // that happen to share the canonical name but are not the render modifier.
38+ {
39+ filename : 'test.gjs' ,
40+ code : '<template><div {{did-insert this.setup}}></div></template>' ,
41+ } ,
42+ // Unrelated imports with matching local names should not match
43+ {
44+ filename : 'test.gjs' ,
45+ code : `import didInsert from './my-lib';
46+ <template><div {{didInsert this.setup}}></div></template>` ,
47+ } ,
48+ // Root-package import of an unknown named export is not a render modifier
49+ {
50+ filename : 'test.gjs' ,
51+ code : `import { somethingElse } from '@ember/render-modifiers';
52+ <template><div {{somethingElse this.setup}}></div></template>` ,
53+ } ,
3554 ] ,
3655
3756 invalid : [
@@ -87,6 +106,68 @@ ruleTester.run('template-no-at-ember-render-modifiers', rule, {
87106 output : null ,
88107 errors : [ { messageId : 'noRenderModifier' } ] ,
89108 } ,
109+
110+ // GJS/GTS import-based forms — local name is user-chosen
111+ {
112+ filename : 'test.gjs' ,
113+ code : `import didInsert from '@ember/render-modifiers/modifiers/did-insert';
114+ <template><div {{didInsert this.setup}}></div></template>` ,
115+ output : null ,
116+ errors : [ { messageId : 'noRenderModifier' } ] ,
117+ } ,
118+ {
119+ filename : 'test.gjs' ,
120+ code : `import didUpdate from '@ember/render-modifiers/modifiers/did-update';
121+ <template><div {{didUpdate this.update}}></div></template>` ,
122+ output : null ,
123+ errors : [ { messageId : 'noRenderModifier' } ] ,
124+ } ,
125+ {
126+ filename : 'test.gjs' ,
127+ code : `import willDestroy from '@ember/render-modifiers/modifiers/will-destroy';
128+ <template><div {{willDestroy this.cleanup}}></div></template>` ,
129+ output : null ,
130+ errors : [ { messageId : 'noRenderModifier' } ] ,
131+ } ,
132+ // Renamed default import still flags
133+ {
134+ filename : 'test.gjs' ,
135+ code : `import myInsert from '@ember/render-modifiers/modifiers/did-insert';
136+ <template><div {{myInsert this.setup}}></div></template>` ,
137+ output : null ,
138+ errors : [ { messageId : 'noRenderModifier' } ] ,
139+ } ,
140+
141+ // Root-package named imports — all three modifiers
142+ {
143+ filename : 'test.gjs' ,
144+ code : `import { didInsert } from '@ember/render-modifiers';
145+ <template><div {{didInsert this.setup}}></div></template>` ,
146+ output : null ,
147+ errors : [ { messageId : 'noRenderModifier' } ] ,
148+ } ,
149+ {
150+ filename : 'test.gjs' ,
151+ code : `import { didUpdate } from '@ember/render-modifiers';
152+ <template><div {{didUpdate this.update}}></div></template>` ,
153+ output : null ,
154+ errors : [ { messageId : 'noRenderModifier' } ] ,
155+ } ,
156+ {
157+ filename : 'test.gjs' ,
158+ code : `import { willDestroy } from '@ember/render-modifiers';
159+ <template><div {{willDestroy this.cleanup}}></div></template>` ,
160+ output : null ,
161+ errors : [ { messageId : 'noRenderModifier' } ] ,
162+ } ,
163+ // Aliased root-package import still flags
164+ {
165+ filename : 'test.gjs' ,
166+ code : `import { didInsert as myModifier } from '@ember/render-modifiers';
167+ <template><div {{myModifier this.setup}}></div></template>` ,
168+ output : null ,
169+ errors : [ { messageId : 'noRenderModifier' } ] ,
170+ } ,
90171 ] ,
91172} ) ;
92173
0 commit comments