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,122 @@
1
+ "use strict";
2
+
3
+ var _utils = require("@typescript-eslint/utils");
4
+ var _dedent = _interopRequireDefault(require("dedent"));
5
+ var _noTestReturnStatement = _interopRequireDefault(require("../no-test-return-statement"));
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: 2015
12
+ }
13
+ });
14
+ ruleTester.run('no-test-return-statement', _noTestReturnStatement.default, {
15
+ valid: ['it("noop", function () {});', 'test("noop", () => {});', 'test("one", () => expect(1).toBe(1));', 'test("empty")', (0, _dedent.default)`
16
+ test("one", () => {
17
+ expect(1).toBe(1);
18
+ });
19
+ `, (0, _dedent.default)`
20
+ it("one", function () {
21
+ expect(1).toBe(1);
22
+ });
23
+ `, (0, _dedent.default)`
24
+ it("one", myTest);
25
+ function myTest() {
26
+ expect(1).toBe(1);
27
+ }
28
+ `, (0, _dedent.default)`
29
+ it("one", () => expect(1).toBe(1));
30
+ function myHelper() {}
31
+ `],
32
+ invalid: [{
33
+ code: (0, _dedent.default)`
34
+ test("one", () => {
35
+ return expect(1).toBe(1);
36
+ });
37
+ `,
38
+ errors: [{
39
+ messageId: 'noReturnValue',
40
+ column: 3,
41
+ line: 2
42
+ }]
43
+ }, {
44
+ code: (0, _dedent.default)`
45
+ it("one", function () {
46
+ return expect(1).toBe(1);
47
+ });
48
+ `,
49
+ errors: [{
50
+ messageId: 'noReturnValue',
51
+ column: 3,
52
+ line: 2
53
+ }]
54
+ }, {
55
+ code: (0, _dedent.default)`
56
+ it.skip("one", function () {
57
+ return expect(1).toBe(1);
58
+ });
59
+ `,
60
+ errors: [{
61
+ messageId: 'noReturnValue',
62
+ column: 3,
63
+ line: 2
64
+ }]
65
+ }, {
66
+ code: (0, _dedent.default)`
67
+ it.each\`\`("one", function () {
68
+ return expect(1).toBe(1);
69
+ });
70
+ `,
71
+ errors: [{
72
+ messageId: 'noReturnValue',
73
+ column: 3,
74
+ line: 2
75
+ }]
76
+ }, {
77
+ code: (0, _dedent.default)`
78
+ it.each()("one", function () {
79
+ return expect(1).toBe(1);
80
+ });
81
+ `,
82
+ errors: [{
83
+ messageId: 'noReturnValue',
84
+ column: 3,
85
+ line: 2
86
+ }]
87
+ }, {
88
+ code: (0, _dedent.default)`
89
+ it.only.each\`\`("one", function () {
90
+ return expect(1).toBe(1);
91
+ });
92
+ `,
93
+ errors: [{
94
+ messageId: 'noReturnValue',
95
+ column: 3,
96
+ line: 2
97
+ }]
98
+ }, {
99
+ code: (0, _dedent.default)`
100
+ it.only.each()("one", function () {
101
+ return expect(1).toBe(1);
102
+ });
103
+ `,
104
+ errors: [{
105
+ messageId: 'noReturnValue',
106
+ column: 3,
107
+ line: 2
108
+ }]
109
+ }, {
110
+ code: (0, _dedent.default)`
111
+ it("one", myTest);
112
+ function myTest () {
113
+ return expect(1).toBe(1);
114
+ }
115
+ `,
116
+ errors: [{
117
+ messageId: 'noReturnValue',
118
+ column: 3,
119
+ line: 3
120
+ }]
121
+ }]
122
+ });
@@ -0,0 +1,149 @@
1
+ "use strict";
2
+
3
+ var _utils = require("@typescript-eslint/utils");
4
+ var _dedent = _interopRequireDefault(require("dedent"));
5
+ var _noUntypedMockFactory = _interopRequireDefault(require("../no-untyped-mock-factory"));
6
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
+ const ruleTester = new _utils.TSESLint.RuleTester({
8
+ parser: require.resolve('@typescript-eslint/parser')
9
+ });
10
+ ruleTester.run('no-untyped-mock-factory', _noUntypedMockFactory.default, {
11
+ valid: ["jest.mock('random-number');", (0, _dedent.default)`
12
+ jest.mock<typeof import('../moduleName')>('../moduleName', () => {
13
+ return jest.fn(() => 42);
14
+ });
15
+ `, (0, _dedent.default)`
16
+ jest.mock<typeof import('./module')>('./module', () => ({
17
+ ...jest.requireActual('./module'),
18
+ foo: jest.fn()
19
+ }));
20
+ `, (0, _dedent.default)`
21
+ jest.mock<typeof import('foo')>('bar', () => ({
22
+ ...jest.requireActual('bar'),
23
+ foo: jest.fn()
24
+ }));
25
+ `, (0, _dedent.default)`
26
+ jest.doMock('./module', (): typeof import('./module') => ({
27
+ ...jest.requireActual('./module'),
28
+ foo: jest.fn()
29
+ }));
30
+ `, (0, _dedent.default)`
31
+ jest.mock('../moduleName', function (): typeof import('../moduleName') {
32
+ return jest.fn(() => 42);
33
+ });
34
+ `, (0, _dedent.default)`
35
+ jest.mock<() => number>('random-num', () => {
36
+ return jest.fn(() => 42);
37
+ });
38
+ `, (0, _dedent.default)`
39
+ jest['doMock']<() => number>('random-num', () => {
40
+ return jest.fn(() => 42);
41
+ });
42
+ `, (0, _dedent.default)`
43
+ jest.mock<any>('random-num', () => {
44
+ return jest.fn(() => 42);
45
+ });
46
+ `, (0, _dedent.default)`
47
+ jest.mock(
48
+ '../moduleName',
49
+ () => {
50
+ return jest.fn(() => 42)
51
+ },
52
+ {virtual: true},
53
+ );
54
+ `, (0, _dedent.default)`
55
+ jest.mock('../moduleName', function (): (() => number) {
56
+ return jest.fn(() => 42);
57
+ });
58
+ `,
59
+ // Should not match
60
+ (0, _dedent.default)`
61
+ mockito<() => number>('foo', () => {
62
+ return jest.fn(() => 42);
63
+ });
64
+ `],
65
+ invalid: [{
66
+ code: (0, _dedent.default)`
67
+ jest.mock('../moduleName', () => {
68
+ return jest.fn(() => 42);
69
+ });
70
+ `,
71
+ output: (0, _dedent.default)`
72
+ jest.mock<typeof import('../moduleName')>('../moduleName', () => {
73
+ return jest.fn(() => 42);
74
+ });
75
+ `,
76
+ errors: [{
77
+ messageId: 'addTypeParameterToModuleMock'
78
+ }]
79
+ }, {
80
+ code: (0, _dedent.default)`
81
+ jest.mock("./module", () => ({
82
+ ...jest.requireActual('./module'),
83
+ foo: jest.fn()
84
+ }));
85
+ `,
86
+ output: (0, _dedent.default)`
87
+ jest.mock<typeof import("./module")>("./module", () => ({
88
+ ...jest.requireActual('./module'),
89
+ foo: jest.fn()
90
+ }));
91
+ `,
92
+ errors: [{
93
+ messageId: 'addTypeParameterToModuleMock'
94
+ }]
95
+ }, {
96
+ code: (0, _dedent.default)`
97
+ jest.mock('random-num', () => {
98
+ return jest.fn(() => 42);
99
+ });
100
+ `,
101
+ output: (0, _dedent.default)`
102
+ jest.mock<typeof import('random-num')>('random-num', () => {
103
+ return jest.fn(() => 42);
104
+ });
105
+ `,
106
+ errors: [{
107
+ messageId: 'addTypeParameterToModuleMock'
108
+ }]
109
+ }, {
110
+ code: (0, _dedent.default)`
111
+ jest.doMock('random-num', () => {
112
+ return jest.fn(() => 42);
113
+ });
114
+ `,
115
+ output: (0, _dedent.default)`
116
+ jest.doMock<typeof import('random-num')>('random-num', () => {
117
+ return jest.fn(() => 42);
118
+ });
119
+ `,
120
+ errors: [{
121
+ messageId: 'addTypeParameterToModuleMock'
122
+ }]
123
+ }, {
124
+ code: (0, _dedent.default)`
125
+ jest['mock']('random-num', () => {
126
+ return jest.fn(() => 42);
127
+ });
128
+ `,
129
+ output: (0, _dedent.default)`
130
+ jest['mock']<typeof import('random-num')>('random-num', () => {
131
+ return jest.fn(() => 42);
132
+ });
133
+ `,
134
+ errors: [{
135
+ messageId: 'addTypeParameterToModuleMock'
136
+ }]
137
+ }, {
138
+ code: (0, _dedent.default)`
139
+ const moduleToMock = 'random-num';
140
+ jest.mock(moduleToMock, () => {
141
+ return jest.fn(() => 42);
142
+ });
143
+ `,
144
+ output: null,
145
+ errors: [{
146
+ messageId: 'addTypeParameterToModuleMock'
147
+ }]
148
+ }]
149
+ });
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+
3
+ var _utils = require("@typescript-eslint/utils");
4
+ var _preferCalledWith = _interopRequireDefault(require("../prefer-called-with"));
5
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
6
+ const ruleTester = new _utils.TSESLint.RuleTester();
7
+ ruleTester.run('prefer-called-with', _preferCalledWith.default, {
8
+ valid: ['expect(fn).toBeCalledWith();', 'expect(fn).toHaveBeenCalledWith();', 'expect(fn).toBeCalledWith(expect.anything());', 'expect(fn).toHaveBeenCalledWith(expect.anything());', 'expect(fn).not.toBeCalled();', 'expect(fn).rejects.not.toBeCalled();', 'expect(fn).not.toHaveBeenCalled();', 'expect(fn).not.toBeCalledWith();', 'expect(fn).not.toHaveBeenCalledWith();', 'expect(fn).resolves.not.toHaveBeenCalledWith();', 'expect(fn).toBeCalledTimes(0);', 'expect(fn).toHaveBeenCalledTimes(0);', 'expect(fn);'],
9
+ invalid: [{
10
+ code: 'expect(fn).toBeCalled();',
11
+ errors: [{
12
+ messageId: 'preferCalledWith',
13
+ data: {
14
+ matcherName: 'toBeCalled'
15
+ },
16
+ column: 12,
17
+ line: 1
18
+ }]
19
+ }, {
20
+ code: 'expect(fn).resolves.toBeCalled();',
21
+ errors: [{
22
+ messageId: 'preferCalledWith',
23
+ data: {
24
+ matcherName: 'toBeCalled'
25
+ },
26
+ column: 21,
27
+ line: 1
28
+ }]
29
+ }, {
30
+ code: 'expect(fn).toHaveBeenCalled();',
31
+ errors: [{
32
+ messageId: 'preferCalledWith',
33
+ data: {
34
+ matcherName: 'toHaveBeenCalled'
35
+ },
36
+ column: 12,
37
+ line: 1
38
+ }]
39
+ }]
40
+ });
@@ -0,0 +1,200 @@
1
+ "use strict";
2
+
3
+ var _utils = require("@typescript-eslint/utils");
4
+ var _preferComparisonMatcher = _interopRequireDefault(require("../prefer-comparison-matcher"));
5
+ var _testUtils = require("./test-utils");
6
+ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
7
+ const ruleTester = new _utils.TSESLint.RuleTester({
8
+ parser: _testUtils.espreeParser,
9
+ parserOptions: {
10
+ ecmaVersion: 2015
11
+ }
12
+ });
13
+ const generateInvalidCases = (operator, equalityMatcher, preferredMatcher, preferredMatcherWhenNegated) => {
14
+ return [{
15
+ code: `expect(value ${operator} 1).${equalityMatcher}(true);`,
16
+ output: `expect(value).${preferredMatcher}(1);`,
17
+ errors: [{
18
+ messageId: 'useToBeComparison',
19
+ data: {
20
+ preferredMatcher
21
+ },
22
+ column: 18 + operator.length,
23
+ line: 1
24
+ }]
25
+ }, {
26
+ code: `expect(value ${operator} 1,).${equalityMatcher}(true,);`,
27
+ output: `expect(value,).${preferredMatcher}(1,);`,
28
+ parserOptions: {
29
+ ecmaVersion: 2017
30
+ },
31
+ errors: [{
32
+ messageId: 'useToBeComparison',
33
+ data: {
34
+ preferredMatcher
35
+ },
36
+ column: 19 + operator.length,
37
+ line: 1
38
+ }]
39
+ }, {
40
+ code: `expect(value ${operator} 1)['${equalityMatcher}'](true);`,
41
+ output: `expect(value).${preferredMatcher}(1);`,
42
+ errors: [{
43
+ messageId: 'useToBeComparison',
44
+ data: {
45
+ preferredMatcher
46
+ },
47
+ column: 18 + operator.length,
48
+ line: 1
49
+ }]
50
+ }, {
51
+ code: `expect(value ${operator} 1).resolves.${equalityMatcher}(true);`,
52
+ output: `expect(value).resolves.${preferredMatcher}(1);`,
53
+ errors: [{
54
+ messageId: 'useToBeComparison',
55
+ data: {
56
+ preferredMatcher
57
+ },
58
+ column: 27 + operator.length,
59
+ line: 1
60
+ }]
61
+ }, {
62
+ code: `expect(value ${operator} 1).${equalityMatcher}(false);`,
63
+ output: `expect(value).${preferredMatcherWhenNegated}(1);`,
64
+ errors: [{
65
+ messageId: 'useToBeComparison',
66
+ data: {
67
+ preferredMatcher: preferredMatcherWhenNegated
68
+ },
69
+ column: 18 + operator.length,
70
+ line: 1
71
+ }]
72
+ }, {
73
+ code: `expect(value ${operator} 1)['${equalityMatcher}'](false);`,
74
+ output: `expect(value).${preferredMatcherWhenNegated}(1);`,
75
+ errors: [{
76
+ messageId: 'useToBeComparison',
77
+ data: {
78
+ preferredMatcher: preferredMatcherWhenNegated
79
+ },
80
+ column: 18 + operator.length,
81
+ line: 1
82
+ }]
83
+ }, {
84
+ code: `expect(value ${operator} 1).resolves.${equalityMatcher}(false);`,
85
+ output: `expect(value).resolves.${preferredMatcherWhenNegated}(1);`,
86
+ errors: [{
87
+ messageId: 'useToBeComparison',
88
+ data: {
89
+ preferredMatcher: preferredMatcherWhenNegated
90
+ },
91
+ column: 27 + operator.length,
92
+ line: 1
93
+ }]
94
+ }, {
95
+ code: `expect(value ${operator} 1).not.${equalityMatcher}(true);`,
96
+ output: `expect(value).${preferredMatcherWhenNegated}(1);`,
97
+ errors: [{
98
+ messageId: 'useToBeComparison',
99
+ data: {
100
+ preferredMatcher: preferredMatcherWhenNegated
101
+ },
102
+ column: 22 + operator.length,
103
+ line: 1
104
+ }]
105
+ }, {
106
+ code: `expect(value ${operator} 1)['not'].${equalityMatcher}(true);`,
107
+ output: `expect(value).${preferredMatcherWhenNegated}(1);`,
108
+ errors: [{
109
+ messageId: 'useToBeComparison',
110
+ data: {
111
+ preferredMatcher: preferredMatcherWhenNegated
112
+ },
113
+ column: 25 + operator.length,
114
+ line: 1
115
+ }]
116
+ }, {
117
+ code: `expect(value ${operator} 1).resolves.not.${equalityMatcher}(true);`,
118
+ output: `expect(value).resolves.${preferredMatcherWhenNegated}(1);`,
119
+ errors: [{
120
+ messageId: 'useToBeComparison',
121
+ data: {
122
+ preferredMatcher: preferredMatcherWhenNegated
123
+ },
124
+ column: 31 + operator.length,
125
+ line: 1
126
+ }]
127
+ }, {
128
+ code: `expect(value ${operator} 1).not.${equalityMatcher}(false);`,
129
+ output: `expect(value).${preferredMatcher}(1);`,
130
+ errors: [{
131
+ messageId: 'useToBeComparison',
132
+ data: {
133
+ preferredMatcher
134
+ },
135
+ column: 22 + operator.length,
136
+ line: 1
137
+ }]
138
+ }, {
139
+ code: `expect(value ${operator} 1).resolves.not.${equalityMatcher}(false);`,
140
+ output: `expect(value).resolves.${preferredMatcher}(1);`,
141
+ errors: [{
142
+ messageId: 'useToBeComparison',
143
+ data: {
144
+ preferredMatcher
145
+ },
146
+ column: 31 + operator.length,
147
+ line: 1
148
+ }]
149
+ }, {
150
+ code: `expect(value ${operator} 1)["resolves"].not.${equalityMatcher}(false);`,
151
+ output: `expect(value).resolves.${preferredMatcher}(1);`,
152
+ errors: [{
153
+ messageId: 'useToBeComparison',
154
+ data: {
155
+ preferredMatcher
156
+ },
157
+ column: 34 + operator.length,
158
+ line: 1
159
+ }]
160
+ }, {
161
+ code: `expect(value ${operator} 1)["resolves"]["not"].${equalityMatcher}(false);`,
162
+ output: `expect(value).resolves.${preferredMatcher}(1);`,
163
+ errors: [{
164
+ messageId: 'useToBeComparison',
165
+ data: {
166
+ preferredMatcher
167
+ },
168
+ column: 37 + operator.length,
169
+ line: 1
170
+ }]
171
+ }, {
172
+ code: `expect(value ${operator} 1)["resolves"]["not"]['${equalityMatcher}'](false);`,
173
+ output: `expect(value).resolves.${preferredMatcher}(1);`,
174
+ errors: [{
175
+ messageId: 'useToBeComparison',
176
+ data: {
177
+ preferredMatcher
178
+ },
179
+ column: 37 + operator.length,
180
+ line: 1
181
+ }]
182
+ }];
183
+ };
184
+ const generateValidStringLiteralCases = (operator, matcher) => {
185
+ return [['x', "'y'"], ['x', '`y`'], ['x', '`y${z}`']].reduce((cases, [a, b]) => [...cases, ...[`expect(${a} ${operator} ${b}).${matcher}(true)`, `expect(${a} ${operator} ${b}).${matcher}(false)`, `expect(${a} ${operator} ${b}).not.${matcher}(true)`, `expect(${a} ${operator} ${b}).not.${matcher}(false)`, `expect(${b} ${operator} ${a}).${matcher}(true)`, `expect(${b} ${operator} ${a}).${matcher}(false)`, `expect(${b} ${operator} ${a}).not.${matcher}(true)`, `expect(${b} ${operator} ${a}).not.${matcher}(false)`, `expect(${a} ${operator} ${b}).${matcher}(true)`, `expect(${a} ${operator} ${b}).${matcher}(false)`, `expect(${a} ${operator} ${b}).not.${matcher}(true)`, `expect(${a} ${operator} ${b}).not.${matcher}(false)`, `expect(${b} ${operator} ${a}).${matcher}(true)`, `expect(${b} ${operator} ${a}).${matcher}(false)`, `expect(${b} ${operator} ${a}).not.${matcher}(true)`, `expect(${b} ${operator} ${a}).not.${matcher}(false)`, `expect(${b} ${operator} ${b}).not.${matcher}(false)`, `expect(${b} ${operator} ${b}).resolves.not.${matcher}(false)`, `expect(${b} ${operator} ${b}).resolves.${matcher}(false)`]]);
186
+ };
187
+ const testComparisonOperator = (operator, preferredMatcher, preferredMatcherWhenNegated) => {
188
+ ruleTester.run(`prefer-to-be-comparison: ${operator}`, _preferComparisonMatcher.default, {
189
+ valid: ['expect()', 'expect({}).toStrictEqual({})', `expect(value).${preferredMatcher}(1);`, `expect(value).${preferredMatcherWhenNegated}(1);`, `expect(value).not.${preferredMatcher}(1);`, `expect(value).not.${preferredMatcherWhenNegated}(1);`, ...['toBe', 'toEqual', 'toStrictEqual'].reduce((cases, equalityMatcher) => [...cases, ...generateValidStringLiteralCases(operator, equalityMatcher)], [])],
190
+ invalid: ['toBe', 'toEqual', 'toStrictEqual'].reduce((cases, equalityMatcher) => [...cases, ...generateInvalidCases(operator, equalityMatcher, preferredMatcher, preferredMatcherWhenNegated)], [])
191
+ });
192
+ };
193
+ testComparisonOperator('>', 'toBeGreaterThan', 'toBeLessThanOrEqual');
194
+ testComparisonOperator('<', 'toBeLessThan', 'toBeGreaterThanOrEqual');
195
+ testComparisonOperator('>=', 'toBeGreaterThanOrEqual', 'toBeLessThan');
196
+ testComparisonOperator('<=', 'toBeLessThanOrEqual', 'toBeGreaterThan');
197
+ ruleTester.run(`prefer-to-be-comparison`, _preferComparisonMatcher.default, {
198
+ valid: ['expect.hasAssertions', 'expect.hasAssertions()', 'expect.assertions(1)', 'expect(true).toBe(...true)', 'expect()', 'expect({}).toStrictEqual({})', 'expect(a === b).toBe(true)', 'expect(a !== 2).toStrictEqual(true)', 'expect(a === b).not.toEqual(true)', 'expect(a !== "string").toStrictEqual(true)', 'expect(5 != a).toBe(true)', 'expect(a == "string").toBe(true)', 'expect(a == "string").not.toBe(true)'],
199
+ invalid: []
200
+ });