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,1437 @@
1
+ "use strict";
2
+
3
+ var _utils = require("@typescript-eslint/utils");
4
+ var _dedent = _interopRequireDefault(require("dedent"));
5
+ var _preferExpectAssertions = _interopRequireDefault(require("../prefer-expect-assertions"));
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('prefer-expect-assertions', _preferExpectAssertions.default, {
15
+ valid: ['test("nonsense", [])', 'test("it1", () => {expect.assertions(0);})', 'test("it1", function() {expect.assertions(0);})', 'test("it1", function() {expect.hasAssertions();})', 'it("it1", function() {expect.assertions(0);})', (0, _dedent.default)`
16
+ it("it1", function() {
17
+ expect.assertions(1);
18
+ expect(someValue).toBe(true)
19
+ });
20
+ `, 'test("it1")', 'itHappensToStartWithIt("foo", function() {})', 'testSomething("bar", function() {})', 'it(async () => {expect.assertions(0);})', (0, _dedent.default)`
21
+ it("returns numbers that are greater than four", function() {
22
+ expect.assertions(2);
23
+
24
+ for(let thing in things) {
25
+ expect(number).toBeGreaterThan(4);
26
+ }
27
+ });
28
+ `, (0, _dedent.default)`
29
+ it("returns numbers that are greater than four", function() {
30
+ expect.hasAssertions();
31
+
32
+ for (let i = 0; i < things.length; i++) {
33
+ expect(number).toBeGreaterThan(4);
34
+ }
35
+ });
36
+ `, {
37
+ code: (0, _dedent.default)`
38
+ it("it1", async () => {
39
+ expect.assertions(1);
40
+ expect(someValue).toBe(true)
41
+ });
42
+ `,
43
+ options: [{
44
+ onlyFunctionsWithAsyncKeyword: true
45
+ }]
46
+ }, {
47
+ code: (0, _dedent.default)`
48
+ it("it1", function() {
49
+ expect(someValue).toBe(true)
50
+ });
51
+ `,
52
+ options: [{
53
+ onlyFunctionsWithAsyncKeyword: true
54
+ }]
55
+ }, {
56
+ code: 'it("it1", () => {})',
57
+ options: [{
58
+ onlyFunctionsWithAsyncKeyword: true
59
+ }]
60
+ }, {
61
+ code: (0, _dedent.default)`
62
+ it("returns numbers that are greater than four", async () => {
63
+ expect.assertions(2);
64
+
65
+ for(let thing in things) {
66
+ expect(number).toBeGreaterThan(4);
67
+ }
68
+ });
69
+ `,
70
+ options: [{
71
+ onlyFunctionsWithAsyncKeyword: true
72
+ }]
73
+ }, {
74
+ code: (0, _dedent.default)`
75
+ it("returns numbers that are greater than four", () => {
76
+ for(let thing in things) {
77
+ expect(number).toBeGreaterThan(4);
78
+ }
79
+ });
80
+ `,
81
+ options: [{
82
+ onlyFunctionsWithAsyncKeyword: true
83
+ }]
84
+ }, {
85
+ code: (0, _dedent.default)`
86
+ import { expect as pleaseExpect } from '@jest/globals';
87
+
88
+ it("returns numbers that are greater than four", function() {
89
+ pleaseExpect.assertions(2);
90
+
91
+ for(let thing in things) {
92
+ pleaseExpect(number).toBeGreaterThan(4);
93
+ }
94
+ });
95
+ `,
96
+ parserOptions: {
97
+ sourceType: 'module'
98
+ }
99
+ }],
100
+ invalid: [{
101
+ code: 'it("it1", () => foo())',
102
+ errors: [{
103
+ messageId: 'haveExpectAssertions',
104
+ column: 1,
105
+ line: 1,
106
+ suggestions: null
107
+ }]
108
+ }, {
109
+ code: "it('resolves', () => expect(staged()).toBe(true));",
110
+ errors: [{
111
+ messageId: 'haveExpectAssertions',
112
+ column: 1,
113
+ line: 1,
114
+ suggestions: null
115
+ }]
116
+ }, {
117
+ code: "it('resolves', async () => expect(await staged()).toBe(true));",
118
+ errors: [{
119
+ messageId: 'haveExpectAssertions',
120
+ column: 1,
121
+ line: 1,
122
+ suggestions: null
123
+ }]
124
+ }, {
125
+ code: 'it("it1", () => {})',
126
+ errors: [{
127
+ messageId: 'haveExpectAssertions',
128
+ column: 1,
129
+ line: 1,
130
+ suggestions: [{
131
+ messageId: 'suggestAddingHasAssertions',
132
+ output: 'it("it1", () => {expect.hasAssertions();})'
133
+ }, {
134
+ messageId: 'suggestAddingAssertions',
135
+ output: 'it("it1", () => {expect.assertions();})'
136
+ }]
137
+ }]
138
+ }, {
139
+ code: 'it("it1", () => { foo()})',
140
+ errors: [{
141
+ messageId: 'haveExpectAssertions',
142
+ column: 1,
143
+ line: 1,
144
+ suggestions: [{
145
+ messageId: 'suggestAddingHasAssertions',
146
+ output: 'it("it1", () => {expect.hasAssertions(); foo()})'
147
+ }, {
148
+ messageId: 'suggestAddingAssertions',
149
+ output: 'it("it1", () => {expect.assertions(); foo()})'
150
+ }]
151
+ }]
152
+ }, {
153
+ code: (0, _dedent.default)`
154
+ it("it1", function() {
155
+ someFunctionToDo();
156
+ someFunctionToDo2();
157
+ });
158
+ `,
159
+ errors: [{
160
+ messageId: 'haveExpectAssertions',
161
+ column: 1,
162
+ line: 1,
163
+ suggestions: [{
164
+ messageId: 'suggestAddingHasAssertions',
165
+ output: (0, _dedent.default)`
166
+ it("it1", function() {expect.hasAssertions();
167
+ someFunctionToDo();
168
+ someFunctionToDo2();
169
+ });
170
+ `
171
+ }, {
172
+ messageId: 'suggestAddingAssertions',
173
+ output: (0, _dedent.default)`
174
+ it("it1", function() {expect.assertions();
175
+ someFunctionToDo();
176
+ someFunctionToDo2();
177
+ });
178
+ `
179
+ }]
180
+ }]
181
+ }, {
182
+ code: 'it("it1", function() {var a = 2;})',
183
+ errors: [{
184
+ messageId: 'haveExpectAssertions',
185
+ column: 1,
186
+ line: 1,
187
+ suggestions: [{
188
+ messageId: 'suggestAddingHasAssertions',
189
+ output: 'it("it1", function() {expect.hasAssertions();var a = 2;})'
190
+ }, {
191
+ messageId: 'suggestAddingAssertions',
192
+ output: 'it("it1", function() {expect.assertions();var a = 2;})'
193
+ }]
194
+ }]
195
+ }, {
196
+ code: 'it("it1", function() {expect.assertions();})',
197
+ errors: [{
198
+ messageId: 'assertionsRequiresOneArgument',
199
+ column: 30,
200
+ line: 1,
201
+ suggestions: []
202
+ }]
203
+ }, {
204
+ code: 'it("it1", function() {expect.assertions(1,2);})',
205
+ errors: [{
206
+ messageId: 'assertionsRequiresOneArgument',
207
+ column: 43,
208
+ line: 1,
209
+ suggestions: [{
210
+ messageId: 'suggestRemovingExtraArguments',
211
+ output: 'it("it1", function() {expect.assertions(1,);})'
212
+ }]
213
+ }]
214
+ }, {
215
+ code: 'it("it1", function() {expect.assertions(1,2,);})',
216
+ errors: [{
217
+ messageId: 'assertionsRequiresOneArgument',
218
+ column: 43,
219
+ line: 1,
220
+ suggestions: [{
221
+ messageId: 'suggestRemovingExtraArguments',
222
+ output: 'it("it1", function() {expect.assertions(1,);})'
223
+ }]
224
+ }]
225
+ }, {
226
+ code: 'it("it1", function() {expect.assertions("1");})',
227
+ errors: [{
228
+ messageId: 'assertionsRequiresNumberArgument',
229
+ column: 41,
230
+ line: 1,
231
+ suggestions: []
232
+ }]
233
+ }, {
234
+ code: 'it("it1", function() {expect.hasAssertions("1");})',
235
+ errors: [{
236
+ messageId: 'hasAssertionsTakesNoArguments',
237
+ column: 30,
238
+ line: 1,
239
+ suggestions: [{
240
+ messageId: 'suggestRemovingExtraArguments',
241
+ output: 'it("it1", function() {expect.hasAssertions();})'
242
+ }]
243
+ }]
244
+ }, {
245
+ code: 'it("it1", function() {expect.hasAssertions("1",);})',
246
+ errors: [{
247
+ messageId: 'hasAssertionsTakesNoArguments',
248
+ column: 30,
249
+ line: 1,
250
+ suggestions: [{
251
+ messageId: 'suggestRemovingExtraArguments',
252
+ output: 'it("it1", function() {expect.hasAssertions();})'
253
+ }]
254
+ }]
255
+ }, {
256
+ code: 'it("it1", function() {expect.hasAssertions("1", "2");})',
257
+ errors: [{
258
+ messageId: 'hasAssertionsTakesNoArguments',
259
+ column: 30,
260
+ line: 1,
261
+ suggestions: [{
262
+ messageId: 'suggestRemovingExtraArguments',
263
+ output: 'it("it1", function() {expect.hasAssertions();})'
264
+ }]
265
+ }]
266
+ }, {
267
+ code: (0, _dedent.default)`
268
+ it("it1", function() {
269
+ expect.hasAssertions(() => {
270
+ someFunctionToDo();
271
+ someFunctionToDo2();
272
+ });
273
+ });
274
+ `,
275
+ errors: [{
276
+ messageId: 'hasAssertionsTakesNoArguments',
277
+ column: 10,
278
+ line: 2,
279
+ suggestions: [{
280
+ messageId: 'suggestRemovingExtraArguments',
281
+ output: (0, _dedent.default)`
282
+ it("it1", function() {
283
+ expect.hasAssertions();
284
+ });
285
+ `
286
+ }]
287
+ }]
288
+ }, {
289
+ code: (0, _dedent.default)`
290
+ it("it1", async function() {
291
+ expect(someValue).toBe(true);
292
+ });
293
+ `,
294
+ options: [{
295
+ onlyFunctionsWithAsyncKeyword: true
296
+ }],
297
+ errors: [{
298
+ messageId: 'haveExpectAssertions',
299
+ column: 1,
300
+ line: 1
301
+ }]
302
+ }, {
303
+ code: (0, _dedent.default)`
304
+ it("returns numbers that are greater than four", async () => {
305
+ for(let thing in things) {
306
+ expect(number).toBeGreaterThan(4);
307
+ }
308
+ });
309
+ `,
310
+ options: [{
311
+ onlyFunctionsWithAsyncKeyword: true
312
+ }],
313
+ errors: [{
314
+ messageId: 'haveExpectAssertions',
315
+ column: 1,
316
+ line: 1
317
+ }]
318
+ }, {
319
+ code: (0, _dedent.default)`
320
+ it("returns numbers that are greater than four", async () => {
321
+ for (const number of getNumbers()) {
322
+ expect(number).toBeGreaterThan(4);
323
+ }
324
+ });
325
+ `,
326
+ options: [{
327
+ onlyFunctionsWithAsyncKeyword: true
328
+ }],
329
+ errors: [{
330
+ messageId: 'haveExpectAssertions',
331
+ column: 1,
332
+ line: 1
333
+ }]
334
+ }, {
335
+ code: (0, _dedent.default)`
336
+ it("returns numbers that are greater than four", async () => {
337
+ for (const number of getNumbers()) {
338
+ expect(number).toBeGreaterThan(4);
339
+ }
340
+ });
341
+
342
+ it("returns numbers that are greater than five", () => {
343
+ for (const number of getNumbers()) {
344
+ expect(number).toBeGreaterThan(5);
345
+ }
346
+ });
347
+ `,
348
+ options: [{
349
+ onlyFunctionsWithAsyncKeyword: true
350
+ }],
351
+ errors: [{
352
+ messageId: 'haveExpectAssertions',
353
+ column: 1,
354
+ line: 1
355
+ }]
356
+ }]
357
+ });
358
+ ruleTester.run('prefer-expect-assertions (loops)', _preferExpectAssertions.default, {
359
+ valid: [{
360
+ code: (0, _dedent.default)`
361
+ const expectNumbersToBeGreaterThan = (numbers, value) => {
362
+ for (let number of numbers) {
363
+ expect(number).toBeGreaterThan(value);
364
+ }
365
+ };
366
+
367
+ it('returns numbers that are greater than two', function () {
368
+ expectNumbersToBeGreaterThan(getNumbers(), 2);
369
+ });
370
+ `,
371
+ options: [{
372
+ onlyFunctionsWithExpectInLoop: true
373
+ }]
374
+ }, {
375
+ code: (0, _dedent.default)`
376
+ it("returns numbers that are greater than five", function () {
377
+ expect.assertions(2);
378
+
379
+ for (const number of getNumbers()) {
380
+ expect(number).toBeGreaterThan(5);
381
+ }
382
+ });
383
+ `,
384
+ options: [{
385
+ onlyFunctionsWithExpectInLoop: true
386
+ }]
387
+ }, {
388
+ code: (0, _dedent.default)`
389
+ it("returns things that are less than ten", function () {
390
+ expect.hasAssertions();
391
+
392
+ for (const thing in things) {
393
+ expect(thing).toBeLessThan(10);
394
+ }
395
+ });
396
+ `,
397
+ options: [{
398
+ onlyFunctionsWithExpectInLoop: true
399
+ }]
400
+ }],
401
+ invalid: [{
402
+ code: (0, _dedent.default)`
403
+ it('only returns numbers that are greater than six', () => {
404
+ for (const number of getNumbers()) {
405
+ expect(number).toBeGreaterThan(6);
406
+ }
407
+ });
408
+ `,
409
+ options: [{
410
+ onlyFunctionsWithExpectInLoop: true
411
+ }],
412
+ errors: [{
413
+ messageId: 'haveExpectAssertions',
414
+ column: 1,
415
+ line: 1
416
+ }]
417
+ }, {
418
+ code: (0, _dedent.default)`
419
+ it('returns numbers that are greater than two', function () {
420
+ const expectNumbersToBeGreaterThan = (numbers, value) => {
421
+ for (let number of numbers) {
422
+ expect(number).toBeGreaterThan(value);
423
+ }
424
+ };
425
+
426
+ expectNumbersToBeGreaterThan(getNumbers(), 2);
427
+ });
428
+ `,
429
+ options: [{
430
+ onlyFunctionsWithExpectInLoop: true
431
+ }],
432
+ errors: [{
433
+ messageId: 'haveExpectAssertions',
434
+ column: 1,
435
+ line: 1
436
+ }]
437
+ }, {
438
+ code: (0, _dedent.default)`
439
+ it("only returns numbers that are greater than seven", function () {
440
+ const numbers = getNumbers();
441
+
442
+ for (let i = 0; i < numbers.length; i++) {
443
+ expect(numbers[i]).toBeGreaterThan(7);
444
+ }
445
+ });
446
+ `,
447
+ options: [{
448
+ onlyFunctionsWithExpectInLoop: true
449
+ }],
450
+ errors: [{
451
+ messageId: 'haveExpectAssertions',
452
+ column: 1,
453
+ line: 1
454
+ }]
455
+ }, {
456
+ code: (0, _dedent.default)`
457
+ it('has the number two', () => {
458
+ expect(number).toBe(2);
459
+ });
460
+
461
+ it('only returns numbers that are less than twenty', () => {
462
+ for (const number of getNumbers()) {
463
+ expect(number).toBeLessThan(20);
464
+ }
465
+ });
466
+ `,
467
+ options: [{
468
+ onlyFunctionsWithExpectInLoop: true
469
+ }],
470
+ errors: [{
471
+ messageId: 'haveExpectAssertions',
472
+ column: 1,
473
+ line: 5
474
+ }]
475
+ }, {
476
+ code: (0, _dedent.default)`
477
+ it("is wrong");
478
+
479
+ it("is a test", () => {
480
+ for (const number of getNumbers()) {
481
+ expect(number).toBeGreaterThan(4);
482
+ }
483
+ });
484
+ `,
485
+ options: [{
486
+ onlyFunctionsWithExpectInLoop: true
487
+ }],
488
+ errors: [{
489
+ messageId: 'haveExpectAssertions',
490
+ column: 1,
491
+ line: 3
492
+ }]
493
+ }, {
494
+ code: (0, _dedent.default)`
495
+ it("is a number that is greater than four", () => {
496
+ expect(number).toBeGreaterThan(4);
497
+ });
498
+
499
+ it("returns numbers that are greater than four", () => {
500
+ for (const number of getNumbers()) {
501
+ expect(number).toBeGreaterThan(4);
502
+ }
503
+ });
504
+
505
+ it("returns numbers that are greater than five", () => {
506
+ expect(number).toBeGreaterThan(5);
507
+ });
508
+ `,
509
+ options: [{
510
+ onlyFunctionsWithExpectInLoop: true
511
+ }],
512
+ errors: [{
513
+ messageId: 'haveExpectAssertions',
514
+ column: 1,
515
+ line: 5
516
+ }]
517
+ }, {
518
+ code: (0, _dedent.default)`
519
+ it.each([1, 2, 3])("returns numbers that are greater than four", () => {
520
+ for (const number of getNumbers()) {
521
+ expect(number).toBeGreaterThan(4);
522
+ }
523
+ });
524
+
525
+ it("is a number that is greater than four", () => {
526
+ expect(number).toBeGreaterThan(4);
527
+ });
528
+ `,
529
+ options: [{
530
+ onlyFunctionsWithExpectInLoop: true
531
+ }],
532
+ errors: [{
533
+ messageId: 'haveExpectAssertions',
534
+ column: 1,
535
+ line: 1
536
+ }]
537
+ }, {
538
+ code: (0, _dedent.default)`
539
+ it("returns numbers that are greater than four", () => {
540
+ for (const number of getNumbers()) {
541
+ expect(number).toBeGreaterThan(4);
542
+ }
543
+ });
544
+
545
+ it("is a number that is greater than four", () => {
546
+ expect(number).toBeGreaterThan(4);
547
+ });
548
+ `,
549
+ options: [{
550
+ onlyFunctionsWithExpectInLoop: true
551
+ }],
552
+ errors: [{
553
+ messageId: 'haveExpectAssertions',
554
+ column: 1,
555
+ line: 1
556
+ }]
557
+ }, {
558
+ code: (0, _dedent.default)`
559
+ it("returns numbers that are greater than four", () => {
560
+ for (const number of getNumbers()) {
561
+ expect(number).toBeGreaterThan(4);
562
+ }
563
+ });
564
+
565
+ it("is a number that is greater than four", () => {
566
+ expect.hasAssertions();
567
+
568
+ expect(number).toBeGreaterThan(4);
569
+ });
570
+ `,
571
+ options: [{
572
+ onlyFunctionsWithExpectInLoop: true
573
+ }],
574
+ errors: [{
575
+ messageId: 'haveExpectAssertions',
576
+ column: 1,
577
+ line: 1
578
+ }]
579
+ }, {
580
+ code: (0, _dedent.default)`
581
+ it("it1", () => {
582
+ expect.hasAssertions();
583
+
584
+ for (const number of getNumbers()) {
585
+ expect(number).toBeGreaterThan(0);
586
+ }
587
+ });
588
+
589
+ it("it1", () => {
590
+ for (const number of getNumbers()) {
591
+ expect(number).toBeGreaterThan(0);
592
+ }
593
+ });
594
+ `,
595
+ options: [{
596
+ onlyFunctionsWithExpectInLoop: true
597
+ }],
598
+ errors: [{
599
+ messageId: 'haveExpectAssertions',
600
+ column: 1,
601
+ line: 9
602
+ }]
603
+ }, {
604
+ code: (0, _dedent.default)`
605
+ it("returns numbers that are greater than four", async () => {
606
+ for (const number of await getNumbers()) {
607
+ expect(number).toBeGreaterThan(4);
608
+ }
609
+ });
610
+
611
+ it("returns numbers that are greater than five", () => {
612
+ for (const number of getNumbers()) {
613
+ expect(number).toBeGreaterThan(5);
614
+ }
615
+ });
616
+ `,
617
+ options: [{
618
+ onlyFunctionsWithExpectInLoop: true
619
+ }],
620
+ errors: [{
621
+ messageId: 'haveExpectAssertions',
622
+ column: 1,
623
+ line: 1
624
+ }, {
625
+ messageId: 'haveExpectAssertions',
626
+ column: 1,
627
+ line: 7
628
+ }]
629
+ }, {
630
+ code: (0, _dedent.default)`
631
+ it("it1", async () => {
632
+ expect.hasAssertions();
633
+
634
+ for (const number of getNumbers()) {
635
+ expect(number).toBeGreaterThan(4);
636
+ }
637
+ });
638
+
639
+ it("it1", () => {
640
+ for (const number of getNumbers()) {
641
+ expect(number).toBeGreaterThan(4);
642
+ }
643
+ });
644
+ `,
645
+ options: [{
646
+ onlyFunctionsWithExpectInLoop: true
647
+ }],
648
+ errors: [{
649
+ messageId: 'haveExpectAssertions',
650
+ column: 1,
651
+ line: 9
652
+ }]
653
+ }, {
654
+ code: (0, _dedent.default)`
655
+ it.skip.each\`\`("it1", async () => {
656
+ expect.hasAssertions();
657
+
658
+ for (const number of getNumbers()) {
659
+ expect(number).toBeGreaterThan(4);
660
+ }
661
+ });
662
+
663
+ it("it1", () => {
664
+ for (const number of getNumbers()) {
665
+ expect(number).toBeGreaterThan(4);
666
+ }
667
+ });
668
+ `,
669
+ options: [{
670
+ onlyFunctionsWithExpectInLoop: true
671
+ }],
672
+ errors: [{
673
+ messageId: 'haveExpectAssertions',
674
+ column: 1,
675
+ line: 9
676
+ }]
677
+ }, {
678
+ code: (0, _dedent.default)`
679
+ it("it1", async () => {
680
+ for (const number of getNumbers()) {
681
+ expect(number).toBeGreaterThan(4);
682
+ }
683
+ });
684
+
685
+ it("it1", () => {
686
+ expect.hasAssertions();
687
+
688
+ for (const number of getNumbers()) {
689
+ expect(number).toBeGreaterThan(4);
690
+ }
691
+ });
692
+ `,
693
+ options: [{
694
+ onlyFunctionsWithExpectInLoop: true
695
+ }],
696
+ errors: [{
697
+ messageId: 'haveExpectAssertions',
698
+ column: 1,
699
+ line: 1
700
+ }]
701
+ }]
702
+ });
703
+ ruleTester.run('prefer-expect-assertions (callbacks)', _preferExpectAssertions.default, {
704
+ valid: [{
705
+ code: (0, _dedent.default)`
706
+ const expectNumbersToBeGreaterThan = (numbers, value) => {
707
+ numbers.forEach(number => {
708
+ expect(number).toBeGreaterThan(value);
709
+ });
710
+ };
711
+
712
+ it('returns numbers that are greater than two', function () {
713
+ expectNumbersToBeGreaterThan(getNumbers(), 2);
714
+ });
715
+ `,
716
+ options: [{
717
+ onlyFunctionsWithExpectInCallback: true
718
+ }]
719
+ }, {
720
+ code: (0, _dedent.default)`
721
+ it('returns numbers that are greater than two', function () {
722
+ expect.assertions(2);
723
+
724
+ const expectNumbersToBeGreaterThan = (numbers, value) => {
725
+ for (let number of numbers) {
726
+ expect(number).toBeGreaterThan(value);
727
+ }
728
+ };
729
+
730
+ expectNumbersToBeGreaterThan(getNumbers(), 2);
731
+ });
732
+ `,
733
+ options: [{
734
+ onlyFunctionsWithExpectInCallback: true
735
+ }]
736
+ }, {
737
+ code: (0, _dedent.default)`
738
+ it("returns numbers that are greater than five", function () {
739
+ expect.assertions(2);
740
+
741
+ getNumbers().forEach(number => {
742
+ expect(number).toBeGreaterThan(5);
743
+ });
744
+ });
745
+ `,
746
+ options: [{
747
+ onlyFunctionsWithExpectInCallback: true
748
+ }]
749
+ }, {
750
+ code: (0, _dedent.default)`
751
+ it("returns things that are less than ten", function () {
752
+ expect.hasAssertions();
753
+
754
+ things.forEach(thing => {
755
+ expect(thing).toBeLessThan(10);
756
+ });
757
+ });
758
+ `,
759
+ options: [{
760
+ onlyFunctionsWithExpectInCallback: true
761
+ }]
762
+ }, {
763
+ code: (0, _dedent.default)`
764
+ it('sends the data as a string', () => {
765
+ expect.hasAssertions();
766
+
767
+ const stream = openStream();
768
+
769
+ stream.on('data', data => {
770
+ expect(data).toBe(expect.any(String));
771
+ });
772
+ });
773
+ `,
774
+ options: [{
775
+ onlyFunctionsWithExpectInCallback: true
776
+ }]
777
+ }, {
778
+ code: (0, _dedent.default)`
779
+ it('responds ok', function () {
780
+ expect.assertions(1);
781
+
782
+ client.get('/user', response => {
783
+ expect(response.status).toBe(200);
784
+ });
785
+ });
786
+ `,
787
+ options: [{
788
+ onlyFunctionsWithExpectInCallback: true
789
+ }]
790
+ }, {
791
+ code: (0, _dedent.default)`
792
+ it.each([1, 2, 3])("returns ok", id => {
793
+ expect.assertions(3);
794
+
795
+ client.get(\`/users/$\{id}\`, response => {
796
+ expect(response.status).toBe(200);
797
+ });
798
+ });
799
+
800
+ it("is a number that is greater than four", () => {
801
+ expect(number).toBeGreaterThan(4);
802
+ });
803
+ `,
804
+ options: [{
805
+ onlyFunctionsWithExpectInCallback: true
806
+ }]
807
+ }, {
808
+ code: (0, _dedent.default)`
809
+ it('is a test', () => {
810
+ expect(expected).toBe(actual);
811
+ });
812
+
813
+ describe('my test', () => {
814
+ it('is another test', () => {
815
+ expect(expected).toBe(actual);
816
+ });
817
+ });
818
+ `,
819
+ options: [{
820
+ onlyFunctionsWithExpectInCallback: true
821
+ }]
822
+ }],
823
+ invalid: [{
824
+ code: (0, _dedent.default)`
825
+ it('sends the data as a string', () => {
826
+ const stream = openStream();
827
+
828
+ stream.on('data', data => {
829
+ expect(data).toBe(expect.any(String));
830
+ });
831
+ });
832
+ `,
833
+ options: [{
834
+ onlyFunctionsWithExpectInCallback: true
835
+ }],
836
+ errors: [{
837
+ messageId: 'haveExpectAssertions',
838
+ column: 1,
839
+ line: 1
840
+ }]
841
+ }, {
842
+ code: (0, _dedent.default)`
843
+ it('responds ok', function () {
844
+ client.get('/user', response => {
845
+ expect(response.status).toBe(200);
846
+ });
847
+ });
848
+ `,
849
+ options: [{
850
+ onlyFunctionsWithExpectInCallback: true
851
+ }],
852
+ errors: [{
853
+ messageId: 'haveExpectAssertions',
854
+ column: 1,
855
+ line: 1
856
+ }]
857
+ }, {
858
+ code: (0, _dedent.default)`
859
+ it('responds ok', function () {
860
+ client.get('/user', response => {
861
+ expect.assertions(1);
862
+
863
+ expect(response.status).toBe(200);
864
+ });
865
+ });
866
+ `,
867
+ options: [{
868
+ onlyFunctionsWithExpectInCallback: true
869
+ }],
870
+ errors: [{
871
+ messageId: 'haveExpectAssertions',
872
+ column: 1,
873
+ line: 1
874
+ }]
875
+ }, {
876
+ code: (0, _dedent.default)`
877
+ it('responds ok', function () {
878
+ const expectOkResponse = response => {
879
+ expect.assertions(1);
880
+
881
+ expect(response.status).toBe(200);
882
+ };
883
+
884
+ client.get('/user', expectOkResponse);
885
+ });
886
+ `,
887
+ options: [{
888
+ onlyFunctionsWithExpectInCallback: true
889
+ }],
890
+ errors: [{
891
+ messageId: 'haveExpectAssertions',
892
+ column: 1,
893
+ line: 1
894
+ }]
895
+ }, {
896
+ code: (0, _dedent.default)`
897
+ it('returns numbers that are greater than two', function () {
898
+ const expectNumberToBeGreaterThan = (number, value) => {
899
+ expect(number).toBeGreaterThan(value);
900
+ };
901
+
902
+ expectNumberToBeGreaterThan(1, 2);
903
+ });
904
+ `,
905
+ options: [{
906
+ onlyFunctionsWithExpectInCallback: true
907
+ }],
908
+ errors: [{
909
+ messageId: 'haveExpectAssertions',
910
+ column: 1,
911
+ line: 1
912
+ }]
913
+ }, {
914
+ code: (0, _dedent.default)`
915
+ it('returns numbers that are greater than two', function () {
916
+ const expectNumbersToBeGreaterThan = (numbers, value) => {
917
+ for (let number of numbers) {
918
+ expect(number).toBeGreaterThan(value);
919
+ }
920
+ };
921
+
922
+ expectNumbersToBeGreaterThan(getNumbers(), 2);
923
+ });
924
+ `,
925
+ options: [{
926
+ onlyFunctionsWithExpectInCallback: true
927
+ }],
928
+ errors: [{
929
+ messageId: 'haveExpectAssertions',
930
+ column: 1,
931
+ line: 1
932
+ }]
933
+ }, {
934
+ code: (0, _dedent.default)`
935
+ it('only returns numbers that are greater than six', () => {
936
+ getNumbers().forEach(number => {
937
+ expect(number).toBeGreaterThan(6);
938
+ });
939
+ });
940
+ `,
941
+ options: [{
942
+ onlyFunctionsWithExpectInCallback: true
943
+ }],
944
+ errors: [{
945
+ messageId: 'haveExpectAssertions',
946
+ column: 1,
947
+ line: 1
948
+ }]
949
+ }, {
950
+ code: (0, _dedent.default)`
951
+ it("is wrong");
952
+
953
+ it('responds ok', function () {
954
+ const expectOkResponse = response => {
955
+ expect.assertions(1);
956
+
957
+ expect(response.status).toBe(200);
958
+ };
959
+
960
+ client.get('/user', expectOkResponse);
961
+ });
962
+ `,
963
+ options: [{
964
+ onlyFunctionsWithExpectInCallback: true
965
+ }],
966
+ errors: [{
967
+ messageId: 'haveExpectAssertions',
968
+ column: 1,
969
+ line: 3
970
+ }]
971
+ }, {
972
+ code: (0, _dedent.default)`
973
+ it("is a number that is greater than four", () => {
974
+ expect(number).toBeGreaterThan(4);
975
+ });
976
+
977
+ it('responds ok', function () {
978
+ const expectOkResponse = response => {
979
+ expect(response.status).toBe(200);
980
+ };
981
+
982
+ client.get('/user', expectOkResponse);
983
+ });
984
+
985
+ it("returns numbers that are greater than five", () => {
986
+ expect(number).toBeGreaterThan(5);
987
+ });
988
+ `,
989
+ options: [{
990
+ onlyFunctionsWithExpectInCallback: true
991
+ }],
992
+ errors: [{
993
+ messageId: 'haveExpectAssertions',
994
+ column: 1,
995
+ line: 5
996
+ }]
997
+ }, {
998
+ code: (0, _dedent.default)`
999
+ it("is a number that is greater than four", () => {
1000
+ expect(number).toBeGreaterThan(4);
1001
+ });
1002
+
1003
+ it("returns numbers that are greater than four", () => {
1004
+ getNumbers().map(number => {
1005
+ expect(number).toBeGreaterThan(0);
1006
+ });
1007
+ });
1008
+
1009
+ it("returns numbers that are greater than five", () => {
1010
+ expect(number).toBeGreaterThan(5);
1011
+ });
1012
+ `,
1013
+ options: [{
1014
+ onlyFunctionsWithExpectInCallback: true
1015
+ }],
1016
+ errors: [{
1017
+ messageId: 'haveExpectAssertions',
1018
+ column: 1,
1019
+ line: 5
1020
+ }]
1021
+ }, {
1022
+ code: (0, _dedent.default)`
1023
+ it.each([1, 2, 3])("returns ok", id => {
1024
+ client.get(\`/users/$\{id}\`, response => {
1025
+ expect(response.status).toBe(200);
1026
+ });
1027
+ });
1028
+
1029
+ it("is a number that is greater than four", () => {
1030
+ expect(number).toBeGreaterThan(4);
1031
+ });
1032
+ `,
1033
+ options: [{
1034
+ onlyFunctionsWithExpectInCallback: true
1035
+ }],
1036
+ errors: [{
1037
+ messageId: 'haveExpectAssertions',
1038
+ column: 1,
1039
+ line: 1
1040
+ }]
1041
+ }, {
1042
+ code: (0, _dedent.default)`
1043
+ it('responds ok', function () {
1044
+ client.get('/user', response => {
1045
+ expect(response.status).toBe(200);
1046
+ });
1047
+ });
1048
+
1049
+ it("is a number that is greater than four", () => {
1050
+ expect(number).toBeGreaterThan(4);
1051
+ });
1052
+ `,
1053
+ options: [{
1054
+ onlyFunctionsWithExpectInCallback: true
1055
+ }],
1056
+ errors: [{
1057
+ messageId: 'haveExpectAssertions',
1058
+ column: 1,
1059
+ line: 1
1060
+ }]
1061
+ }, {
1062
+ code: (0, _dedent.default)`
1063
+ it('responds ok', function () {
1064
+ client.get('/user', response => {
1065
+ expect(response.status).toBe(200);
1066
+ });
1067
+ });
1068
+
1069
+ it("is a number that is greater than four", () => {
1070
+ expect.hasAssertions();
1071
+
1072
+ expect(number).toBeGreaterThan(4);
1073
+ });
1074
+ `,
1075
+ options: [{
1076
+ onlyFunctionsWithExpectInCallback: true
1077
+ }],
1078
+ errors: [{
1079
+ messageId: 'haveExpectAssertions',
1080
+ column: 1,
1081
+ line: 1
1082
+ }]
1083
+ }, {
1084
+ code: (0, _dedent.default)`
1085
+ it("it1", () => {
1086
+ expect.hasAssertions();
1087
+
1088
+ getNumbers().forEach(number => {
1089
+ expect(number).toBeGreaterThan(0);
1090
+ });
1091
+ });
1092
+
1093
+ it("it1", () => {
1094
+ getNumbers().forEach(number => {
1095
+ expect(number).toBeGreaterThan(0);
1096
+ });
1097
+ });
1098
+ `,
1099
+ options: [{
1100
+ onlyFunctionsWithExpectInCallback: true
1101
+ }],
1102
+ errors: [{
1103
+ messageId: 'haveExpectAssertions',
1104
+ column: 1,
1105
+ line: 9
1106
+ }]
1107
+ }, {
1108
+ code: (0, _dedent.default)`
1109
+ it('responds ok', function () {
1110
+ expect.hasAssertions();
1111
+
1112
+ client.get('/user', response => {
1113
+ expect(response.status).toBe(200);
1114
+ });
1115
+ });
1116
+
1117
+ it('responds not found', function () {
1118
+ client.get('/user', response => {
1119
+ expect(response.status).toBe(404);
1120
+ });
1121
+ });
1122
+ `,
1123
+ options: [{
1124
+ onlyFunctionsWithExpectInCallback: true
1125
+ }],
1126
+ errors: [{
1127
+ messageId: 'haveExpectAssertions',
1128
+ column: 1,
1129
+ line: 9
1130
+ }]
1131
+ }, {
1132
+ code: (0, _dedent.default)`
1133
+ it.skip.each\`\`("it1", async () => {
1134
+ expect.hasAssertions();
1135
+
1136
+ client.get('/user', response => {
1137
+ expect(response.status).toBe(200);
1138
+ });
1139
+ });
1140
+
1141
+ it("responds ok", () => {
1142
+ client.get('/user', response => {
1143
+ expect(response.status).toBe(200);
1144
+ });
1145
+ });
1146
+ `,
1147
+ options: [{
1148
+ onlyFunctionsWithExpectInCallback: true
1149
+ }],
1150
+ errors: [{
1151
+ messageId: 'haveExpectAssertions',
1152
+ column: 1,
1153
+ line: 9
1154
+ }]
1155
+ }, {
1156
+ code: (0, _dedent.default)`
1157
+ it("returns numbers that are greater than four", function(expect) {
1158
+ expect.assertions(2);
1159
+
1160
+ for(let thing in things) {
1161
+ expect(number).toBeGreaterThan(4);
1162
+ }
1163
+ });
1164
+ `,
1165
+ parserOptions: {
1166
+ sourceType: 'module'
1167
+ },
1168
+ errors: [{
1169
+ endColumn: 3,
1170
+ column: 1,
1171
+ messageId: 'haveExpectAssertions'
1172
+ }]
1173
+ }]
1174
+ });
1175
+ ruleTester.run('prefer-expect-assertions (mixed)', _preferExpectAssertions.default, {
1176
+ valid: [{
1177
+ code: (0, _dedent.default)`
1178
+ it('only returns numbers that are greater than zero', async () => {
1179
+ expect.hasAssertions();
1180
+
1181
+ for (const number of await getNumbers()) {
1182
+ expect(number).toBeGreaterThan(0);
1183
+ }
1184
+ });
1185
+ `,
1186
+ options: [{
1187
+ onlyFunctionsWithAsyncKeyword: true,
1188
+ onlyFunctionsWithExpectInLoop: true
1189
+ }]
1190
+ }, {
1191
+ code: (0, _dedent.default)`
1192
+ it('only returns numbers that are greater than zero', async () => {
1193
+ expect.assertions(2);
1194
+
1195
+ for (const number of await getNumbers()) {
1196
+ expect(number).toBeGreaterThan(0);
1197
+ }
1198
+ });
1199
+ `,
1200
+ options: [{
1201
+ onlyFunctionsWithAsyncKeyword: true,
1202
+ onlyFunctionsWithExpectInLoop: true
1203
+ }]
1204
+ }],
1205
+ invalid: [{
1206
+ code: (0, _dedent.default)`
1207
+ it('only returns numbers that are greater than zero', () => {
1208
+ for (const number of getNumbers()) {
1209
+ expect(number).toBeGreaterThan(0);
1210
+ }
1211
+ });
1212
+
1213
+ it("is zero", () => {
1214
+ expect.hasAssertions();
1215
+
1216
+ expect(0).toBe(0);
1217
+ });
1218
+ `,
1219
+ options: [{
1220
+ onlyFunctionsWithExpectInLoop: true
1221
+ }],
1222
+ errors: [{
1223
+ messageId: 'haveExpectAssertions',
1224
+ column: 1,
1225
+ line: 1
1226
+ }]
1227
+ }, {
1228
+ code: (0, _dedent.default)`
1229
+ it('only returns numbers that are greater than zero', () => {
1230
+ expect.hasAssertions();
1231
+
1232
+ for (const number of getNumbers()) {
1233
+ expect(number).toBeGreaterThan(0);
1234
+ }
1235
+ });
1236
+
1237
+ it('only returns numbers that are less than 100', () => {
1238
+ for (const number of getNumbers()) {
1239
+ expect(number).toBeLessThan(0);
1240
+ }
1241
+ });
1242
+ `,
1243
+ options: [{
1244
+ onlyFunctionsWithExpectInLoop: true
1245
+ }],
1246
+ errors: [{
1247
+ messageId: 'haveExpectAssertions',
1248
+ column: 1,
1249
+ line: 9
1250
+ }]
1251
+ }, {
1252
+ code: (0, _dedent.default)`
1253
+ it("to be true", async function() {
1254
+ expect(someValue).toBe(true);
1255
+ });
1256
+ `,
1257
+ options: [{
1258
+ onlyFunctionsWithAsyncKeyword: true,
1259
+ onlyFunctionsWithExpectInLoop: true
1260
+ }],
1261
+ errors: [{
1262
+ messageId: 'haveExpectAssertions',
1263
+ column: 1,
1264
+ line: 1
1265
+ }]
1266
+ }, {
1267
+ code: (0, _dedent.default)`
1268
+ it('only returns numbers that are greater than zero', async () => {
1269
+ for (const number of getNumbers()) {
1270
+ expect(number).toBeGreaterThan(0);
1271
+ }
1272
+ });
1273
+ `,
1274
+ options: [{
1275
+ onlyFunctionsWithAsyncKeyword: true,
1276
+ onlyFunctionsWithExpectInLoop: true
1277
+ }],
1278
+ errors: [{
1279
+ messageId: 'haveExpectAssertions',
1280
+ column: 1,
1281
+ line: 1
1282
+ }]
1283
+ }]
1284
+ });
1285
+ ruleTester.run('.each support', _preferExpectAssertions.default, {
1286
+ valid: ['test.each()("is fine", () => { expect.assertions(0); })', 'test.each``("is fine", () => { expect.assertions(0); })', 'test.each()("is fine", () => { expect.hasAssertions(); })', 'test.each``("is fine", () => { expect.hasAssertions(); })', 'it.each()("is fine", () => { expect.assertions(0); })', 'it.each``("is fine", () => { expect.assertions(0); })', 'it.each()("is fine", () => { expect.hasAssertions(); })', 'it.each``("is fine", () => { expect.hasAssertions(); })', {
1287
+ code: 'test.each()("is fine", () => {})',
1288
+ options: [{
1289
+ onlyFunctionsWithAsyncKeyword: true
1290
+ }]
1291
+ }, {
1292
+ code: 'test.each``("is fine", () => {})',
1293
+ options: [{
1294
+ onlyFunctionsWithAsyncKeyword: true
1295
+ }]
1296
+ }, {
1297
+ code: 'it.each()("is fine", () => {})',
1298
+ options: [{
1299
+ onlyFunctionsWithAsyncKeyword: true
1300
+ }]
1301
+ }, {
1302
+ code: 'it.each``("is fine", () => {})',
1303
+ options: [{
1304
+ onlyFunctionsWithAsyncKeyword: true
1305
+ }]
1306
+ }, (0, _dedent.default)`
1307
+ describe.each(['hello'])('%s', () => {
1308
+ it('is fine', () => {
1309
+ expect.assertions(0);
1310
+ });
1311
+ });
1312
+ `, (0, _dedent.default)`
1313
+ describe.each\`\`('%s', () => {
1314
+ it('is fine', () => {
1315
+ expect.assertions(0);
1316
+ });
1317
+ });
1318
+ `, (0, _dedent.default)`
1319
+ describe.each(['hello'])('%s', () => {
1320
+ it('is fine', () => {
1321
+ expect.hasAssertions();
1322
+ });
1323
+ });
1324
+ `, (0, _dedent.default)`
1325
+ describe.each\`\`('%s', () => {
1326
+ it('is fine', () => {
1327
+ expect.hasAssertions();
1328
+ });
1329
+ });
1330
+ `, (0, _dedent.default)`
1331
+ describe.each(['hello'])('%s', () => {
1332
+ it.each()('is fine', () => {
1333
+ expect.assertions(0);
1334
+ });
1335
+ });
1336
+ `, (0, _dedent.default)`
1337
+ describe.each\`\`('%s', () => {
1338
+ it.each()('is fine', () => {
1339
+ expect.assertions(0);
1340
+ });
1341
+ });
1342
+ `, (0, _dedent.default)`
1343
+ describe.each(['hello'])('%s', () => {
1344
+ it.each()('is fine', () => {
1345
+ expect.hasAssertions();
1346
+ });
1347
+ });
1348
+ `, (0, _dedent.default)`
1349
+ describe.each\`\`('%s', () => {
1350
+ it.each()('is fine', () => {
1351
+ expect.hasAssertions();
1352
+ });
1353
+ });
1354
+ `],
1355
+ invalid: [{
1356
+ code: (0, _dedent.default)`
1357
+ test.each()("is not fine", () => {
1358
+ expect(someValue).toBe(true);
1359
+ });
1360
+ `,
1361
+ errors: [{
1362
+ messageId: 'haveExpectAssertions',
1363
+ column: 1,
1364
+ line: 1
1365
+ }]
1366
+ }, {
1367
+ code: (0, _dedent.default)`
1368
+ describe.each()('something', () => {
1369
+ it("is not fine", () => {
1370
+ expect(someValue).toBe(true);
1371
+ });
1372
+ });
1373
+ `,
1374
+ errors: [{
1375
+ messageId: 'haveExpectAssertions',
1376
+ column: 3,
1377
+ line: 2
1378
+ }]
1379
+ }, {
1380
+ code: (0, _dedent.default)`
1381
+ describe.each()('something', () => {
1382
+ test.each()("is not fine", () => {
1383
+ expect(someValue).toBe(true);
1384
+ });
1385
+ });
1386
+ `,
1387
+ errors: [{
1388
+ messageId: 'haveExpectAssertions',
1389
+ column: 3,
1390
+ line: 2
1391
+ }]
1392
+ }, {
1393
+ code: (0, _dedent.default)`
1394
+ test.each()("is not fine", async () => {
1395
+ expect(someValue).toBe(true);
1396
+ });
1397
+ `,
1398
+ options: [{
1399
+ onlyFunctionsWithAsyncKeyword: true
1400
+ }],
1401
+ errors: [{
1402
+ messageId: 'haveExpectAssertions',
1403
+ column: 1,
1404
+ line: 1
1405
+ }]
1406
+ }, {
1407
+ code: (0, _dedent.default)`
1408
+ it.each()("is not fine", async () => {
1409
+ expect(someValue).toBe(true);
1410
+ });
1411
+ `,
1412
+ options: [{
1413
+ onlyFunctionsWithAsyncKeyword: true
1414
+ }],
1415
+ errors: [{
1416
+ messageId: 'haveExpectAssertions',
1417
+ column: 1,
1418
+ line: 1
1419
+ }]
1420
+ }, {
1421
+ code: (0, _dedent.default)`
1422
+ describe.each()('something', () => {
1423
+ test.each()("is not fine", async () => {
1424
+ expect(someValue).toBe(true);
1425
+ });
1426
+ });
1427
+ `,
1428
+ options: [{
1429
+ onlyFunctionsWithAsyncKeyword: true
1430
+ }],
1431
+ errors: [{
1432
+ messageId: 'haveExpectAssertions',
1433
+ column: 3,
1434
+ line: 2
1435
+ }]
1436
+ }]
1437
+ });