@@ -10,7 +10,13 @@ const RuleTester = require('eslint').RuleTester;
1010// ------------------------------------------------------------------------------
1111
1212const eslintTester = new RuleTester ( {
13- parserOptions : { ecmaVersion : 2022 , sourceType : 'module' } ,
13+ parserOptions : {
14+ ecmaVersion : 2022 ,
15+ sourceType : 'module' ,
16+ babelOptions : {
17+ configFile : require . resolve ( '../../../.babelrc' ) ,
18+ } ,
19+ } ,
1420 parser : require . resolve ( '@babel/eslint-parser' ) ,
1521} ) ;
1622
@@ -146,6 +152,51 @@ eslintTester.run('order-in-controllers', rule, {
146152 ] ,
147153 parserOptions : { ecmaVersion : 2022 , sourceType : 'module' } ,
148154 } ,
155+ `import Controller from '@ember/controller';
156+ import { inject as service } from '@ember/service';
157+ export default class UserController extends Controller {
158+ @service currentUser;
159+ queryParams = [];
160+ customProp = 'test';
161+ actions() {}
162+ }` ,
163+ {
164+ code : `import Controller from '@ember/controller';
165+ import { inject as service } from '@ember/service';
166+ export default class UserController extends Controller {
167+ queryParams = [];
168+ @service currentUser;
169+ actions() {}
170+ }` ,
171+ options : [
172+ {
173+ order : [ 'query-params' , 'service' , 'single-line-function' ] ,
174+ } ,
175+ ] ,
176+ } ,
177+ {
178+ code : `import Controller from '@ember/controller';
179+ import { inject as service } from '@ember/service';
180+ export default class UserController extends Controller {
181+ @service currentUser;
182+ queryParams = [];
183+ customProp = 'test';
184+ }` ,
185+ options : [
186+ {
187+ order : [ [ 'service' , 'query-params' ] , 'property' ] ,
188+ } ,
189+ ] ,
190+ } ,
191+ // spacing/indentation is intentionally not validated by this rule;
192+ // only member ordering should matter.
193+ `import Controller from '@ember/controller';
194+ import { inject as service } from '@ember/service';
195+ export default class UserController extends Controller {
196+ @service currentUser;
197+ queryParams = [];
198+ customProp = 'test';
199+ }` ,
149200 ] ,
150201 invalid : [
151202 {
@@ -524,5 +575,76 @@ eslintTester.run('order-in-controllers', rule, {
524575 } ,
525576 ] ,
526577 } ,
578+ {
579+ code : `import Controller from '@ember/controller';
580+ import { inject as service } from '@ember/service';
581+ export default class UserController extends Controller {
582+ queryParams = [];
583+ @service currentUser;
584+ customProp = 'test';
585+ }` ,
586+ output : `import Controller from '@ember/controller';
587+ import { inject as service } from '@ember/service';
588+ export default class UserController extends Controller {
589+ @service currentUser;
590+ queryParams = [];
591+ customProp = 'test';
592+ }` ,
593+ errors : [
594+ {
595+ message :
596+ 'The "currentUser" service injection should be above the "queryParams" property on line 4' ,
597+ line : 5 ,
598+ } ,
599+ ] ,
600+ } ,
601+ {
602+ code : `import Controller from '@ember/controller';
603+ export default class UserController extends Controller {
604+ customProp = 'test';
605+ queryParams = [];
606+ actions() {}
607+ }` ,
608+ output : `import Controller from '@ember/controller';
609+ export default class UserController extends Controller {
610+ queryParams = [];
611+ customProp = 'test';
612+ actions() {}
613+ }` ,
614+ errors : [
615+ {
616+ message : 'The "queryParams" property should be above the "customProp" property on line 3' ,
617+ line : 4 ,
618+ } ,
619+ ] ,
620+ } ,
621+ {
622+ code : `import Controller from '@ember/controller';
623+ import { inject as service } from '@ember/service';
624+ export default class UserController extends Controller {
625+ @service currentUser;
626+ queryParams = [];
627+ actions() {}
628+ }` ,
629+ output : `import Controller from '@ember/controller';
630+ import { inject as service } from '@ember/service';
631+ export default class UserController extends Controller {
632+ queryParams = [];
633+ @service currentUser;
634+ actions() {}
635+ }` ,
636+ options : [
637+ {
638+ order : [ 'query-params' , 'service' , 'single-line-function' ] ,
639+ } ,
640+ ] ,
641+ errors : [
642+ {
643+ message :
644+ 'The "queryParams" property should be above the "currentUser" service injection on line 4' ,
645+ line : 5 ,
646+ } ,
647+ ] ,
648+ } ,
527649 ] ,
528650} ) ;
0 commit comments