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