Skip to content

Commit 2d6e04b

Browse files
committed
test: simplify some test cases
1 parent 8ae155b commit 2d6e04b

File tree

1 file changed

+48
-167
lines changed

1 file changed

+48
-167
lines changed

tests/lib/rules/require-computed-property-dependencies.js

Lines changed: 48 additions & 167 deletions
Original file line numberDiff line numberDiff line change
@@ -5,84 +5,41 @@ const RuleTester = require('eslint').RuleTester;
55

66
const { ERROR_MESSAGE_NON_STRING_VALUE } = rule;
77

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+
});
916
ruleTester.run('require-computed-property-dependencies', rule, {
1017
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() {});",
2021
// 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()",
2623
// 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'); });",
3726
// 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'); });",
4328
// Without `Ember.`:
44-
`
45-
computed('name', function() {
46-
return this.get('name');
47-
});
48-
`,
29+
"computed('name', function() {return this.get('name');});",
4930
`
5031
Ember.computed('[email protected]', function() {
5132
return this.get('list').map(function(item) {
5233
return item.get('foo');
5334
});
5435
});
5536
`,
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'); });",
8643
// Array inside braces:
8744
`
8845
Ember.computed('article.{comments.[],title}', function() {
@@ -102,32 +59,16 @@ ruleTester.run('require-computed-property-dependencies', rule, {
10259
});
10360
`,
10461
// 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')",
11364
// Dynamic key:
114-
`
115-
Ember.computed(dynamic, function() {});
116-
`,
65+
'Ember.computed(dynamic, function() {});',
11766
// Dynamic key:
118-
{
119-
code: `
120-
Ember.computed(...PROPERTIES, function() {});
121-
`,
122-
parserOptions: { ecmaVersion: 6, sourceType: 'module' },
123-
},
67+
'Ember.computed(...PROPERTIES, function() {});',
12468
// Incorrect usage that should be ignored:
125-
`
126-
Ember.computed(123)
127-
`,
69+
'Ember.computed(123)',
12870
// Should ignore injected service names:
129-
{
130-
code: `
71+
`
13172
import Component from '@ember/component';
13273
import { inject as service } from '@ember/service';
13374
Component.extend({
@@ -140,57 +81,32 @@ ruleTester.run('require-computed-property-dependencies', rule, {
14081
otherService: service() // Service injection coming after computed property.
14182
});
14283
`,
143-
parserOptions: { ecmaVersion: 6, sourceType: 'module' },
144-
},
14584
// Should ignore the left side of an assignment.
85+
"Ember.computed('right', function() { this.left = this.right; })",
86+
// Explicit getter function:
14687
`
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) {}
14993
})
15094
`,
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-
},
16395
// 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+
`,
178102
// 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+
`,
194110
],
195111
invalid: [
196112
// Dynamic key:
@@ -209,7 +125,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
209125
{
210126
code: 'Ember.computed(...PROPERTIES, function() {});',
211127
output: null,
212-
parserOptions: { ecmaVersion: 6, sourceType: 'module' },
213128
options: [{ allowDynamicKeys: false }],
214129
errors: [
215130
{
@@ -239,7 +154,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
239154
code: 'Ember.computed(dynamic, ...moreDynamic, function() { return this.undeclared; });',
240155
output:
241156
"Ember.computed(dynamic, ...moreDynamic, 'undeclared', function() { return this.undeclared; });",
242-
parserOptions: { ecmaVersion: 6, sourceType: 'module' },
243157
options: [{ allowDynamicKeys: false }],
244158
errors: [
245159
{
@@ -720,7 +634,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
720634
});
721635
`,
722636
options: [{ requireServiceNames: true }],
723-
parserOptions: { ecmaVersion: 6, sourceType: 'module' },
724637
output: `
725638
import Component from '@ember/component';
726639
import { inject as service } from '@ember/service';
@@ -770,7 +683,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
770683
})
771684
});
772685
`,
773-
parserOptions: { ecmaVersion: 6, sourceType: 'module' },
774686
output: `
775687
import Component from '@ember/component';
776688
import { inject as service } from '@ember/service';
@@ -846,7 +758,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
846758
set(key, value) {}
847759
})
848760
`,
849-
parserOptions: { ecmaVersion: 6, sourceType: 'module' },
850761
errors: [
851762
{
852763
message: 'Use of undeclared dependencies in computed property: lastName',
@@ -884,12 +795,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
884795
type: 'CallExpression',
885796
},
886797
],
887-
parser: require.resolve('babel-eslint'),
888-
parserOptions: {
889-
ecmaVersion: 6,
890-
sourceType: 'module',
891-
ecmaFeatures: { legacyDecorators: true },
892-
},
893798
},
894799
// Decorator with no parens:
895800
{
@@ -911,12 +816,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
911816
type: 'Identifier',
912817
},
913818
],
914-
parser: require.resolve('babel-eslint'),
915-
parserOptions: {
916-
ecmaVersion: 6,
917-
sourceType: 'module',
918-
ecmaFeatures: { legacyDecorators: true },
919-
},
920819
},
921820
// Decorator with no args:
922821
{
@@ -938,12 +837,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
938837
type: 'CallExpression',
939838
},
940839
],
941-
parser: require.resolve('babel-eslint'),
942-
parserOptions: {
943-
ecmaVersion: 6,
944-
sourceType: 'module',
945-
ecmaFeatures: { legacyDecorators: true },
946-
},
947840
},
948841
// Decorator with arg:
949842
{
@@ -965,12 +858,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
965858
type: 'CallExpression',
966859
},
967860
],
968-
parser: require.resolve('babel-eslint'),
969-
parserOptions: {
970-
ecmaVersion: 6,
971-
sourceType: 'module',
972-
ecmaFeatures: { legacyDecorators: true },
973-
},
974861
},
975862
// Decorator with two arg:
976863
{
@@ -992,12 +879,6 @@ ruleTester.run('require-computed-property-dependencies', rule, {
992879
type: 'CallExpression',
993880
},
994881
],
995-
parser: require.resolve('babel-eslint'),
996-
parserOptions: {
997-
ecmaVersion: 6,
998-
sourceType: 'module',
999-
ecmaFeatures: { legacyDecorators: true },
1000-
},
1001882
},
1002883
],
1003884
});

0 commit comments

Comments
 (0)