1
1
const RuleTester = require ( 'eslint' ) . RuleTester
2
2
const rule = require ( '../../../lib/rules/no-invalid-transition-props' )
3
+ const { withVersion } = require ( '../utils/settings' )
3
4
4
5
const tests = {
5
6
valid : [
6
- `
7
+ withVersion (
8
+ 4 ,
9
+ `
7
10
createMachine({
8
11
states: {
9
12
idle: {
@@ -18,15 +21,57 @@ const tests = {
18
21
},
19
22
},
20
23
},
24
+ ready: {
25
+ on: [
26
+ { event: "*", target: "elsewhere", internal: false },
27
+ { event: "SOME_EVENT", target: "here", cond: () => true },
28
+ ],
29
+ },
21
30
},
22
31
on: {
23
32
EVENT: [{
33
+ cond: () => true,
24
34
target: 'active',
25
35
}],
26
36
},
27
37
})
28
- ` ,
29
38
`
39
+ ) ,
40
+ withVersion (
41
+ 5 ,
42
+ `
43
+ createMachine({
44
+ states: {
45
+ idle: {
46
+ on: {
47
+ EVENT: {
48
+ guard: () => true,
49
+ target: 'active',
50
+ actions: [],
51
+ reenter: true,
52
+ description: 'some text',
53
+ },
54
+ },
55
+ },
56
+ ready: {
57
+ on: [
58
+ { event: "*", target: "elsewhere", reenter: true },
59
+ { event: "SOME_EVENT", target: "here", guard: () => true },
60
+ ],
61
+ },
62
+ },
63
+ on: {
64
+ EVENT: [{
65
+ guard: () => true,
66
+ target: 'active',
67
+ }],
68
+ },
69
+ })
70
+ `
71
+ ) ,
72
+ withVersion (
73
+ 4 ,
74
+ `
30
75
createMachine({
31
76
states: {
32
77
idle: {
@@ -55,10 +100,43 @@ const tests = {
55
100
},
56
101
},
57
102
})
58
- ` ,
103
+ `
104
+ ) ,
105
+ withVersion (
106
+ 5 ,
107
+ `
108
+ createMachine({
109
+ states: {
110
+ idle: {
111
+ invoke: {
112
+ src: 'someService',
113
+ onDone: {
114
+ guard: () => true,
115
+ target: 'active',
116
+ actions: [],
117
+ reenter: true,
118
+ description: 'some text',
119
+ },
120
+ onError: [
121
+ {
122
+ guard: () => false,
123
+ target: 'failed',
124
+ description: 'some text',
125
+ },
126
+ {
127
+ target: 'failed',
128
+ description: 'some text',
129
+ },
130
+ ],
131
+ },
132
+ },
133
+ },
134
+ })
135
+ `
136
+ ) ,
59
137
] ,
60
138
invalid : [
61
- {
139
+ withVersion ( 4 , {
62
140
code : `
63
141
createMachine({
64
142
states: {
@@ -70,6 +148,12 @@ const tests = {
70
148
},
71
149
},
72
150
},
151
+ ready: {
152
+ on: [
153
+ { event: "*", target: "elsewhere", beeep: '???' },
154
+ { event: "SOME_EVENT", target: "here", guard: () => true },
155
+ ],
156
+ },
73
157
},
74
158
on: {
75
159
EVENT: [{
@@ -80,13 +164,99 @@ const tests = {
80
164
` ,
81
165
errors : [
82
166
{ messageId : 'invalidTransitionProperty' , data : { propName : 'foo' } } ,
167
+ { messageId : 'invalidTransitionProperty' , data : { propName : 'beeep' } } ,
168
+ { messageId : 'invalidTransitionProperty' , data : { propName : 'guard' } } ,
83
169
{
84
170
messageId : 'invalidTransitionProperty' ,
85
171
data : { propName : 'invoke' } ,
86
172
} ,
87
173
] ,
88
- } ,
89
- {
174
+ } ) ,
175
+ withVersion ( 5 , {
176
+ code : `
177
+ createMachine({
178
+ states: {
179
+ idle: {
180
+ on: {
181
+ EVENT: {
182
+ target: 'active',
183
+ foo: '???',
184
+ cond: () => true,
185
+ in: 'otherState.ready',
186
+ internal: false,
187
+ },
188
+ },
189
+ },
190
+ ready: {
191
+ on: [
192
+ { event: "*", target: "elsewhere", internal: '???' },
193
+ { event: "SOME_EVENT", target: "here", cond: () => true },
194
+ ],
195
+ },
196
+ },
197
+ on: {
198
+ EVENT: [{
199
+ invoke: '???',
200
+ }],
201
+ },
202
+ })
203
+ ` ,
204
+ errors : [
205
+ { messageId : 'invalidTransitionProperty' , data : { propName : 'foo' } } ,
206
+ { messageId : 'invalidTransitionProperty' , data : { propName : 'cond' } } ,
207
+ { messageId : 'invalidTransitionProperty' , data : { propName : 'in' } } ,
208
+ {
209
+ messageId : 'invalidTransitionProperty' ,
210
+ data : { propName : 'internal' } ,
211
+ } ,
212
+ {
213
+ messageId : 'invalidTransitionProperty' ,
214
+ data : { propName : 'internal' } ,
215
+ } ,
216
+ { messageId : 'invalidTransitionProperty' , data : { propName : 'cond' } } ,
217
+ {
218
+ messageId : 'invalidTransitionProperty' ,
219
+ data : { propName : 'invoke' } ,
220
+ } ,
221
+ ] ,
222
+ } ) ,
223
+ withVersion ( 4 , {
224
+ code : `
225
+ createMachine({
226
+ states: {
227
+ idle: {
228
+ invoke: {
229
+ src: 'someService',
230
+ onDone: {
231
+ target: 'active',
232
+ always: '???',
233
+ },
234
+ onError: [
235
+ {
236
+ cond: () => false,
237
+ target: 'failed',
238
+ after: 1000,
239
+ },
240
+ {
241
+ target: 'failed',
242
+ entry: '???',
243
+ },
244
+ ],
245
+ },
246
+ },
247
+ },
248
+ })
249
+ ` ,
250
+ errors : [
251
+ {
252
+ messageId : 'invalidTransitionProperty' ,
253
+ data : { propName : 'always' } ,
254
+ } ,
255
+ { messageId : 'invalidTransitionProperty' , data : { propName : 'after' } } ,
256
+ { messageId : 'invalidTransitionProperty' , data : { propName : 'entry' } } ,
257
+ ] ,
258
+ } ) ,
259
+ withVersion ( 5 , {
90
260
code : `
91
261
createMachine({
92
262
states: {
@@ -96,12 +266,14 @@ const tests = {
96
266
onDone: {
97
267
target: 'active',
98
268
always: '???',
269
+ in: 'otherState.ready',
99
270
},
100
271
onError: [
101
272
{
102
273
cond: () => false,
103
274
target: 'failed',
104
275
after: 1000,
276
+ internal: false,
105
277
},
106
278
{
107
279
target: 'failed',
@@ -118,10 +290,16 @@ const tests = {
118
290
messageId : 'invalidTransitionProperty' ,
119
291
data : { propName : 'always' } ,
120
292
} ,
293
+ { messageId : 'invalidTransitionProperty' , data : { propName : 'in' } } ,
294
+ { messageId : 'invalidTransitionProperty' , data : { propName : 'cond' } } ,
121
295
{ messageId : 'invalidTransitionProperty' , data : { propName : 'after' } } ,
296
+ {
297
+ messageId : 'invalidTransitionProperty' ,
298
+ data : { propName : 'internal' } ,
299
+ } ,
122
300
{ messageId : 'invalidTransitionProperty' , data : { propName : 'entry' } } ,
123
301
] ,
124
- } ,
302
+ } ) ,
125
303
] ,
126
304
}
127
305
0 commit comments