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,360 @@
1
+ "use strict";
2
+
3
+ var _utils = require("@typescript-eslint/utils");
4
+ var _dedent = _interopRequireDefault(require("dedent"));
5
+ var _preferMockPromiseShorthand = _interopRequireDefault(require("../prefer-mock-promise-shorthand"));
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('prefer-mock-shorthand', _preferMockPromiseShorthand.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()', 'jest.fn().mockResolvedValue(42)', 'jest.fn(() => Promise.resolve(42))', 'jest.fn(() => Promise.reject(42))', 'aVariable.mockImplementation', 'aVariable.mockImplementation()', 'aVariable.mockImplementation([])', 'aVariable.mockImplementation(() => {})', 'aVariable.mockImplementation(() => [])', 'aVariable.mockReturnValue(() => Promise.resolve(1))', 'aVariable.mockReturnValue(Promise.resolve(1).then(() => 1))', 'aVariable.mockReturnValue(Promise.reject(1).then(() => 1))', 'aVariable.mockReturnValue(Promise.reject().then(() => 1))', 'aVariable.mockReturnValue(new Promise(resolve => resolve(1)))', 'aVariable.mockReturnValue(new Promise((_, reject) => reject(1)))', "jest.spyOn(Thingy, 'method').mockImplementation(param => Promise.resolve(param));", (0, _dedent.default)`
16
+ aVariable.mockImplementation(() => {
17
+ const value = new Date();
18
+
19
+ return Promise.resolve(value);
20
+ });
21
+ `, (0, _dedent.default)`
22
+ aVariable.mockImplementation(() => {
23
+ return Promise.resolve(value)
24
+ .then(value => value + 1);
25
+ });
26
+ `, (0, _dedent.default)`
27
+ aVariable.mockImplementation(() => {
28
+ return Promise.all([1, 2, 3]);
29
+ });
30
+ `, 'aVariable.mockImplementation(() => Promise.all([1, 2, 3]));', 'aVariable.mockReturnValue(Promise.all([1, 2, 3]));'],
31
+ invalid: [{
32
+ code: 'jest.fn().mockImplementation(() => Promise.resolve(42))',
33
+ output: 'jest.fn().mockResolvedValue(42)',
34
+ errors: [{
35
+ messageId: 'useMockShorthand',
36
+ data: {
37
+ replacement: 'mockResolvedValue'
38
+ },
39
+ column: 11,
40
+ line: 1
41
+ }]
42
+ }, {
43
+ code: 'jest.fn().mockImplementation(() => Promise.reject(42))',
44
+ output: 'jest.fn().mockRejectedValue(42)',
45
+ errors: [{
46
+ messageId: 'useMockShorthand',
47
+ data: {
48
+ replacement: 'mockRejectedValue'
49
+ },
50
+ column: 11,
51
+ line: 1
52
+ }]
53
+ }, {
54
+ code: 'aVariable.mockImplementation(() => Promise.resolve(42))',
55
+ output: 'aVariable.mockResolvedValue(42)',
56
+ errors: [{
57
+ messageId: 'useMockShorthand',
58
+ data: {
59
+ replacement: 'mockResolvedValue'
60
+ },
61
+ column: 11,
62
+ line: 1
63
+ }]
64
+ }, {
65
+ code: (0, _dedent.default)`
66
+ aVariable.mockImplementation(() => {
67
+ return Promise.resolve(42)
68
+ })
69
+ `,
70
+ output: 'aVariable.mockResolvedValue(42)',
71
+ errors: [{
72
+ messageId: 'useMockShorthand',
73
+ data: {
74
+ replacement: 'mockResolvedValue'
75
+ },
76
+ column: 11,
77
+ line: 1
78
+ }]
79
+ }, {
80
+ code: 'aVariable.mockImplementation(() => Promise.reject(42))',
81
+ output: 'aVariable.mockRejectedValue(42)',
82
+ errors: [{
83
+ messageId: 'useMockShorthand',
84
+ data: {
85
+ replacement: 'mockRejectedValue'
86
+ },
87
+ column: 11,
88
+ line: 1
89
+ }]
90
+ }, {
91
+ code: 'aVariable.mockImplementation(() => Promise.reject(42),)',
92
+ output: 'aVariable.mockRejectedValue(42,)',
93
+ parserOptions: {
94
+ ecmaVersion: 2017
95
+ },
96
+ errors: [{
97
+ messageId: 'useMockShorthand',
98
+ data: {
99
+ replacement: 'mockRejectedValue'
100
+ },
101
+ column: 11,
102
+ line: 1
103
+ }]
104
+ }, {
105
+ code: 'aVariable.mockImplementationOnce(() => Promise.resolve(42))',
106
+ output: 'aVariable.mockResolvedValueOnce(42)',
107
+ errors: [{
108
+ messageId: 'useMockShorthand',
109
+ data: {
110
+ replacement: 'mockResolvedValueOnce'
111
+ },
112
+ column: 11,
113
+ line: 1
114
+ }]
115
+ }, {
116
+ code: 'aVariable.mockImplementationOnce(() => Promise.reject(42))',
117
+ output: 'aVariable.mockRejectedValueOnce(42)',
118
+ errors: [{
119
+ messageId: 'useMockShorthand',
120
+ data: {
121
+ replacement: 'mockRejectedValueOnce'
122
+ },
123
+ column: 11,
124
+ line: 1
125
+ }]
126
+ }, {
127
+ code: 'jest.fn().mockReturnValue(Promise.resolve(42))',
128
+ output: 'jest.fn().mockResolvedValue(42)',
129
+ errors: [{
130
+ messageId: 'useMockShorthand',
131
+ data: {
132
+ replacement: 'mockResolvedValue'
133
+ },
134
+ column: 11,
135
+ line: 1
136
+ }]
137
+ }, {
138
+ code: 'jest.fn().mockReturnValue(Promise.reject(42))',
139
+ output: 'jest.fn().mockRejectedValue(42)',
140
+ errors: [{
141
+ messageId: 'useMockShorthand',
142
+ data: {
143
+ replacement: 'mockRejectedValue'
144
+ },
145
+ column: 11,
146
+ line: 1
147
+ }]
148
+ }, {
149
+ code: 'aVariable.mockReturnValue(Promise.resolve(42))',
150
+ output: 'aVariable.mockResolvedValue(42)',
151
+ errors: [{
152
+ messageId: 'useMockShorthand',
153
+ data: {
154
+ replacement: 'mockResolvedValue'
155
+ },
156
+ column: 11,
157
+ line: 1
158
+ }]
159
+ }, {
160
+ code: 'aVariable.mockReturnValue(Promise.reject(42))',
161
+ output: 'aVariable.mockRejectedValue(42)',
162
+ errors: [{
163
+ messageId: 'useMockShorthand',
164
+ data: {
165
+ replacement: 'mockRejectedValue'
166
+ },
167
+ column: 11,
168
+ line: 1
169
+ }]
170
+ }, {
171
+ code: 'aVariable.mockReturnValueOnce(Promise.resolve(42))',
172
+ output: 'aVariable.mockResolvedValueOnce(42)',
173
+ errors: [{
174
+ messageId: 'useMockShorthand',
175
+ data: {
176
+ replacement: 'mockResolvedValueOnce'
177
+ },
178
+ column: 11,
179
+ line: 1
180
+ }]
181
+ }, {
182
+ code: 'aVariable.mockReturnValueOnce(Promise.reject(42))',
183
+ output: 'aVariable.mockRejectedValueOnce(42)',
184
+ errors: [{
185
+ messageId: 'useMockShorthand',
186
+ data: {
187
+ replacement: 'mockRejectedValueOnce'
188
+ },
189
+ column: 11,
190
+ line: 1
191
+ }]
192
+ }, {
193
+ code: (0, _dedent.default)`
194
+ aVariable.mockReturnValue(Promise.resolve({
195
+ target: 'world',
196
+ message: 'hello'
197
+ }))
198
+ `,
199
+ output: (0, _dedent.default)`
200
+ aVariable.mockResolvedValue({
201
+ target: 'world',
202
+ message: 'hello'
203
+ })
204
+ `,
205
+ errors: [{
206
+ messageId: 'useMockShorthand',
207
+ data: {
208
+ replacement: 'mockResolvedValue'
209
+ },
210
+ column: 11,
211
+ line: 1
212
+ }]
213
+ }, {
214
+ code: (0, _dedent.default)`
215
+ aVariable
216
+ .mockImplementation(() => Promise.reject(42))
217
+ .mockImplementation(() => Promise.resolve(42))
218
+ .mockReturnValue(Promise.reject(42))
219
+ `,
220
+ output: (0, _dedent.default)`
221
+ aVariable
222
+ .mockRejectedValue(42)
223
+ .mockResolvedValue(42)
224
+ .mockRejectedValue(42)
225
+ `,
226
+ errors: [{
227
+ messageId: 'useMockShorthand',
228
+ data: {
229
+ replacement: 'mockRejectedValue'
230
+ },
231
+ column: 4,
232
+ line: 2
233
+ }, {
234
+ messageId: 'useMockShorthand',
235
+ data: {
236
+ replacement: 'mockResolvedValue'
237
+ },
238
+ column: 4,
239
+ line: 3
240
+ }, {
241
+ messageId: 'useMockShorthand',
242
+ data: {
243
+ replacement: 'mockRejectedValue'
244
+ },
245
+ column: 4,
246
+ line: 4
247
+ }]
248
+ }, {
249
+ code: (0, _dedent.default)`
250
+ aVariable
251
+ .mockReturnValueOnce(Promise.reject(42))
252
+ .mockImplementation(() => Promise.resolve(42))
253
+ .mockReturnValueOnce(Promise.reject(42))
254
+ `,
255
+ output: (0, _dedent.default)`
256
+ aVariable
257
+ .mockRejectedValueOnce(42)
258
+ .mockResolvedValue(42)
259
+ .mockRejectedValueOnce(42)
260
+ `,
261
+ errors: [{
262
+ messageId: 'useMockShorthand',
263
+ data: {
264
+ replacement: 'mockRejectedValueOnce'
265
+ },
266
+ column: 4,
267
+ line: 2
268
+ }, {
269
+ messageId: 'useMockShorthand',
270
+ data: {
271
+ replacement: 'mockResolvedValue'
272
+ },
273
+ column: 4,
274
+ line: 3
275
+ }, {
276
+ messageId: 'useMockShorthand',
277
+ data: {
278
+ replacement: 'mockRejectedValueOnce'
279
+ },
280
+ column: 4,
281
+ line: 4
282
+ }]
283
+ }, {
284
+ code: (0, _dedent.default)`
285
+ aVariable.mockReturnValueOnce(
286
+ Promise.reject(
287
+ new Error('oh noes!')
288
+ )
289
+ )
290
+ `,
291
+ output: (0, _dedent.default)`
292
+ aVariable.mockRejectedValueOnce(
293
+ new Error('oh noes!')
294
+ )
295
+ `,
296
+ errors: [{
297
+ messageId: 'useMockShorthand',
298
+ data: {
299
+ replacement: 'mockRejectedValueOnce'
300
+ },
301
+ column: 11,
302
+ line: 1
303
+ }]
304
+ }, {
305
+ code: 'jest.fn().mockReturnValue(Promise.resolve(42), xyz)',
306
+ output: 'jest.fn().mockResolvedValue(42, xyz)',
307
+ errors: [{
308
+ messageId: 'useMockShorthand',
309
+ data: {
310
+ replacement: 'mockResolvedValue'
311
+ },
312
+ column: 11,
313
+ line: 1
314
+ }]
315
+ }, {
316
+ code: 'jest.fn().mockImplementation(() => Promise.reject(42), xyz)',
317
+ output: 'jest.fn().mockRejectedValue(42, xyz)',
318
+ errors: [{
319
+ messageId: 'useMockShorthand',
320
+ data: {
321
+ replacement: 'mockRejectedValue'
322
+ },
323
+ column: 11,
324
+ line: 1
325
+ }]
326
+ }, {
327
+ code: 'aVariable.mockReturnValueOnce(Promise.resolve(42, xyz))',
328
+ output: null,
329
+ errors: [{
330
+ messageId: 'useMockShorthand',
331
+ data: {
332
+ replacement: 'mockResolvedValueOnce'
333
+ },
334
+ column: 11,
335
+ line: 1
336
+ }]
337
+ }, {
338
+ code: 'aVariable.mockReturnValueOnce(Promise.resolve())',
339
+ output: 'aVariable.mockResolvedValueOnce(undefined)',
340
+ errors: [{
341
+ messageId: 'useMockShorthand',
342
+ data: {
343
+ replacement: 'mockResolvedValueOnce'
344
+ },
345
+ column: 11,
346
+ line: 1
347
+ }]
348
+ }, {
349
+ code: 'jest.spyOn(fs, "readFile").mockReturnValue(Promise.reject(new Error("oh noes!")))',
350
+ output: `jest.spyOn(fs, "readFile").mockRejectedValue(new Error("oh noes!"))`,
351
+ errors: [{
352
+ messageId: 'useMockShorthand',
353
+ data: {
354
+ replacement: 'mockRejectedValue'
355
+ },
356
+ column: 28,
357
+ line: 1
358
+ }]
359
+ }]
360
+ });