@@ -32,6 +32,20 @@ ruleTester.run('template-no-element-event-actions', rule, {
3232 ` ,
3333 output : null ,
3434 } ,
35+ // requireActionHelper: true — non-action mustache is not flagged
36+ {
37+ filename : 'my-component.gjs' ,
38+ code : '<template><button type="button" onclick={{this.myAction}}></button></template>' ,
39+ options : [ { requireActionHelper : true } ] ,
40+ output : null ,
41+ } ,
42+ // requireActionHelper: false — string event handler is not flagged
43+ {
44+ filename : 'my-component.gjs' ,
45+ code : '<template><button type="button" onclick="myFunction()"></button></template>' ,
46+ options : [ { requireActionHelper : false } ] ,
47+ output : null ,
48+ } ,
3549 ] ,
3650
3751 invalid : [
@@ -69,5 +83,69 @@ ruleTester.run('template-no-element-event-actions', rule, {
6983 } ,
7084 ] ,
7185 } ,
86+ // requireActionHelper: false — any mustache on event attribute is flagged
87+ {
88+ filename : 'my-component.gjs' ,
89+ code : '<template><button type="button" onclick={{this.myAction}}></button></template>' ,
90+ options : [ { requireActionHelper : false } ] ,
91+ output : null ,
92+ errors : [ { messageId : 'noElementEventActions' } ] ,
93+ } ,
94+ // requireActionHelper: true — only {{action ...}} mustaches are flagged
95+ {
96+ filename : 'my-component.gjs' ,
97+ code : '<template><button onclick={{action "myAction"}}></button></template>' ,
98+ options : [ { requireActionHelper : true } ] ,
99+ output : null ,
100+ errors : [ { messageId : 'noElementEventActions' } ] ,
101+ } ,
102+ ] ,
103+ } ) ;
104+
105+ const hbsRuleTester = new RuleTester ( {
106+ parser : require . resolve ( 'ember-eslint-parser/hbs' ) ,
107+ parserOptions : {
108+ ecmaVersion : 2022 ,
109+ sourceType : 'module' ,
110+ } ,
111+ } ) ;
112+
113+ hbsRuleTester . run ( 'template-no-element-event-actions (hbs)' , rule , {
114+ valid : [
115+ '<button></button>' ,
116+ '<button type="button" onclick="myFunction()"></button>' ,
117+ '<button type="button" {{on "click" this.handleClick}}></button>' ,
118+ {
119+ code : '<button type="button" onclick={{this.myAction}}></button>' ,
120+ options : [ { requireActionHelper : true } ] ,
121+ } ,
122+ {
123+ code : '<button type="button" onclick="myFunction()"></button>' ,
124+ options : [ { requireActionHelper : false } ] ,
125+ } ,
126+ ] ,
127+ invalid : [
128+ {
129+ code : '<button onclick={{action "myAction"}}></button>' ,
130+ output : null ,
131+ errors : [ { messageId : 'noElementEventActions' } ] ,
132+ } ,
133+ {
134+ code : '<button type="button" onclick={{this.myAction}}></button>' ,
135+ output : null ,
136+ errors : [ { messageId : 'noElementEventActions' } ] ,
137+ } ,
138+ {
139+ code : '<button type="button" onclick={{this.myAction}}></button>' ,
140+ options : [ { requireActionHelper : false } ] ,
141+ output : null ,
142+ errors : [ { messageId : 'noElementEventActions' } ] ,
143+ } ,
144+ {
145+ code : '<button onclick={{action "myAction"}}></button>' ,
146+ options : [ { requireActionHelper : true } ] ,
147+ output : null ,
148+ errors : [ { messageId : 'noElementEventActions' } ] ,
149+ } ,
72150 ] ,
73151} ) ;
0 commit comments