@@ -5,84 +5,41 @@ const RuleTester = require('eslint').RuleTester;
5
5
6
6
const { ERROR_MESSAGE_NON_STRING_VALUE } = rule ;
7
7
8
- const ruleTester = new RuleTester ( ) ;
8
+ const ruleTester = new RuleTester ( {
9
+ parser : require . resolve ( 'babel-eslint' ) ,
10
+ parserOptions : {
11
+ ecmaVersion : 6 ,
12
+ sourceType : 'module' ,
13
+ ecmaFeatures : { legacyDecorators : true } ,
14
+ } ,
15
+ } ) ;
9
16
ruleTester . run ( 'require-computed-property-dependencies' , rule , {
10
17
valid : [
11
- `
12
- Ember.computed();
13
- ` ,
14
- `
15
- Ember.computed(function() {});
16
- ` ,
17
- `
18
- Ember.computed('unused', function() {});
19
- ` ,
18
+ 'Ember.computed();' ,
19
+ 'Ember.computed(function() {});' ,
20
+ "Ember.computed('unused', function() {});" ,
20
21
// Volatile:
21
- `
22
- Ember.computed('name', function() {
23
- return this.get('name');
24
- }).volatile()
25
- ` ,
22
+ "Ember.computed('name', function() { return this.get('name'); }).volatile()" ,
26
23
// ES5 getter usage:
27
- `
28
- Ember.computed('name', function() {
29
- return this.name;
30
- });
31
- ` ,
32
- `
33
- Ember.computed('name', function() {
34
- return this.get('name');
35
- });
36
- ` ,
24
+ "Ember.computed('name', function() { return this.name; });" ,
25
+ "Ember.computed('name', function() { return this.get('name'); });" ,
37
26
// String concatenation in dependent key:
38
- `
39
- Ember.computed('na' + 'me', function() {
40
- return this.get('name');
41
- });
42
- ` ,
27
+ " Ember.computed('na' + 'me', function() { return this.get('name'); });" ,
43
28
// Without `Ember.`:
44
- `
45
- computed('name', function() {
46
- return this.get('name');
47
- });
48
- ` ,
29
+ "computed('name', function() {return this.get('name');});" ,
49
30
`
50
31
Ember.computed('[email protected] ', function() {
51
32
return this.get('list').map(function(item) {
52
33
return item.get('foo');
53
34
});
54
35
});
55
36
` ,
56
- `
57
- Ember.computed('list.[]', function() {
58
- return this.get('list.length');
59
- });
60
- ` ,
61
- `
62
- Ember.computed('deeper.than.needed.but.okay', function() {
63
- return this.get('deeper');
64
- });
65
- ` ,
66
- `
67
- Ember.computed('array.[]', function() {
68
- return this.get('array.firstObject');
69
- });
70
- ` ,
71
- `
72
- Ember.computed('array.[]', function() {
73
- return this.get('array.lastObject');
74
- });
75
- ` ,
76
- `
77
- Ember.computed('foo.{bar,baz}', function() {
78
- return this.get('foo.bar') + this.get('foo.baz');
79
- });
80
- ` ,
81
- `
82
- Ember.computed('foo.@each.{bar,baz}', function() {
83
- return this.get('foo').mapBy('bar') + this.get('foo').mapBy('bar');
84
- });
85
- ` ,
37
+ "Ember.computed('list.[]', function() { return this.get('list.length');});" ,
38
+ "Ember.computed('deeper.than.needed.but.okay', function() { return this.get('deeper'); });" ,
39
+ "Ember.computed('array.[]', function() { return this.get('array.firstObject'); });" ,
40
+ "Ember.computed('array.[]', function() { return this.get('array.lastObject'); });" ,
41
+ "Ember.computed('foo.{bar,baz}', function() { return this.get('foo.bar') + this.get('foo.baz'); });" ,
42
+ "Ember.computed('foo.@each.{bar,baz}', function() { return this.get('foo').mapBy('bar') + this.get('foo').mapBy('bar'); });" ,
86
43
// Array inside braces:
87
44
`
88
45
Ember.computed('article.{comments.[],title}', function() {
@@ -102,32 +59,16 @@ ruleTester.run('require-computed-property-dependencies', rule, {
102
59
});
103
60
` ,
104
61
// Computed macro that should be ignored:
105
- `
106
- Ember.computed.someMacro(function() {
107
- return this.x;
108
- })
109
- ` ,
110
- `
111
- Ember.computed.someMacro('test')
112
- ` ,
62
+ 'Ember.computed.someMacro(function() { return this.x; })' ,
63
+ "Ember.computed.someMacro('test')" ,
113
64
// Dynamic key:
114
- `
115
- Ember.computed(dynamic, function() {});
116
- ` ,
65
+ 'Ember.computed(dynamic, function() {});' ,
117
66
// Dynamic key:
118
- {
119
- code : `
120
- Ember.computed(...PROPERTIES, function() {});
121
- ` ,
122
- parserOptions : { ecmaVersion : 6 , sourceType : 'module' } ,
123
- } ,
67
+ 'Ember.computed(...PROPERTIES, function() {});' ,
124
68
// Incorrect usage that should be ignored:
125
- `
126
- Ember.computed(123)
127
- ` ,
69
+ 'Ember.computed(123)' ,
128
70
// Should ignore injected service names:
129
- {
130
- code : `
71
+ `
131
72
import Component from '@ember/component';
132
73
import { inject as service } from '@ember/service';
133
74
Component.extend({
@@ -140,57 +81,32 @@ ruleTester.run('require-computed-property-dependencies', rule, {
140
81
otherService: service() // Service injection coming after computed property.
141
82
});
142
83
` ,
143
- parserOptions : { ecmaVersion : 6 , sourceType : 'module' } ,
144
- } ,
145
84
// Should ignore the left side of an assignment.
85
+ "Ember.computed('right', function() { this.left = this.right; })" ,
86
+ // Explicit getter function:
146
87
`
147
- Ember.computed('right', function() {
148
- this.left = this.right;
88
+ computed('firstName', 'lastName', {
89
+ get() {
90
+ return this.firstName + ' ' + this.lastName;
91
+ },
92
+ set(key, value) {}
149
93
})
150
94
` ,
151
- // Explicit getter function:
152
- {
153
- code : `
154
- computed('firstName', 'lastName', {
155
- get() {
156
- return this.firstName + ' ' + this.lastName;
157
- },
158
- set(key, value) {}
159
- })
160
- ` ,
161
- parserOptions : { ecmaVersion : 6 , sourceType : 'module' } ,
162
- } ,
163
95
// Decorator:
164
- {
165
- code : `
166
- class Test {
167
- @computed('first', 'last')
168
- get fullName() { return this.first + ' ' + this.last; }
169
- }
170
- ` ,
171
- parser : require . resolve ( 'babel-eslint' ) ,
172
- parserOptions : {
173
- ecmaVersion : 6 ,
174
- sourceType : 'module' ,
175
- ecmaFeatures : { legacyDecorators : true } ,
176
- } ,
177
- } ,
96
+ `
97
+ class Test {
98
+ @computed('first', 'last')
99
+ get fullName() { return this.first + ' ' + this.last; }
100
+ }
101
+ ` ,
178
102
// Decorator:
179
- {
180
- code : `
181
- class Test {
182
- @service i18n; // Service names not required as dependent keys by default.
183
- @computed('first', 'last')
184
- get fullName() { return this.i18n.t(this.first + ' ' + this.last); }
185
- }
186
- ` ,
187
- parser : require . resolve ( 'babel-eslint' ) ,
188
- parserOptions : {
189
- ecmaVersion : 6 ,
190
- sourceType : 'module' ,
191
- ecmaFeatures : { legacyDecorators : true } ,
192
- } ,
193
- } ,
103
+ `
104
+ class Test {
105
+ @service i18n; // Service names not required as dependent keys by default.
106
+ @computed('first', 'last')
107
+ get fullName() { return this.i18n.t(this.first + ' ' + this.last); }
108
+ }
109
+ ` ,
194
110
] ,
195
111
invalid : [
196
112
// Dynamic key:
@@ -209,7 +125,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
209
125
{
210
126
code : 'Ember.computed(...PROPERTIES, function() {});' ,
211
127
output : null ,
212
- parserOptions : { ecmaVersion : 6 , sourceType : 'module' } ,
213
128
options : [ { allowDynamicKeys : false } ] ,
214
129
errors : [
215
130
{
@@ -239,7 +154,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
239
154
code : 'Ember.computed(dynamic, ...moreDynamic, function() { return this.undeclared; });' ,
240
155
output :
241
156
"Ember.computed(dynamic, ...moreDynamic, 'undeclared', function() { return this.undeclared; });" ,
242
- parserOptions : { ecmaVersion : 6 , sourceType : 'module' } ,
243
157
options : [ { allowDynamicKeys : false } ] ,
244
158
errors : [
245
159
{
@@ -720,7 +634,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
720
634
});
721
635
` ,
722
636
options : [ { requireServiceNames : true } ] ,
723
- parserOptions : { ecmaVersion : 6 , sourceType : 'module' } ,
724
637
output : `
725
638
import Component from '@ember/component';
726
639
import { inject as service } from '@ember/service';
@@ -770,7 +683,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
770
683
})
771
684
});
772
685
` ,
773
- parserOptions : { ecmaVersion : 6 , sourceType : 'module' } ,
774
686
output : `
775
687
import Component from '@ember/component';
776
688
import { inject as service } from '@ember/service';
@@ -846,7 +758,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
846
758
set(key, value) {}
847
759
})
848
760
` ,
849
- parserOptions : { ecmaVersion : 6 , sourceType : 'module' } ,
850
761
errors : [
851
762
{
852
763
message : 'Use of undeclared dependencies in computed property: lastName' ,
@@ -884,12 +795,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
884
795
type : 'CallExpression' ,
885
796
} ,
886
797
] ,
887
- parser : require . resolve ( 'babel-eslint' ) ,
888
- parserOptions : {
889
- ecmaVersion : 6 ,
890
- sourceType : 'module' ,
891
- ecmaFeatures : { legacyDecorators : true } ,
892
- } ,
893
798
} ,
894
799
// Decorator with no parens:
895
800
{
@@ -911,12 +816,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
911
816
type : 'Identifier' ,
912
817
} ,
913
818
] ,
914
- parser : require . resolve ( 'babel-eslint' ) ,
915
- parserOptions : {
916
- ecmaVersion : 6 ,
917
- sourceType : 'module' ,
918
- ecmaFeatures : { legacyDecorators : true } ,
919
- } ,
920
819
} ,
921
820
// Decorator with no args:
922
821
{
@@ -938,12 +837,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
938
837
type : 'CallExpression' ,
939
838
} ,
940
839
] ,
941
- parser : require . resolve ( 'babel-eslint' ) ,
942
- parserOptions : {
943
- ecmaVersion : 6 ,
944
- sourceType : 'module' ,
945
- ecmaFeatures : { legacyDecorators : true } ,
946
- } ,
947
840
} ,
948
841
// Decorator with arg:
949
842
{
@@ -965,12 +858,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
965
858
type : 'CallExpression' ,
966
859
} ,
967
860
] ,
968
- parser : require . resolve ( 'babel-eslint' ) ,
969
- parserOptions : {
970
- ecmaVersion : 6 ,
971
- sourceType : 'module' ,
972
- ecmaFeatures : { legacyDecorators : true } ,
973
- } ,
974
861
} ,
975
862
// Decorator with two arg:
976
863
{
@@ -992,12 +879,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
992
879
type : 'CallExpression' ,
993
880
} ,
994
881
] ,
995
- parser : require . resolve ( 'babel-eslint' ) ,
996
- parserOptions : {
997
- ecmaVersion : 6 ,
998
- sourceType : 'module' ,
999
- ecmaFeatures : { legacyDecorators : true } ,
1000
- } ,
1001
882
} ,
1002
883
] ,
1003
884
} ) ;
0 commit comments