eslint-plugin-jest 27.2.0 → 27.2.2

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 (79) hide show
  1. package/README.md +1 -1
  2. package/docs/rules/no-alias-methods.md +1 -1
  3. package/docs/rules/no-hooks.md +1 -1
  4. package/docs/rules/no-if.md +1 -1
  5. package/docs/rules/no-large-snapshots.md +4 -0
  6. package/docs/rules/require-hook.md +2 -6
  7. package/docs/rules/valid-expect.md +2 -2
  8. package/lib/index.js +5 -12
  9. package/lib/processors/__tests__/snapshot-processor.test.js +36 -0
  10. package/lib/rules/__tests__/consistent-test-it.test.js +921 -0
  11. package/lib/rules/__tests__/expect-expect.test.js +347 -0
  12. package/lib/rules/__tests__/fixtures/class.ts +13 -0
  13. package/lib/rules/__tests__/fixtures/file.ts +0 -0
  14. package/lib/rules/__tests__/fixtures/foo.ts +1 -0
  15. package/lib/rules/__tests__/fixtures/indent/indent-invalid-fixture-1.js +530 -0
  16. package/lib/rules/__tests__/fixtures/indent/indent-valid-fixture-1.js +530 -0
  17. package/lib/rules/__tests__/fixtures/react.tsx +0 -0
  18. package/lib/rules/__tests__/fixtures/tsconfig-withmeta.json +6 -0
  19. package/lib/rules/__tests__/fixtures/tsconfig.json +16 -0
  20. package/lib/rules/__tests__/fixtures/unstrict/file.ts +0 -0
  21. package/lib/rules/__tests__/fixtures/unstrict/react.tsx +0 -0
  22. package/lib/rules/__tests__/fixtures/unstrict/tsconfig.json +15 -0
  23. package/lib/rules/__tests__/max-expects.test.js +330 -0
  24. package/lib/rules/__tests__/max-nested-describe.test.js +247 -0
  25. package/lib/rules/__tests__/no-alias-methods.test.js +190 -0
  26. package/lib/rules/__tests__/no-commented-out-tests.test.js +213 -0
  27. package/lib/rules/__tests__/no-conditional-expect.test.js +696 -0
  28. package/lib/rules/__tests__/no-conditional-in-test.test.js +777 -0
  29. package/lib/rules/__tests__/no-deprecated-functions.test.js +119 -0
  30. package/lib/rules/__tests__/no-disabled-tests.test.js +241 -0
  31. package/lib/rules/__tests__/no-done-callback.test.js +424 -0
  32. package/lib/rules/__tests__/no-duplicate-hooks.test.js +469 -0
  33. package/lib/rules/__tests__/no-export.test.js +107 -0
  34. package/lib/rules/__tests__/no-focused-tests.test.js +373 -0
  35. package/lib/rules/__tests__/no-hooks.test.js +90 -0
  36. package/lib/rules/__tests__/no-identical-title.test.js +270 -0
  37. package/lib/rules/__tests__/no-if.test.js +787 -0
  38. package/lib/rules/__tests__/no-interpolation-in-snapshots.test.js +58 -0
  39. package/lib/rules/__tests__/no-jasmine-globals.test.js +206 -0
  40. package/lib/rules/__tests__/no-large-snapshots.test.js +237 -0
  41. package/lib/rules/__tests__/no-mocks-import.test.js +73 -0
  42. package/lib/rules/__tests__/no-restricted-jest-methods.test.js +103 -0
  43. package/lib/rules/__tests__/no-restricted-matchers.test.js +244 -0
  44. package/lib/rules/__tests__/no-standalone-expect.test.js +230 -0
  45. package/lib/rules/__tests__/no-test-prefixes.test.js +206 -0
  46. package/lib/rules/__tests__/no-test-return-statement.test.js +122 -0
  47. package/lib/rules/__tests__/no-untyped-mock-factory.test.js +149 -0
  48. package/lib/rules/__tests__/prefer-called-with.test.js +40 -0
  49. package/lib/rules/__tests__/prefer-comparison-matcher.test.js +200 -0
  50. package/lib/rules/__tests__/prefer-each.test.js +295 -0
  51. package/lib/rules/__tests__/prefer-equality-matcher.test.js +184 -0
  52. package/lib/rules/__tests__/prefer-expect-assertions.test.js +1437 -0
  53. package/lib/rules/__tests__/prefer-expect-resolves.test.js +96 -0
  54. package/lib/rules/__tests__/prefer-hooks-in-order.test.js +678 -0
  55. package/lib/rules/__tests__/prefer-hooks-on-top.test.js +218 -0
  56. package/lib/rules/__tests__/prefer-lowercase-title.test.js +619 -0
  57. package/lib/rules/__tests__/prefer-mock-promise-shorthand.test.js +360 -0
  58. package/lib/rules/__tests__/prefer-snapshot-hint.test.js +784 -0
  59. package/lib/rules/__tests__/prefer-spy-on.test.js +100 -0
  60. package/lib/rules/__tests__/prefer-strict-equal.test.js +46 -0
  61. package/lib/rules/__tests__/prefer-to-be.test.js +438 -0
  62. package/lib/rules/__tests__/prefer-to-contain.test.js +301 -0
  63. package/lib/rules/__tests__/prefer-to-have-length.test.js +99 -0
  64. package/lib/rules/__tests__/prefer-todo.test.js +78 -0
  65. package/lib/rules/__tests__/require-hook.test.js +403 -0
  66. package/lib/rules/__tests__/require-to-throw-message.test.js +108 -0
  67. package/lib/rules/__tests__/require-top-level-describe.test.js +236 -0
  68. package/lib/rules/__tests__/test-utils.js +11 -0
  69. package/lib/rules/__tests__/unbound-method.test.js +518 -0
  70. package/lib/rules/__tests__/valid-describe-callback.test.js +305 -0
  71. package/lib/rules/__tests__/valid-expect-in-promise.test.js +1583 -0
  72. package/lib/rules/__tests__/valid-expect.test.js +894 -0
  73. package/lib/rules/__tests__/valid-title.test.js +1147 -0
  74. package/lib/rules/utils/__tests__/detectJestVersion.test.js +221 -0
  75. package/lib/rules/utils/__tests__/parseJestFnCall.test.js +809 -0
  76. package/lib/rules/utils/accessors.js +4 -0
  77. package/lib/rules/utils/misc.js +36 -20
  78. package/lib/rules/valid-expect-in-promise.js +3 -3
  79. package/package.json +13 -9
@@ -0,0 +1,424 @@
1
+ "use strict";
2
+
3
+ var _utils = require("@typescript-eslint/utils");
4
+ var _dedent = _interopRequireDefault(require("dedent"));
5
+ var _noDoneCallback = _interopRequireDefault(require("../no-done-callback"));
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('no-done-callback', _noDoneCallback.default, {
15
+ valid: ['test("something", () => {})', 'test("something", async () => {})', 'test("something", function() {})', 'test.each``("something", ({ a, b }) => {})', 'test.each()("something", ({ a, b }) => {})', 'it.each()("something", ({ a, b }) => {})', 'it.each([])("something", (a, b) => {})', 'it.each``("something", ({ a, b }) => {})', 'it.each([])("something", (a, b) => { a(); b(); })', 'it.each``("something", ({ a, b }) => { a(); b(); })', 'test("something", async function () {})', 'test("something", someArg)', 'beforeEach(() => {})', 'beforeAll(async () => {})', 'afterAll(() => {})', 'afterAll(async function () {})', 'afterAll(async function () {}, 5)'],
16
+ invalid: [{
17
+ code: 'test("something", (...args) => {args[0]();})',
18
+ errors: [{
19
+ messageId: 'noDoneCallback',
20
+ line: 1,
21
+ column: 20
22
+ }]
23
+ }, {
24
+ code: 'test("something", done => {done();})',
25
+ errors: [{
26
+ messageId: 'noDoneCallback',
27
+ line: 1,
28
+ column: 19,
29
+ suggestions: [{
30
+ messageId: 'suggestWrappingInPromise',
31
+ data: {
32
+ callback: 'done'
33
+ },
34
+ output: 'test("something", () => {return new Promise(done => {done();})})'
35
+ }]
36
+ }]
37
+ }, {
38
+ code: 'test("something", (done,) => {done();})',
39
+ errors: [{
40
+ messageId: 'noDoneCallback',
41
+ line: 1,
42
+ column: 20,
43
+ suggestions: [{
44
+ messageId: 'suggestWrappingInPromise',
45
+ data: {
46
+ callback: 'done'
47
+ },
48
+ output: 'test("something", () => {return new Promise(done => {done();})})'
49
+ }]
50
+ }]
51
+ }, {
52
+ code: 'test("something", finished => {finished();})',
53
+ errors: [{
54
+ messageId: 'noDoneCallback',
55
+ line: 1,
56
+ column: 19,
57
+ suggestions: [{
58
+ messageId: 'suggestWrappingInPromise',
59
+ data: {
60
+ callback: 'finished'
61
+ },
62
+ output: 'test("something", () => {return new Promise(finished => {finished();})})'
63
+ }]
64
+ }]
65
+ }, {
66
+ code: 'test("something", (done) => {done();})',
67
+ errors: [{
68
+ messageId: 'noDoneCallback',
69
+ line: 1,
70
+ column: 20,
71
+ suggestions: [{
72
+ messageId: 'suggestWrappingInPromise',
73
+ data: {
74
+ callback: 'done'
75
+ },
76
+ output: 'test("something", () => {return new Promise(done => {done();})})'
77
+ }]
78
+ }]
79
+ }, {
80
+ code: 'test("something", done => done())',
81
+ errors: [{
82
+ messageId: 'noDoneCallback',
83
+ line: 1,
84
+ column: 19,
85
+ suggestions: [{
86
+ messageId: 'suggestWrappingInPromise',
87
+ data: {
88
+ callback: 'done'
89
+ },
90
+ output: 'test("something", () => new Promise(done => done()))'
91
+ }]
92
+ }]
93
+ }, {
94
+ code: 'test("something", (done) => done())',
95
+ errors: [{
96
+ messageId: 'noDoneCallback',
97
+ line: 1,
98
+ column: 20,
99
+ suggestions: [{
100
+ messageId: 'suggestWrappingInPromise',
101
+ data: {
102
+ callback: 'done'
103
+ },
104
+ output: 'test("something", () => new Promise(done => done()))'
105
+ }]
106
+ }]
107
+ }, {
108
+ code: 'test("something", function(done) {done();})',
109
+ errors: [{
110
+ messageId: 'noDoneCallback',
111
+ line: 1,
112
+ column: 28,
113
+ suggestions: [{
114
+ messageId: 'suggestWrappingInPromise',
115
+ data: {
116
+ callback: 'done'
117
+ },
118
+ output: 'test("something", function() {return new Promise(done => {done();})})'
119
+ }]
120
+ }]
121
+ }, {
122
+ code: 'test("something", function (done) {done();})',
123
+ errors: [{
124
+ messageId: 'noDoneCallback',
125
+ line: 1,
126
+ column: 29,
127
+ suggestions: [{
128
+ messageId: 'suggestWrappingInPromise',
129
+ data: {
130
+ callback: 'done'
131
+ },
132
+ output: 'test("something", function () {return new Promise(done => {done();})})'
133
+ }]
134
+ }]
135
+ }, {
136
+ code: 'test("something", async done => {done();})',
137
+ errors: [{
138
+ messageId: 'useAwaitInsteadOfCallback',
139
+ line: 1,
140
+ column: 25
141
+ }]
142
+ }, {
143
+ code: 'test("something", async done => done())',
144
+ errors: [{
145
+ messageId: 'useAwaitInsteadOfCallback',
146
+ line: 1,
147
+ column: 25
148
+ }]
149
+ }, {
150
+ code: 'test("something", async function (done) {done();})',
151
+ errors: [{
152
+ messageId: 'useAwaitInsteadOfCallback',
153
+ line: 1,
154
+ column: 35
155
+ }]
156
+ }, {
157
+ code: (0, _dedent.default)`
158
+ test('my test', async (done) => {
159
+ await myAsyncTask();
160
+ expect(true).toBe(false);
161
+ done();
162
+ });
163
+ `,
164
+ errors: [{
165
+ messageId: 'useAwaitInsteadOfCallback',
166
+ line: 1,
167
+ column: 24
168
+ }]
169
+ }, {
170
+ code: (0, _dedent.default)`
171
+ test('something', (done) => {
172
+ done();
173
+ });
174
+ `,
175
+ errors: [{
176
+ messageId: 'noDoneCallback',
177
+ line: 1,
178
+ column: 20,
179
+ suggestions: [{
180
+ messageId: 'suggestWrappingInPromise',
181
+ data: {
182
+ callback: 'done'
183
+ },
184
+ output: (0, _dedent.default)`
185
+ test('something', () => {return new Promise(done => {
186
+ done();
187
+ })});
188
+ `
189
+ }]
190
+ }]
191
+ }, {
192
+ code: 'afterEach((...args) => {args[0]();})',
193
+ errors: [{
194
+ messageId: 'noDoneCallback',
195
+ line: 1,
196
+ column: 12
197
+ }]
198
+ }, {
199
+ code: 'beforeAll(done => {done();})',
200
+ errors: [{
201
+ messageId: 'noDoneCallback',
202
+ line: 1,
203
+ column: 11,
204
+ suggestions: [{
205
+ messageId: 'suggestWrappingInPromise',
206
+ data: {
207
+ callback: 'done'
208
+ },
209
+ output: 'beforeAll(() => {return new Promise(done => {done();})})'
210
+ }]
211
+ }]
212
+ }, {
213
+ code: 'beforeAll(finished => {finished();})',
214
+ errors: [{
215
+ messageId: 'noDoneCallback',
216
+ line: 1,
217
+ column: 11,
218
+ suggestions: [{
219
+ messageId: 'suggestWrappingInPromise',
220
+ data: {
221
+ callback: 'finished'
222
+ },
223
+ output: 'beforeAll(() => {return new Promise(finished => {finished();})})'
224
+ }]
225
+ }]
226
+ }, {
227
+ code: 'beforeEach((done) => {done();})',
228
+ errors: [{
229
+ messageId: 'noDoneCallback',
230
+ line: 1,
231
+ column: 13,
232
+ suggestions: [{
233
+ messageId: 'suggestWrappingInPromise',
234
+ data: {
235
+ callback: 'done'
236
+ },
237
+ output: 'beforeEach(() => {return new Promise(done => {done();})})'
238
+ }]
239
+ }]
240
+ }, {
241
+ code: 'afterAll(done => done())',
242
+ errors: [{
243
+ messageId: 'noDoneCallback',
244
+ line: 1,
245
+ column: 10,
246
+ suggestions: [{
247
+ messageId: 'suggestWrappingInPromise',
248
+ data: {
249
+ callback: 'done'
250
+ },
251
+ output: 'afterAll(() => new Promise(done => done()))'
252
+ }]
253
+ }]
254
+ }, {
255
+ code: 'afterEach((done) => done())',
256
+ errors: [{
257
+ messageId: 'noDoneCallback',
258
+ line: 1,
259
+ column: 12,
260
+ suggestions: [{
261
+ messageId: 'suggestWrappingInPromise',
262
+ data: {
263
+ callback: 'done'
264
+ },
265
+ output: 'afterEach(() => new Promise(done => done()))'
266
+ }]
267
+ }]
268
+ }, {
269
+ code: 'beforeAll(function(done) {done();})',
270
+ errors: [{
271
+ messageId: 'noDoneCallback',
272
+ line: 1,
273
+ column: 20,
274
+ suggestions: [{
275
+ messageId: 'suggestWrappingInPromise',
276
+ data: {
277
+ callback: 'done'
278
+ },
279
+ output: 'beforeAll(function() {return new Promise(done => {done();})})'
280
+ }]
281
+ }]
282
+ }, {
283
+ code: 'afterEach(function (done) {done();})',
284
+ errors: [{
285
+ messageId: 'noDoneCallback',
286
+ line: 1,
287
+ column: 21,
288
+ suggestions: [{
289
+ messageId: 'suggestWrappingInPromise',
290
+ data: {
291
+ callback: 'done'
292
+ },
293
+ output: 'afterEach(function () {return new Promise(done => {done();})})'
294
+ }]
295
+ }]
296
+ }, {
297
+ code: 'beforeAll(async done => {done();})',
298
+ errors: [{
299
+ messageId: 'useAwaitInsteadOfCallback',
300
+ line: 1,
301
+ column: 17
302
+ }]
303
+ }, {
304
+ code: 'beforeAll(async done => done())',
305
+ errors: [{
306
+ messageId: 'useAwaitInsteadOfCallback',
307
+ line: 1,
308
+ column: 17
309
+ }]
310
+ }, {
311
+ code: 'beforeAll(async function (done) {done();})',
312
+ errors: [{
313
+ messageId: 'useAwaitInsteadOfCallback',
314
+ line: 1,
315
+ column: 27
316
+ }]
317
+ }, {
318
+ code: (0, _dedent.default)`
319
+ afterAll(async (done) => {
320
+ await myAsyncTask();
321
+ done();
322
+ });
323
+ `,
324
+ errors: [{
325
+ messageId: 'useAwaitInsteadOfCallback',
326
+ line: 1,
327
+ column: 17
328
+ }]
329
+ }, {
330
+ code: (0, _dedent.default)`
331
+ beforeEach((done) => {
332
+ done();
333
+ });
334
+ `,
335
+ errors: [{
336
+ messageId: 'noDoneCallback',
337
+ line: 1,
338
+ column: 13,
339
+ suggestions: [{
340
+ messageId: 'suggestWrappingInPromise',
341
+ data: {
342
+ callback: 'done'
343
+ },
344
+ output: (0, _dedent.default)`
345
+ beforeEach(() => {return new Promise(done => {
346
+ done();
347
+ })});
348
+ `
349
+ }]
350
+ }]
351
+ }, {
352
+ code: (0, _dedent.default)`
353
+ import { beforeEach } from '@jest/globals';
354
+
355
+ beforeEach((done) => {
356
+ done();
357
+ });
358
+ `,
359
+ parserOptions: {
360
+ sourceType: 'module'
361
+ },
362
+ errors: [{
363
+ messageId: 'noDoneCallback',
364
+ line: 3,
365
+ column: 13,
366
+ suggestions: [{
367
+ messageId: 'suggestWrappingInPromise',
368
+ data: {
369
+ callback: 'done'
370
+ },
371
+ output: (0, _dedent.default)`
372
+ import { beforeEach } from '@jest/globals';
373
+
374
+ beforeEach(() => {return new Promise(done => {
375
+ done();
376
+ })});
377
+ `
378
+ }]
379
+ }]
380
+ }, {
381
+ code: (0, _dedent.default)`
382
+ import { beforeEach as atTheStartOfEachTest } from '@jest/globals';
383
+
384
+ atTheStartOfEachTest((done) => {
385
+ done();
386
+ });
387
+ `,
388
+ parserOptions: {
389
+ sourceType: 'module'
390
+ },
391
+ errors: [{
392
+ messageId: 'noDoneCallback',
393
+ line: 3,
394
+ column: 23,
395
+ suggestions: [{
396
+ messageId: 'suggestWrappingInPromise',
397
+ data: {
398
+ callback: 'done'
399
+ },
400
+ output: (0, _dedent.default)`
401
+ import { beforeEach as atTheStartOfEachTest } from '@jest/globals';
402
+
403
+ atTheStartOfEachTest(() => {return new Promise(done => {
404
+ done();
405
+ })});
406
+ `
407
+ }]
408
+ }]
409
+ }, {
410
+ code: 'test.each``("something", ({ a, b }, done) => { done(); })',
411
+ errors: [{
412
+ messageId: 'noDoneCallback',
413
+ line: 1,
414
+ column: 37
415
+ }]
416
+ }, {
417
+ code: 'it.each``("something", ({ a, b }, done) => { done(); })',
418
+ errors: [{
419
+ messageId: 'noDoneCallback',
420
+ line: 1,
421
+ column: 35
422
+ }]
423
+ }]
424
+ });