eslint-plugin-jest 27.2.2 → 27.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/README.md +1 -0
  2. package/docs/rules/no-confusing-set-timeout.md +62 -0
  3. package/lib/rules/expect-expect.js +3 -1
  4. package/lib/rules/no-confusing-set-timeout.js +65 -0
  5. package/lib/rules/no-deprecated-functions.js +2 -2
  6. package/lib/rules/no-test-return-statement.js +9 -3
  7. package/lib/rules/no-untyped-mock-factory.js +3 -1
  8. package/lib/rules/prefer-spy-on.js +6 -2
  9. package/lib/rules/unbound-method.js +1 -1
  10. package/package.json +13 -16
  11. package/lib/processors/__tests__/snapshot-processor.test.js +0 -36
  12. package/lib/rules/__tests__/consistent-test-it.test.js +0 -921
  13. package/lib/rules/__tests__/expect-expect.test.js +0 -347
  14. package/lib/rules/__tests__/fixtures/class.ts +0 -13
  15. package/lib/rules/__tests__/fixtures/file.ts +0 -0
  16. package/lib/rules/__tests__/fixtures/foo.ts +0 -1
  17. package/lib/rules/__tests__/fixtures/indent/indent-invalid-fixture-1.js +0 -530
  18. package/lib/rules/__tests__/fixtures/indent/indent-valid-fixture-1.js +0 -530
  19. package/lib/rules/__tests__/fixtures/react.tsx +0 -0
  20. package/lib/rules/__tests__/fixtures/tsconfig-withmeta.json +0 -6
  21. package/lib/rules/__tests__/fixtures/tsconfig.json +0 -16
  22. package/lib/rules/__tests__/fixtures/unstrict/file.ts +0 -0
  23. package/lib/rules/__tests__/fixtures/unstrict/react.tsx +0 -0
  24. package/lib/rules/__tests__/fixtures/unstrict/tsconfig.json +0 -15
  25. package/lib/rules/__tests__/max-expects.test.js +0 -330
  26. package/lib/rules/__tests__/max-nested-describe.test.js +0 -247
  27. package/lib/rules/__tests__/no-alias-methods.test.js +0 -190
  28. package/lib/rules/__tests__/no-commented-out-tests.test.js +0 -213
  29. package/lib/rules/__tests__/no-conditional-expect.test.js +0 -696
  30. package/lib/rules/__tests__/no-conditional-in-test.test.js +0 -777
  31. package/lib/rules/__tests__/no-deprecated-functions.test.js +0 -119
  32. package/lib/rules/__tests__/no-disabled-tests.test.js +0 -241
  33. package/lib/rules/__tests__/no-done-callback.test.js +0 -424
  34. package/lib/rules/__tests__/no-duplicate-hooks.test.js +0 -469
  35. package/lib/rules/__tests__/no-export.test.js +0 -107
  36. package/lib/rules/__tests__/no-focused-tests.test.js +0 -373
  37. package/lib/rules/__tests__/no-hooks.test.js +0 -90
  38. package/lib/rules/__tests__/no-identical-title.test.js +0 -270
  39. package/lib/rules/__tests__/no-if.test.js +0 -787
  40. package/lib/rules/__tests__/no-interpolation-in-snapshots.test.js +0 -58
  41. package/lib/rules/__tests__/no-jasmine-globals.test.js +0 -206
  42. package/lib/rules/__tests__/no-large-snapshots.test.js +0 -237
  43. package/lib/rules/__tests__/no-mocks-import.test.js +0 -73
  44. package/lib/rules/__tests__/no-restricted-jest-methods.test.js +0 -103
  45. package/lib/rules/__tests__/no-restricted-matchers.test.js +0 -244
  46. package/lib/rules/__tests__/no-standalone-expect.test.js +0 -230
  47. package/lib/rules/__tests__/no-test-prefixes.test.js +0 -206
  48. package/lib/rules/__tests__/no-test-return-statement.test.js +0 -122
  49. package/lib/rules/__tests__/no-untyped-mock-factory.test.js +0 -149
  50. package/lib/rules/__tests__/prefer-called-with.test.js +0 -40
  51. package/lib/rules/__tests__/prefer-comparison-matcher.test.js +0 -200
  52. package/lib/rules/__tests__/prefer-each.test.js +0 -295
  53. package/lib/rules/__tests__/prefer-equality-matcher.test.js +0 -184
  54. package/lib/rules/__tests__/prefer-expect-assertions.test.js +0 -1437
  55. package/lib/rules/__tests__/prefer-expect-resolves.test.js +0 -96
  56. package/lib/rules/__tests__/prefer-hooks-in-order.test.js +0 -678
  57. package/lib/rules/__tests__/prefer-hooks-on-top.test.js +0 -218
  58. package/lib/rules/__tests__/prefer-lowercase-title.test.js +0 -619
  59. package/lib/rules/__tests__/prefer-mock-promise-shorthand.test.js +0 -360
  60. package/lib/rules/__tests__/prefer-snapshot-hint.test.js +0 -784
  61. package/lib/rules/__tests__/prefer-spy-on.test.js +0 -100
  62. package/lib/rules/__tests__/prefer-strict-equal.test.js +0 -46
  63. package/lib/rules/__tests__/prefer-to-be.test.js +0 -438
  64. package/lib/rules/__tests__/prefer-to-contain.test.js +0 -301
  65. package/lib/rules/__tests__/prefer-to-have-length.test.js +0 -99
  66. package/lib/rules/__tests__/prefer-todo.test.js +0 -78
  67. package/lib/rules/__tests__/require-hook.test.js +0 -403
  68. package/lib/rules/__tests__/require-to-throw-message.test.js +0 -108
  69. package/lib/rules/__tests__/require-top-level-describe.test.js +0 -236
  70. package/lib/rules/__tests__/test-utils.js +0 -11
  71. package/lib/rules/__tests__/unbound-method.test.js +0 -518
  72. package/lib/rules/__tests__/valid-describe-callback.test.js +0 -305
  73. package/lib/rules/__tests__/valid-expect-in-promise.test.js +0 -1583
  74. package/lib/rules/__tests__/valid-expect.test.js +0 -894
  75. package/lib/rules/__tests__/valid-title.test.js +0 -1147
  76. package/lib/rules/utils/__tests__/detectJestVersion.test.js +0 -221
  77. package/lib/rules/utils/__tests__/parseJestFnCall.test.js +0 -809
@@ -1,894 +0,0 @@
1
- "use strict";
2
-
3
- var _utils = require("@typescript-eslint/utils");
4
- var _dedent = _interopRequireDefault(require("dedent"));
5
- var _validExpect = _interopRequireDefault(require("../valid-expect"));
6
- var _testUtils = require("./test-utils");
7
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
- const ruleTester = new _utils.TSESLint.RuleTester({
9
- parser: _testUtils.espreeParser,
10
- parserOptions: {
11
- ecmaVersion: 2017
12
- }
13
- });
14
- ruleTester.run('valid-expect', _validExpect.default, {
15
- valid: ['expect.hasAssertions', 'expect.hasAssertions()', 'expect("something").toEqual("else");', 'expect(true).toBeDefined();', 'expect([1, 2, 3]).toEqual([1, 2, 3]);', 'expect(undefined).not.toBeDefined();', 'test("valid-expect", () => { return expect(Promise.resolve(2)).resolves.toBeDefined(); });', 'test("valid-expect", () => { return expect(Promise.reject(2)).rejects.toBeDefined(); });', 'test("valid-expect", () => { return expect(Promise.resolve(2)).resolves.not.toBeDefined(); });', 'test("valid-expect", () => { return expect(Promise.resolve(2)).rejects.not.toBeDefined(); });', 'test("valid-expect", function () { return expect(Promise.resolve(2)).resolves.not.toBeDefined(); });', 'test("valid-expect", function () { return expect(Promise.resolve(2)).rejects.not.toBeDefined(); });', 'test("valid-expect", function () { return Promise.resolve(expect(Promise.resolve(2)).resolves.not.toBeDefined()); });', 'test("valid-expect", function () { return Promise.resolve(expect(Promise.resolve(2)).rejects.not.toBeDefined()); });', {
16
- code: 'test("valid-expect", () => expect(Promise.resolve(2)).resolves.toBeDefined());',
17
- options: [{
18
- alwaysAwait: true
19
- }]
20
- }, 'test("valid-expect", () => expect(Promise.resolve(2)).resolves.toBeDefined());', 'test("valid-expect", () => expect(Promise.reject(2)).rejects.toBeDefined());', 'test("valid-expect", () => expect(Promise.reject(2)).resolves.not.toBeDefined());', 'test("valid-expect", () => expect(Promise.reject(2)).rejects.not.toBeDefined());', 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined(); });', 'test("valid-expect", async () => { await expect(Promise.reject(2)).rejects.not.toBeDefined(); });', 'test("valid-expect", async function () { await expect(Promise.reject(2)).resolves.not.toBeDefined(); });', 'test("valid-expect", async function () { await expect(Promise.reject(2)).rejects.not.toBeDefined(); });', 'test("valid-expect", async () => { await Promise.resolve(expect(Promise.reject(2)).rejects.not.toBeDefined()); });', 'test("valid-expect", async () => { await Promise.reject(expect(Promise.reject(2)).rejects.not.toBeDefined()); });', 'test("valid-expect", async () => { await Promise.all([expect(Promise.reject(2)).rejects.not.toBeDefined(), expect(Promise.reject(2)).rejects.not.toBeDefined()]); });', 'test("valid-expect", async () => { await Promise.race([expect(Promise.reject(2)).rejects.not.toBeDefined(), expect(Promise.reject(2)).rejects.not.toBeDefined()]); });', 'test("valid-expect", async () => { await Promise.allSettled([expect(Promise.reject(2)).rejects.not.toBeDefined(), expect(Promise.reject(2)).rejects.not.toBeDefined()]); });', 'test("valid-expect", async () => { await Promise.any([expect(Promise.reject(2)).rejects.not.toBeDefined(), expect(Promise.reject(2)).rejects.not.toBeDefined()]); });', 'test("valid-expect", async () => { return expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")); });', 'test("valid-expect", async () => { return expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")).then(() => console.log("another valid case")); });', 'test("valid-expect", async () => { return expect(Promise.reject(2)).resolves.not.toBeDefined().catch(() => console.log("valid-case")); });', 'test("valid-expect", async () => { return expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")).catch(() => console.log("another valid case")); });', 'test("valid-expect", async () => { return expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => { expect(someMock).toHaveBeenCalledTimes(1); }); });', 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")); });', 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")).then(() => console.log("another valid case")); });', 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined().catch(() => console.log("valid-case")); });', 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => console.log("valid-case")).catch(() => console.log("another valid case")); });', 'test("valid-expect", async () => { await expect(Promise.reject(2)).resolves.not.toBeDefined().then(() => { expect(someMock).toHaveBeenCalledTimes(1); }); });', (0, _dedent.default)`
21
- test("valid-expect", () => {
22
- return expect(functionReturningAPromise()).resolves.toEqual(1).then(() => {
23
- return expect(Promise.resolve(2)).resolves.toBe(1);
24
- });
25
- });
26
- `, (0, _dedent.default)`
27
- test("valid-expect", () => {
28
- return expect(functionReturningAPromise()).resolves.toEqual(1).then(async () => {
29
- await expect(Promise.resolve(2)).resolves.toBe(1);
30
- });
31
- });
32
- `, (0, _dedent.default)`
33
- test("valid-expect", () => {
34
- return expect(functionReturningAPromise()).resolves.toEqual(1).then(() => expect(Promise.resolve(2)).resolves.toBe(1));
35
- });
36
- `, (0, _dedent.default)`
37
- expect.extend({
38
- toResolve(obj) {
39
- return this.isNot
40
- ? expect(obj).toBe(true)
41
- : expect(obj).resolves.not.toThrow();
42
- }
43
- });
44
- `, (0, _dedent.default)`
45
- expect.extend({
46
- toResolve(obj) {
47
- return this.isNot
48
- ? expect(obj).resolves.not.toThrow()
49
- : expect(obj).toBe(true);
50
- }
51
- });
52
- `, (0, _dedent.default)`
53
- expect.extend({
54
- toResolve(obj) {
55
- return this.isNot
56
- ? expect(obj).toBe(true)
57
- : anotherCondition
58
- ? expect(obj).resolves.not.toThrow()
59
- : expect(obj).toBe(false)
60
- }
61
- });
62
- `, {
63
- code: 'expect(1).toBe(2);',
64
- options: [{
65
- maxArgs: 2
66
- }]
67
- }, {
68
- code: 'expect(1, "1 !== 2").toBe(2);',
69
- options: [{
70
- maxArgs: 2
71
- }]
72
- }, {
73
- code: 'expect(1, "1 !== 2").toBe(2);',
74
- options: [{
75
- maxArgs: 2,
76
- minArgs: 2
77
- }]
78
- }, {
79
- code: 'test("valid-expect", () => { expect(2).not.toBe(2); });',
80
- options: [{
81
- asyncMatchers: ['toRejectWith']
82
- }]
83
- }, {
84
- code: 'test("valid-expect", () => { expect(Promise.reject(2)).toRejectWith(2); });',
85
- options: [{
86
- asyncMatchers: ['toResolveWith']
87
- }]
88
- }, {
89
- code: 'test("valid-expect", async () => { await expect(Promise.resolve(2)).toResolve(); });',
90
- options: [{
91
- asyncMatchers: ['toResolveWith']
92
- }]
93
- }, {
94
- code: 'test("valid-expect", async () => { expect(Promise.resolve(2)).toResolve(); });',
95
- options: [{
96
- asyncMatchers: ['toResolveWith']
97
- }]
98
- }],
99
- invalid: [{
100
- code: 'expect().toBe(2);',
101
- options: [{
102
- minArgs: undefined,
103
- maxArgs: undefined
104
- }],
105
- errors: [{
106
- messageId: 'notEnoughArgs',
107
- data: {
108
- s: '',
109
- amount: 1
110
- }
111
- }]
112
- }, {
113
- code: 'expect().toBe(true);',
114
- errors: [{
115
- endColumn: 8,
116
- column: 7,
117
- messageId: 'notEnoughArgs',
118
- data: {
119
- s: '',
120
- amount: 1
121
- }
122
- }]
123
- }, {
124
- code: 'expect().toEqual("something");',
125
- errors: [{
126
- endColumn: 8,
127
- column: 7,
128
- messageId: 'notEnoughArgs',
129
- data: {
130
- s: '',
131
- amount: 1
132
- }
133
- }]
134
- }, {
135
- code: 'expect("something", "else").toEqual("something");',
136
- errors: [{
137
- endColumn: 26,
138
- column: 21,
139
- messageId: 'tooManyArgs',
140
- data: {
141
- s: '',
142
- amount: 1
143
- }
144
- }]
145
- }, {
146
- code: 'expect("something", "else", "entirely").toEqual("something");',
147
- options: [{
148
- maxArgs: 2
149
- }],
150
- errors: [{
151
- endColumn: 38,
152
- column: 29,
153
- messageId: 'tooManyArgs',
154
- data: {
155
- s: 's',
156
- amount: 2
157
- }
158
- }]
159
- }, {
160
- code: 'expect("something", "else", "entirely").toEqual("something");',
161
- options: [{
162
- maxArgs: 2,
163
- minArgs: 2
164
- }],
165
- errors: [{
166
- endColumn: 38,
167
- column: 29,
168
- messageId: 'tooManyArgs',
169
- data: {
170
- s: 's',
171
- amount: 2
172
- }
173
- }]
174
- }, {
175
- code: 'expect("something", "else", "entirely").toEqual("something");',
176
- options: [{
177
- maxArgs: 2,
178
- minArgs: 1
179
- }],
180
- errors: [{
181
- endColumn: 38,
182
- column: 29,
183
- messageId: 'tooManyArgs',
184
- data: {
185
- s: 's',
186
- amount: 2
187
- }
188
- }]
189
- }, {
190
- code: 'expect("something").toEqual("something");',
191
- options: [{
192
- minArgs: 2
193
- }],
194
- errors: [{
195
- endColumn: 8,
196
- column: 7,
197
- messageId: 'notEnoughArgs',
198
- data: {
199
- s: 's',
200
- amount: 2
201
- }
202
- }]
203
- }, {
204
- code: 'expect("something", "else").toEqual("something");',
205
- options: [{
206
- maxArgs: 1,
207
- minArgs: 3
208
- }],
209
- errors: [{
210
- endColumn: 8,
211
- column: 7,
212
- messageId: 'notEnoughArgs',
213
- data: {
214
- s: 's',
215
- amount: 3
216
- }
217
- }, {
218
- endColumn: 26,
219
- column: 21,
220
- messageId: 'tooManyArgs',
221
- data: {
222
- s: '',
223
- amount: 1
224
- }
225
- }]
226
- }, {
227
- code: 'expect("something");',
228
- errors: [{
229
- endColumn: 20,
230
- column: 1,
231
- messageId: 'matcherNotFound'
232
- }]
233
- }, {
234
- code: 'expect();',
235
- errors: [{
236
- endColumn: 9,
237
- column: 1,
238
- messageId: 'matcherNotFound'
239
- }]
240
- }, {
241
- code: 'expect(true).toBeDefined;',
242
- errors: [{
243
- endColumn: 25,
244
- column: 14,
245
- messageId: 'matcherNotCalled'
246
- }]
247
- }, {
248
- code: 'expect(true).not.toBeDefined;',
249
- errors: [{
250
- endColumn: 29,
251
- column: 18,
252
- messageId: 'matcherNotCalled'
253
- }]
254
- }, {
255
- code: 'expect(true).nope.toBeDefined;',
256
- errors: [{
257
- endColumn: 30,
258
- column: 19,
259
- messageId: 'matcherNotCalled'
260
- }]
261
- }, {
262
- code: 'expect(true).nope.toBeDefined();',
263
- errors: [{
264
- endColumn: 32,
265
- column: 1,
266
- messageId: 'modifierUnknown'
267
- }]
268
- }, {
269
- code: 'expect(true).not.resolves.toBeDefined();',
270
- errors: [{
271
- endColumn: 40,
272
- column: 1,
273
- messageId: 'modifierUnknown'
274
- }]
275
- }, {
276
- code: 'expect(true).not.not.toBeDefined();',
277
- errors: [{
278
- endColumn: 35,
279
- column: 1,
280
- messageId: 'modifierUnknown'
281
- }]
282
- }, {
283
- code: 'expect(true).resolves.not.exactly.toBeDefined();',
284
- errors: [{
285
- endColumn: 48,
286
- column: 1,
287
- messageId: 'modifierUnknown'
288
- }]
289
- }, {
290
- code: 'expect(true).resolves;',
291
- errors: [{
292
- endColumn: 22,
293
- column: 14,
294
- messageId: 'matcherNotFound'
295
- }]
296
- }, {
297
- code: 'expect(true).rejects;',
298
- errors: [{
299
- endColumn: 21,
300
- column: 14,
301
- messageId: 'matcherNotFound'
302
- }]
303
- }, {
304
- code: 'expect(true).not;',
305
- errors: [{
306
- endColumn: 17,
307
- column: 14,
308
- messageId: 'matcherNotFound'
309
- }]
310
- },
311
- /**
312
- * .resolves & .rejects checks
313
- */
314
- // Inline usages
315
- {
316
- code: 'expect(Promise.resolve(2)).resolves.toBeDefined();',
317
- errors: [{
318
- column: 1,
319
- endColumn: 50,
320
- messageId: 'asyncMustBeAwaited',
321
- data: {
322
- orReturned: ' or returned'
323
- }
324
- }]
325
- }, {
326
- code: 'expect(Promise.resolve(2)).rejects.toBeDefined();',
327
- errors: [{
328
- column: 1,
329
- endColumn: 49,
330
- messageId: 'asyncMustBeAwaited',
331
- data: {
332
- orReturned: ' or returned'
333
- }
334
- }]
335
- },
336
- // alwaysAwait option changes error message
337
- {
338
- code: 'expect(Promise.resolve(2)).resolves.toBeDefined();',
339
- options: [{
340
- alwaysAwait: true
341
- }],
342
- errors: [{
343
- column: 1,
344
- endColumn: 50,
345
- messageId: 'asyncMustBeAwaited'
346
- }]
347
- }, {
348
- code: (0, _dedent.default)`
349
- expect.extend({
350
- toResolve(obj) {
351
- this.isNot
352
- ? expect(obj).toBe(true)
353
- : expect(obj).resolves.not.toThrow();
354
- }
355
- });
356
- `,
357
- errors: [{
358
- column: 9,
359
- endColumn: 43,
360
- messageId: 'asyncMustBeAwaited'
361
- }]
362
- }, {
363
- code: (0, _dedent.default)`
364
- expect.extend({
365
- toResolve(obj) {
366
- this.isNot
367
- ? expect(obj).resolves.not.toThrow()
368
- : expect(obj).toBe(true);
369
- }
370
- });
371
- `,
372
- errors: [{
373
- column: 9,
374
- endColumn: 43,
375
- messageId: 'asyncMustBeAwaited'
376
- }]
377
- }, {
378
- code: (0, _dedent.default)`
379
- expect.extend({
380
- toResolve(obj) {
381
- this.isNot
382
- ? expect(obj).toBe(true)
383
- : anotherCondition
384
- ? expect(obj).resolves.not.toThrow()
385
- : expect(obj).toBe(false)
386
- }
387
- });
388
- `,
389
- errors: [{
390
- column: 9,
391
- endColumn: 43,
392
- messageId: 'asyncMustBeAwaited'
393
- }]
394
- },
395
- // expect().resolves
396
- {
397
- code: 'test("valid-expect", () => { expect(Promise.resolve(2)).resolves.toBeDefined(); });',
398
- errors: [{
399
- column: 30,
400
- endColumn: 79,
401
- messageId: 'asyncMustBeAwaited',
402
- data: {
403
- orReturned: ' or returned'
404
- }
405
- }]
406
- }, {
407
- code: 'test("valid-expect", () => { expect(Promise.resolve(2)).toResolve(); });',
408
- errors: [{
409
- messageId: 'asyncMustBeAwaited',
410
- data: {
411
- orReturned: ' or returned'
412
- },
413
- column: 30,
414
- line: 1
415
- }]
416
- }, {
417
- code: 'test("valid-expect", () => { expect(Promise.resolve(2)).toResolve(); });',
418
- options: [{
419
- asyncMatchers: undefined
420
- }],
421
- errors: [{
422
- messageId: 'asyncMustBeAwaited',
423
- data: {
424
- orReturned: ' or returned'
425
- },
426
- column: 30,
427
- line: 1
428
- }]
429
- }, {
430
- code: 'test("valid-expect", () => { expect(Promise.resolve(2)).toReject(); });',
431
- errors: [{
432
- messageId: 'asyncMustBeAwaited',
433
- data: {
434
- orReturned: ' or returned'
435
- },
436
- column: 30,
437
- line: 1
438
- }]
439
- }, {
440
- code: 'test("valid-expect", () => { expect(Promise.resolve(2)).not.toReject(); });',
441
- errors: [{
442
- messageId: 'asyncMustBeAwaited',
443
- data: {
444
- orReturned: ' or returned'
445
- },
446
- column: 30,
447
- line: 1
448
- }]
449
- },
450
- // expect().resolves.not
451
- {
452
- code: 'test("valid-expect", () => { expect(Promise.resolve(2)).resolves.not.toBeDefined(); });',
453
- errors: [{
454
- column: 30,
455
- endColumn: 83,
456
- messageId: 'asyncMustBeAwaited',
457
- data: {
458
- orReturned: ' or returned'
459
- }
460
- }]
461
- },
462
- // expect().rejects
463
- {
464
- code: 'test("valid-expect", () => { expect(Promise.resolve(2)).rejects.toBeDefined(); });',
465
- errors: [{
466
- column: 30,
467
- endColumn: 78,
468
- messageId: 'asyncMustBeAwaited',
469
- data: {
470
- orReturned: ' or returned'
471
- }
472
- }]
473
- },
474
- // expect().rejects.not
475
- {
476
- code: 'test("valid-expect", () => { expect(Promise.resolve(2)).rejects.not.toBeDefined(); });',
477
- errors: [{
478
- column: 30,
479
- endColumn: 82,
480
- messageId: 'asyncMustBeAwaited',
481
- data: {
482
- orReturned: ' or returned'
483
- }
484
- }]
485
- },
486
- // usages in async function
487
- {
488
- code: 'test("valid-expect", async () => { expect(Promise.resolve(2)).resolves.toBeDefined(); });',
489
- errors: [{
490
- column: 36,
491
- endColumn: 85,
492
- messageId: 'asyncMustBeAwaited',
493
- data: {
494
- orReturned: ' or returned'
495
- }
496
- }]
497
- }, {
498
- code: 'test("valid-expect", async () => { expect(Promise.resolve(2)).resolves.not.toBeDefined(); });',
499
- errors: [{
500
- column: 36,
501
- endColumn: 89,
502
- messageId: 'asyncMustBeAwaited',
503
- data: {
504
- orReturned: ' or returned'
505
- }
506
- }]
507
- }, {
508
- code: 'test("valid-expect", () => { expect(Promise.reject(2)).toRejectWith(2); });',
509
- options: [{
510
- asyncMatchers: ['toRejectWith']
511
- }],
512
- errors: [{
513
- messageId: 'asyncMustBeAwaited',
514
- data: {
515
- orReturned: ' or returned'
516
- },
517
- column: 30
518
- }]
519
- }, {
520
- code: 'test("valid-expect", () => { expect(Promise.reject(2)).rejects.toBe(2); });',
521
- options: [{
522
- asyncMatchers: ['toRejectWith']
523
- }],
524
- errors: [{
525
- messageId: 'asyncMustBeAwaited',
526
- data: {
527
- orReturned: ' or returned'
528
- },
529
- column: 30
530
- }]
531
- },
532
- // alwaysAwait:false, one not awaited
533
- {
534
- code: (0, _dedent.default)`
535
- test("valid-expect", async () => {
536
- expect(Promise.resolve(2)).resolves.not.toBeDefined();
537
- expect(Promise.resolve(1)).rejects.toBeDefined();
538
- });
539
- `,
540
- errors: [{
541
- line: 2,
542
- column: 3,
543
- endColumn: 56,
544
- messageId: 'asyncMustBeAwaited',
545
- data: {
546
- orReturned: ' or returned'
547
- }
548
- }, {
549
- line: 3,
550
- column: 3,
551
- endColumn: 51,
552
- messageId: 'asyncMustBeAwaited',
553
- data: {
554
- orReturned: ' or returned'
555
- }
556
- }]
557
- },
558
- // alwaysAwait: true, one returned
559
- {
560
- code: (0, _dedent.default)`
561
- test("valid-expect", async () => {
562
- await expect(Promise.resolve(2)).resolves.not.toBeDefined();
563
- expect(Promise.resolve(1)).rejects.toBeDefined();
564
- });
565
- `,
566
- errors: [{
567
- line: 3,
568
- column: 3,
569
- endColumn: 51,
570
- messageId: 'asyncMustBeAwaited',
571
- data: {
572
- orReturned: ' or returned'
573
- }
574
- }]
575
- },
576
- /**
577
- * Multiple async assertions
578
- */
579
- // both not awaited
580
- {
581
- code: (0, _dedent.default)`
582
- test("valid-expect", async () => {
583
- expect(Promise.resolve(2)).resolves.not.toBeDefined();
584
- return expect(Promise.resolve(1)).rejects.toBeDefined();
585
- });
586
- `,
587
- options: [{
588
- alwaysAwait: true
589
- }],
590
- errors: [{
591
- line: 2,
592
- column: 3,
593
- endColumn: 56,
594
- messageId: 'asyncMustBeAwaited'
595
- }, {
596
- line: 3,
597
- column: 10,
598
- endColumn: 58,
599
- messageId: 'asyncMustBeAwaited'
600
- }]
601
- },
602
- // alwaysAwait:true, one not awaited, one returned
603
- {
604
- code: (0, _dedent.default)`
605
- test("valid-expect", async () => {
606
- expect(Promise.resolve(2)).resolves.not.toBeDefined();
607
- return expect(Promise.resolve(1)).rejects.toBeDefined();
608
- });
609
- `,
610
- errors: [{
611
- line: 2,
612
- column: 3,
613
- endColumn: 56,
614
- messageId: 'asyncMustBeAwaited',
615
- data: {
616
- orReturned: ' or returned'
617
- }
618
- }]
619
- },
620
- // one not awaited
621
- {
622
- code: (0, _dedent.default)`
623
- test("valid-expect", async () => {
624
- await expect(Promise.resolve(2)).resolves.not.toBeDefined();
625
- return expect(Promise.resolve(1)).rejects.toBeDefined();
626
- });
627
- `,
628
- options: [{
629
- alwaysAwait: true
630
- }],
631
- errors: [{
632
- line: 3,
633
- column: 10,
634
- endColumn: 58,
635
- messageId: 'asyncMustBeAwaited'
636
- }]
637
- }, {
638
- code: (0, _dedent.default)`
639
- test("valid-expect", async () => {
640
- await expect(Promise.resolve(2)).toResolve();
641
- return expect(Promise.resolve(1)).toReject();
642
- });
643
- `,
644
- options: [{
645
- alwaysAwait: true
646
- }],
647
- errors: [{
648
- messageId: 'asyncMustBeAwaited',
649
- column: 10,
650
- line: 3
651
- }]
652
- },
653
- /**
654
- * Promise.x(expect()) usages
655
- */
656
- {
657
- code: (0, _dedent.default)`
658
- test("valid-expect", () => {
659
- Promise.resolve(expect(Promise.resolve(2)).resolves.not.toBeDefined());
660
- });
661
- `,
662
- errors: [{
663
- line: 2,
664
- column: 3,
665
- endColumn: 73,
666
- messageId: 'promisesWithAsyncAssertionsMustBeAwaited',
667
- data: {
668
- orReturned: ' or returned'
669
- }
670
- }]
671
- }, {
672
- code: (0, _dedent.default)`
673
- test("valid-expect", () => {
674
- Promise.reject(expect(Promise.resolve(2)).resolves.not.toBeDefined());
675
- });
676
- `,
677
- errors: [{
678
- line: 2,
679
- column: 3,
680
- endColumn: 72,
681
- messageId: 'promisesWithAsyncAssertionsMustBeAwaited',
682
- data: {
683
- orReturned: ' or returned'
684
- }
685
- }]
686
- }, {
687
- code: (0, _dedent.default)`
688
- test("valid-expect", () => {
689
- Promise.x(expect(Promise.resolve(2)).resolves.not.toBeDefined());
690
- });
691
- `,
692
- errors: [{
693
- line: 2,
694
- column: 3,
695
- endColumn: 67,
696
- messageId: 'promisesWithAsyncAssertionsMustBeAwaited',
697
- data: {
698
- orReturned: ' or returned'
699
- }
700
- }]
701
- },
702
- // alwaysAwait option changes error message
703
- {
704
- code: (0, _dedent.default)`
705
- test("valid-expect", () => {
706
- Promise.resolve(expect(Promise.resolve(2)).resolves.not.toBeDefined());
707
- });
708
- `,
709
- options: [{
710
- alwaysAwait: true
711
- }],
712
- errors: [{
713
- line: 2,
714
- column: 3,
715
- endColumn: 73,
716
- messageId: 'promisesWithAsyncAssertionsMustBeAwaited'
717
- }]
718
- },
719
- // Promise method accepts arrays and returns 1 error
720
- {
721
- code: (0, _dedent.default)`
722
- test("valid-expect", () => {
723
- Promise.all([
724
- expect(Promise.resolve(2)).resolves.not.toBeDefined(),
725
- expect(Promise.resolve(3)).resolves.not.toBeDefined(),
726
- ]);
727
- });
728
- `,
729
- errors: [{
730
- line: 2,
731
- column: 3,
732
- endLine: 5,
733
- endColumn: 5,
734
- messageId: 'promisesWithAsyncAssertionsMustBeAwaited',
735
- data: {
736
- orReturned: ' or returned'
737
- }
738
- }]
739
- },
740
- // Promise.any([expect1, expect2]) returns one error
741
- {
742
- code: (0, _dedent.default)`
743
- test("valid-expect", () => {
744
- Promise.x([
745
- expect(Promise.resolve(2)).resolves.not.toBeDefined(),
746
- expect(Promise.resolve(3)).resolves.not.toBeDefined(),
747
- ]);
748
- });
749
- `,
750
- errors: [{
751
- line: 2,
752
- column: 3,
753
- endLine: 5,
754
- endColumn: 5,
755
- messageId: 'promisesWithAsyncAssertionsMustBeAwaited',
756
- data: {
757
- orReturned: ' or returned'
758
- }
759
- }]
760
- },
761
- //
762
- {
763
- code: (0, _dedent.default)`
764
- test("valid-expect", () => {
765
- const assertions = [
766
- expect(Promise.resolve(2)).resolves.not.toBeDefined(),
767
- expect(Promise.resolve(3)).resolves.not.toBeDefined(),
768
- ]
769
- });
770
- `,
771
- errors: [{
772
- line: 3,
773
- column: 5,
774
- endLine: 3,
775
- endColumn: 58,
776
- messageId: 'asyncMustBeAwaited',
777
- data: {
778
- orReturned: ' or returned'
779
- }
780
- }, {
781
- line: 4,
782
- column: 5,
783
- endLine: 4,
784
- endColumn: 58,
785
- messageId: 'asyncMustBeAwaited',
786
- data: {
787
- orReturned: ' or returned'
788
- }
789
- }]
790
- }, {
791
- code: (0, _dedent.default)`
792
- test("valid-expect", () => {
793
- const assertions = [
794
- expect(Promise.resolve(2)).toResolve(),
795
- expect(Promise.resolve(3)).toReject(),
796
- ]
797
- });
798
- `,
799
- errors: [{
800
- messageId: 'asyncMustBeAwaited',
801
- data: {
802
- orReturned: ' or returned'
803
- },
804
- column: 5,
805
- line: 3
806
- }, {
807
- messageId: 'asyncMustBeAwaited',
808
- data: {
809
- orReturned: ' or returned'
810
- },
811
- column: 5,
812
- line: 4
813
- }]
814
- }, {
815
- code: (0, _dedent.default)`
816
- test("valid-expect", () => {
817
- const assertions = [
818
- expect(Promise.resolve(2)).not.toResolve(),
819
- expect(Promise.resolve(3)).resolves.toReject(),
820
- ]
821
- });
822
- `,
823
- errors: [{
824
- messageId: 'asyncMustBeAwaited',
825
- data: {
826
- orReturned: ' or returned'
827
- },
828
- column: 5,
829
- line: 3
830
- }, {
831
- messageId: 'asyncMustBeAwaited',
832
- data: {
833
- orReturned: ' or returned'
834
- },
835
- column: 5,
836
- line: 4
837
- }]
838
- }, {
839
- code: 'expect(Promise.resolve(2)).resolves.toBe;',
840
- errors: [{
841
- column: 37,
842
- endColumn: 41,
843
- messageId: 'matcherNotCalled'
844
- }]
845
- }, {
846
- code: (0, _dedent.default)`
847
- test("valid-expect", () => {
848
- return expect(functionReturningAPromise()).resolves.toEqual(1).then(() => {
849
- expect(Promise.resolve(2)).resolves.toBe(1);
850
- });
851
- });
852
- `,
853
- errors: [{
854
- line: 3,
855
- column: 5,
856
- endLine: 3,
857
- endColumn: 48,
858
- messageId: 'asyncMustBeAwaited',
859
- data: {
860
- orReturned: ' or returned'
861
- }
862
- }]
863
- }, {
864
- code: (0, _dedent.default)`
865
- test("valid-expect", () => {
866
- return expect(functionReturningAPromise()).resolves.toEqual(1).then(async () => {
867
- await expect(Promise.resolve(2)).resolves.toBe(1);
868
- expect(Promise.resolve(4)).resolves.toBe(4);
869
- });
870
- });
871
- `,
872
- errors: [{
873
- line: 4,
874
- column: 5,
875
- endLine: 4,
876
- endColumn: 48,
877
- messageId: 'asyncMustBeAwaited',
878
- data: {
879
- orReturned: ' or returned'
880
- }
881
- }]
882
- }, {
883
- code: (0, _dedent.default)`
884
- test("valid-expect", async () => {
885
- await expect(Promise.resolve(1));
886
- });
887
- `,
888
- errors: [{
889
- endColumn: 35,
890
- column: 9,
891
- messageId: 'matcherNotFound'
892
- }]
893
- }]
894
- });