eslint-plugin-jest 27.1.2 → 27.1.4

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 (112) hide show
  1. package/README.md +81 -80
  2. package/docs/rules/consistent-test-it.md +4 -11
  3. package/docs/rules/expect-expect.md +3 -4
  4. package/docs/rules/max-expects.md +1 -5
  5. package/docs/rules/max-nested-describe.md +1 -5
  6. package/docs/rules/no-alias-methods.md +8 -10
  7. package/docs/rules/no-commented-out-tests.md +3 -4
  8. package/docs/rules/no-conditional-expect.md +4 -5
  9. package/docs/rules/no-conditional-in-test.md +1 -5
  10. package/docs/rules/no-deprecated-functions.md +5 -7
  11. package/docs/rules/no-disabled-tests.md +3 -4
  12. package/docs/rules/no-done-callback.md +6 -8
  13. package/docs/rules/no-duplicate-hooks.md +1 -5
  14. package/docs/rules/no-export.md +3 -4
  15. package/docs/rules/no-focused-tests.md +5 -7
  16. package/docs/rules/no-hooks.md +1 -5
  17. package/docs/rules/no-identical-title.md +3 -4
  18. package/docs/rules/no-if.md +2 -2
  19. package/docs/rules/no-interpolation-in-snapshots.md +3 -4
  20. package/docs/rules/no-jasmine-globals.md +6 -8
  21. package/docs/rules/no-large-snapshots.md +2 -6
  22. package/docs/rules/no-mocks-import.md +3 -4
  23. package/docs/rules/no-restricted-jest-methods.md +1 -5
  24. package/docs/rules/no-restricted-matchers.md +1 -5
  25. package/docs/rules/no-standalone-expect.md +3 -4
  26. package/docs/rules/no-test-prefixes.md +6 -8
  27. package/docs/rules/no-test-return-statement.md +1 -5
  28. package/docs/rules/prefer-called-with.md +1 -5
  29. package/docs/rules/prefer-comparison-matcher.md +3 -8
  30. package/docs/rules/prefer-each.md +1 -5
  31. package/docs/rules/prefer-equality-matcher.md +3 -8
  32. package/docs/rules/prefer-expect-assertions.md +3 -10
  33. package/docs/rules/prefer-expect-resolves.md +3 -8
  34. package/docs/rules/prefer-hooks-in-order.md +1 -5
  35. package/docs/rules/prefer-hooks-on-top.md +1 -5
  36. package/docs/rules/prefer-lowercase-title.md +3 -8
  37. package/docs/rules/prefer-mock-promise-shorthand.md +3 -8
  38. package/docs/rules/prefer-snapshot-hint.md +1 -5
  39. package/docs/rules/prefer-spy-on.md +3 -10
  40. package/docs/rules/prefer-strict-equal.md +3 -10
  41. package/docs/rules/prefer-to-be.md +5 -7
  42. package/docs/rules/prefer-to-contain.md +5 -9
  43. package/docs/rules/prefer-to-have-length.md +5 -9
  44. package/docs/rules/prefer-todo.md +3 -10
  45. package/docs/rules/require-hook.md +1 -5
  46. package/docs/rules/require-to-throw-message.md +1 -7
  47. package/docs/rules/require-top-level-describe.md +1 -5
  48. package/docs/rules/unbound-method.md +2 -4
  49. package/docs/rules/valid-describe-callback.md +3 -4
  50. package/docs/rules/valid-expect-in-promise.md +4 -5
  51. package/docs/rules/valid-expect.md +3 -6
  52. package/docs/rules/valid-title.md +5 -7
  53. package/lib/index.js +8 -16
  54. package/lib/processors/snapshot-processor.js +3 -5
  55. package/lib/rules/consistent-test-it.js +1 -19
  56. package/lib/rules/expect-expect.js +0 -15
  57. package/lib/rules/max-expects.js +0 -16
  58. package/lib/rules/max-nested-describe.js +0 -13
  59. package/lib/rules/no-alias-methods.js +0 -9
  60. package/lib/rules/no-commented-out-tests.js +0 -10
  61. package/lib/rules/no-conditional-expect.js +1 -20
  62. package/lib/rules/no-conditional-in-test.js +0 -9
  63. package/lib/rules/no-deprecated-functions.js +2 -18
  64. package/lib/rules/no-disabled-tests.js +2 -18
  65. package/lib/rules/no-done-callback.js +2 -31
  66. package/lib/rules/no-duplicate-hooks.js +0 -12
  67. package/lib/rules/no-export.js +0 -12
  68. package/lib/rules/no-focused-tests.js +0 -15
  69. package/lib/rules/no-hooks.js +0 -7
  70. package/lib/rules/no-identical-title.js +0 -19
  71. package/lib/rules/no-if.js +0 -24
  72. package/lib/rules/no-interpolation-in-snapshots.js +0 -9
  73. package/lib/rules/no-jasmine-globals.js +0 -22
  74. package/lib/rules/no-large-snapshots.js +3 -21
  75. package/lib/rules/no-mocks-import.js +0 -12
  76. package/lib/rules/no-restricted-jest-methods.js +1 -11
  77. package/lib/rules/no-restricted-matchers.js +0 -11
  78. package/lib/rules/no-standalone-expect.js +7 -33
  79. package/lib/rules/no-test-prefixes.js +1 -13
  80. package/lib/rules/no-test-return-statement.js +0 -12
  81. package/lib/rules/prefer-called-with.js +0 -10
  82. package/lib/rules/prefer-comparison-matcher.js +8 -33
  83. package/lib/rules/prefer-each.js +0 -18
  84. package/lib/rules/prefer-equality-matcher.js +11 -23
  85. package/lib/rules/prefer-expect-assertions.js +4 -51
  86. package/lib/rules/prefer-expect-resolves.js +0 -12
  87. package/lib/rules/prefer-hooks-in-order.js +2 -16
  88. package/lib/rules/prefer-hooks-on-top.js +0 -9
  89. package/lib/rules/prefer-lowercase-title.js +0 -23
  90. package/lib/rules/prefer-mock-promise-shorthand.js +5 -26
  91. package/lib/rules/prefer-snapshot-hint.js +7 -31
  92. package/lib/rules/prefer-spy-on.js +0 -17
  93. package/lib/rules/prefer-strict-equal.js +0 -9
  94. package/lib/rules/prefer-to-be.js +1 -30
  95. package/lib/rules/prefer-to-contain.js +11 -21
  96. package/lib/rules/prefer-to-have-length.js +4 -16
  97. package/lib/rules/prefer-todo.js +2 -18
  98. package/lib/rules/require-hook.js +0 -22
  99. package/lib/rules/require-to-throw-message.js +0 -9
  100. package/lib/rules/require-top-level-describe.js +0 -15
  101. package/lib/rules/unbound-method.js +2 -21
  102. package/lib/rules/utils/accessors.js +6 -18
  103. package/lib/rules/utils/detectJestVersion.js +2 -7
  104. package/lib/rules/utils/followTypeAssertionChain.js +0 -4
  105. package/lib/rules/utils/index.js +0 -10
  106. package/lib/rules/utils/misc.js +2 -46
  107. package/lib/rules/utils/parseJestFnCall.js +62 -118
  108. package/lib/rules/valid-describe-callback.js +0 -17
  109. package/lib/rules/valid-expect-in-promise.js +27 -94
  110. package/lib/rules/valid-expect.js +5 -48
  111. package/lib/rules/valid-title.js +0 -33
  112. package/package.json +3 -2
@@ -4,14 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.preprocess = exports.postprocess = void 0;
7
-
8
7
  // https://eslint.org/docs/developer-guide/working-with-plugins#processors-in-plugins
9
8
  // https://github.com/typescript-eslint/typescript-eslint/issues/808
10
- const preprocess = source => [source];
11
9
 
10
+ const preprocess = source => [source];
12
11
  exports.preprocess = preprocess;
13
-
14
- const postprocess = messages => // snapshot files should only be linted with snapshot specific rules
12
+ const postprocess = messages =>
13
+ // snapshot files should only be linted with snapshot specific rules
15
14
  messages[0].filter(message => message.ruleId === 'jest/no-large-snapshots');
16
-
17
15
  exports.postprocess = postprocess;
@@ -4,19 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _utils = require("@typescript-eslint/utils");
9
-
10
8
  var _utils2 = require("./utils");
11
-
12
9
  const buildFixer = (callee, nodeName, preferredTestKeyword) => fixer => [fixer.replaceText(callee.type === _utils.AST_NODE_TYPES.MemberExpression ? callee.object : callee, getPreferredNodeName(nodeName, preferredTestKeyword))];
13
-
14
10
  var _default = (0, _utils2.createRule)({
15
11
  name: __filename,
16
12
  meta: {
17
13
  docs: {
18
14
  category: 'Best Practices',
19
- description: 'Have control over `test` and `it` usages',
15
+ description: 'Enforce `test` and `it` usage conventions',
20
16
  recommended: false
21
17
  },
22
18
  fixable: 'code',
@@ -42,7 +38,6 @@ var _default = (0, _utils2.createRule)({
42
38
  fn: _utils2.TestCaseName.test,
43
39
  withinDescribe: _utils2.TestCaseName.it
44
40
  }],
45
-
46
41
  create(context) {
47
42
  const configObj = context.options[0] || {};
48
43
  const testKeyword = configObj.fn || _utils2.TestCaseName.test;
@@ -51,18 +46,14 @@ var _default = (0, _utils2.createRule)({
51
46
  return {
52
47
  CallExpression(node) {
53
48
  const jestFnCall = (0, _utils2.parseJestFnCall)(node, context);
54
-
55
49
  if (!jestFnCall) {
56
50
  return;
57
51
  }
58
-
59
52
  if (jestFnCall.type === 'describe') {
60
53
  describeNestingLevel++;
61
54
  return;
62
55
  }
63
-
64
56
  const funcNode = node.callee.type === _utils.AST_NODE_TYPES.TaggedTemplateExpression ? node.callee.tag : node.callee.type === _utils.AST_NODE_TYPES.CallExpression ? node.callee.callee : node.callee;
65
-
66
57
  if (jestFnCall.type === 'test' && describeNestingLevel === 0 && !jestFnCall.name.endsWith(testKeyword)) {
67
58
  const oppositeTestKeyword = getOppositeTestKeyword(testKeyword);
68
59
  context.report({
@@ -75,7 +66,6 @@ var _default = (0, _utils2.createRule)({
75
66
  fix: buildFixer(funcNode, jestFnCall.name, testKeyword)
76
67
  });
77
68
  }
78
-
79
69
  if (jestFnCall.type === 'test' && describeNestingLevel > 0 && !jestFnCall.name.endsWith(testKeywordWithinDescribe)) {
80
70
  const oppositeTestKeyword = getOppositeTestKeyword(testKeywordWithinDescribe);
81
71
  context.report({
@@ -89,32 +79,24 @@ var _default = (0, _utils2.createRule)({
89
79
  });
90
80
  }
91
81
  },
92
-
93
82
  'CallExpression:exit'(node) {
94
83
  if ((0, _utils2.isTypeOfJestFnCall)(node, context, ['describe'])) {
95
84
  describeNestingLevel--;
96
85
  }
97
86
  }
98
-
99
87
  };
100
88
  }
101
-
102
89
  });
103
-
104
90
  exports.default = _default;
105
-
106
91
  function getPreferredNodeName(nodeName, preferredTestKeyword) {
107
92
  if (nodeName === _utils2.TestCaseName.fit) {
108
93
  return 'test.only';
109
94
  }
110
-
111
95
  return nodeName.startsWith('f') || nodeName.startsWith('x') ? nodeName.charAt(0) + preferredTestKeyword : preferredTestKeyword;
112
96
  }
113
-
114
97
  function getOppositeTestKeyword(test) {
115
98
  if (test === _utils2.TestCaseName.test) {
116
99
  return _utils2.TestCaseName.it;
117
100
  }
118
-
119
101
  return _utils2.TestCaseName.test;
120
102
  }
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _utils = require("@typescript-eslint/utils");
9
-
10
8
  var _utils2 = require("./utils");
11
-
12
9
  /*
13
10
  * This implementation is adapted from eslint-plugin-jasmine.
14
11
  * MIT license, Remco Haszing.
@@ -27,7 +24,6 @@ function matchesAssertFunctionName(nodeName, patterns) {
27
24
  return x.replace(/\*/gu, '[a-z\\d]*');
28
25
  }).join('\\.')}(\\.|$)`, 'ui').test(nodeName));
29
26
  }
30
-
31
27
  var _default = (0, _utils2.createRule)({
32
28
  name: __filename,
33
29
  meta: {
@@ -63,56 +59,45 @@ var _default = (0, _utils2.createRule)({
63
59
  assertFunctionNames: ['expect'],
64
60
  additionalTestBlockFunctions: []
65
61
  }],
66
-
67
62
  create(context, [{
68
63
  assertFunctionNames = ['expect'],
69
64
  additionalTestBlockFunctions = []
70
65
  }]) {
71
66
  const unchecked = [];
72
-
73
67
  function checkCallExpressionUsed(nodes) {
74
68
  for (const node of nodes) {
75
69
  const index = node.type === _utils.AST_NODE_TYPES.CallExpression ? unchecked.indexOf(node) : -1;
76
-
77
70
  if (node.type === _utils.AST_NODE_TYPES.FunctionDeclaration) {
78
71
  const declaredVariables = context.getDeclaredVariables(node);
79
72
  const testCallExpressions = (0, _utils2.getTestCallExpressionsFromDeclaredVariables)(declaredVariables, context);
80
73
  checkCallExpressionUsed(testCallExpressions);
81
74
  }
82
-
83
75
  if (index !== -1) {
84
76
  unchecked.splice(index, 1);
85
77
  break;
86
78
  }
87
79
  }
88
80
  }
89
-
90
81
  return {
91
82
  CallExpression(node) {
92
83
  const name = (0, _utils2.getNodeName)(node.callee) ?? '';
93
-
94
84
  if ((0, _utils2.isTypeOfJestFnCall)(node, context, ['test']) || additionalTestBlockFunctions.includes(name)) {
95
85
  if (node.callee.type === _utils.AST_NODE_TYPES.MemberExpression && (0, _utils2.isSupportedAccessor)(node.callee.property, 'todo')) {
96
86
  return;
97
87
  }
98
-
99
88
  unchecked.push(node);
100
89
  } else if (matchesAssertFunctionName(name, assertFunctionNames)) {
101
90
  // Return early in case of nested `it` statements.
102
91
  checkCallExpressionUsed(context.getAncestors());
103
92
  }
104
93
  },
105
-
106
94
  'Program:exit'() {
107
95
  unchecked.forEach(node => context.report({
108
96
  messageId: 'noAssertions',
109
97
  node
110
98
  }));
111
99
  }
112
-
113
100
  };
114
101
  }
115
-
116
102
  });
117
-
118
103
  exports.default = _default;
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _utils = require("@typescript-eslint/utils");
9
-
10
8
  var _utils2 = require("./utils");
11
-
12
9
  var _default = (0, _utils2.createRule)({
13
10
  name: __filename,
14
11
  meta: {
@@ -35,39 +32,29 @@ var _default = (0, _utils2.createRule)({
35
32
  defaultOptions: [{
36
33
  max: 5
37
34
  }],
38
-
39
35
  create(context, [{
40
36
  max
41
37
  }]) {
42
38
  let count = 0;
43
-
44
39
  const maybeResetCount = node => {
45
40
  var _node$parent;
46
-
47
41
  const isTestFn = ((_node$parent = node.parent) === null || _node$parent === void 0 ? void 0 : _node$parent.type) !== _utils.AST_NODE_TYPES.CallExpression || (0, _utils2.isTypeOfJestFnCall)(node.parent, context, ['test']);
48
-
49
42
  if (isTestFn) {
50
43
  count = 0;
51
44
  }
52
45
  };
53
-
54
46
  return {
55
47
  FunctionExpression: maybeResetCount,
56
48
  'FunctionExpression:exit': maybeResetCount,
57
49
  ArrowFunctionExpression: maybeResetCount,
58
50
  'ArrowFunctionExpression:exit': maybeResetCount,
59
-
60
51
  CallExpression(node) {
61
52
  var _jestFnCall$head$node;
62
-
63
53
  const jestFnCall = (0, _utils2.parseJestFnCall)(node, context);
64
-
65
54
  if ((jestFnCall === null || jestFnCall === void 0 ? void 0 : jestFnCall.type) !== 'expect' || ((_jestFnCall$head$node = jestFnCall.head.node.parent) === null || _jestFnCall$head$node === void 0 ? void 0 : _jestFnCall$head$node.type) === _utils.AST_NODE_TYPES.MemberExpression) {
66
55
  return;
67
56
  }
68
-
69
57
  count += 1;
70
-
71
58
  if (count > max) {
72
59
  context.report({
73
60
  node,
@@ -79,10 +66,7 @@ var _default = (0, _utils2.createRule)({
79
66
  });
80
67
  }
81
68
  }
82
-
83
69
  };
84
70
  }
85
-
86
71
  });
87
-
88
72
  exports.default = _default;
@@ -4,11 +4,8 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _utils = require("@typescript-eslint/utils");
9
-
10
8
  var _utils2 = require("./utils");
11
-
12
9
  var _default = (0, _utils2.createRule)({
13
10
  name: __filename,
14
11
  meta: {
@@ -35,23 +32,18 @@ var _default = (0, _utils2.createRule)({
35
32
  defaultOptions: [{
36
33
  max: 5
37
34
  }],
38
-
39
35
  create(context, [{
40
36
  max
41
37
  }]) {
42
38
  const describeCallbackStack = [];
43
-
44
39
  function pushDescribeCallback(node) {
45
40
  const {
46
41
  parent
47
42
  } = node;
48
-
49
43
  if ((parent === null || parent === void 0 ? void 0 : parent.type) !== _utils.AST_NODE_TYPES.CallExpression || !(0, _utils2.isTypeOfJestFnCall)(parent, context, ['describe'])) {
50
44
  return;
51
45
  }
52
-
53
46
  describeCallbackStack.push(0);
54
-
55
47
  if (describeCallbackStack.length > max) {
56
48
  context.report({
57
49
  node: parent,
@@ -63,17 +55,14 @@ var _default = (0, _utils2.createRule)({
63
55
  });
64
56
  }
65
57
  }
66
-
67
58
  function popDescribeCallback(node) {
68
59
  const {
69
60
  parent
70
61
  } = node;
71
-
72
62
  if ((parent === null || parent === void 0 ? void 0 : parent.type) === _utils.AST_NODE_TYPES.CallExpression && (0, _utils2.isTypeOfJestFnCall)(parent, context, ['describe'])) {
73
63
  describeCallbackStack.pop();
74
64
  }
75
65
  }
76
-
77
66
  return {
78
67
  FunctionExpression: pushDescribeCallback,
79
68
  'FunctionExpression:exit': popDescribeCallback,
@@ -81,7 +70,5 @@ var _default = (0, _utils2.createRule)({
81
70
  'ArrowFunctionExpression:exit': popDescribeCallback
82
71
  };
83
72
  }
84
-
85
73
  });
86
-
87
74
  exports.default = _default;
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _utils = require("./utils");
9
-
10
8
  var _default = (0, _utils.createRule)({
11
9
  name: __filename,
12
10
  meta: {
@@ -23,7 +21,6 @@ var _default = (0, _utils.createRule)({
23
21
  schema: []
24
22
  },
25
23
  defaultOptions: [],
26
-
27
24
  create(context) {
28
25
  // map of jest matcher aliases & their canonical names
29
26
  const methodNames = {
@@ -42,16 +39,13 @@ var _default = (0, _utils.createRule)({
42
39
  return {
43
40
  CallExpression(node) {
44
41
  const jestFnCall = (0, _utils.parseJestFnCall)(node, context);
45
-
46
42
  if ((jestFnCall === null || jestFnCall === void 0 ? void 0 : jestFnCall.type) !== 'expect') {
47
43
  return;
48
44
  }
49
-
50
45
  const {
51
46
  matcher
52
47
  } = jestFnCall;
53
48
  const alias = (0, _utils.getAccessorValue)(matcher);
54
-
55
49
  if (alias in methodNames) {
56
50
  const canonical = methodNames[alias];
57
51
  context.report({
@@ -65,10 +59,7 @@ var _default = (0, _utils.createRule)({
65
59
  });
66
60
  }
67
61
  }
68
-
69
62
  };
70
63
  }
71
-
72
64
  });
73
-
74
65
  exports.default = _default;
@@ -4,13 +4,10 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _utils = require("./utils");
9
-
10
8
  function hasTests(node) {
11
9
  return /^\s*[xf]?(test|it|describe)(\.\w+|\[['"]\w+['"]\])?\s*\(/mu.test(node.value);
12
10
  }
13
-
14
11
  var _default = (0, _utils.createRule)({
15
12
  name: __filename,
16
13
  meta: {
@@ -26,30 +23,23 @@ var _default = (0, _utils.createRule)({
26
23
  type: 'suggestion'
27
24
  },
28
25
  defaultOptions: [],
29
-
30
26
  create(context) {
31
27
  const sourceCode = context.getSourceCode();
32
-
33
28
  function checkNode(node) {
34
29
  if (!hasTests(node)) {
35
30
  return;
36
31
  }
37
-
38
32
  context.report({
39
33
  messageId: 'commentedTests',
40
34
  node
41
35
  });
42
36
  }
43
-
44
37
  return {
45
38
  Program() {
46
39
  const comments = sourceCode.getAllComments();
47
40
  comments.forEach(checkNode);
48
41
  }
49
-
50
42
  };
51
43
  }
52
-
53
44
  });
54
-
55
45
  exports.default = _default;
@@ -4,18 +4,14 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _utils = require("@typescript-eslint/utils");
9
-
10
8
  var _utils2 = require("./utils");
11
-
12
9
  const isCatchCall = node => node.callee.type === _utils.AST_NODE_TYPES.MemberExpression && (0, _utils2.isSupportedAccessor)(node.callee.property, 'catch');
13
-
14
10
  var _default = (0, _utils2.createRule)({
15
11
  name: __filename,
16
12
  meta: {
17
13
  docs: {
18
- description: 'Prevent calling `expect` conditionally',
14
+ description: 'Disallow calling `expect` conditionally',
19
15
  category: 'Best Practices',
20
16
  recommended: 'error'
21
17
  },
@@ -26,46 +22,36 @@ var _default = (0, _utils2.createRule)({
26
22
  schema: []
27
23
  },
28
24
  defaultOptions: [],
29
-
30
25
  create(context) {
31
26
  let conditionalDepth = 0;
32
27
  let inTestCase = false;
33
28
  let inPromiseCatch = false;
34
-
35
29
  const increaseConditionalDepth = () => inTestCase && conditionalDepth++;
36
-
37
30
  const decreaseConditionalDepth = () => inTestCase && conditionalDepth--;
38
-
39
31
  return {
40
32
  FunctionDeclaration(node) {
41
33
  const declaredVariables = context.getDeclaredVariables(node);
42
34
  const testCallExpressions = (0, _utils2.getTestCallExpressionsFromDeclaredVariables)(declaredVariables, context);
43
-
44
35
  if (testCallExpressions.length > 0) {
45
36
  inTestCase = true;
46
37
  }
47
38
  },
48
-
49
39
  CallExpression(node) {
50
40
  const {
51
41
  type: jestFnCallType
52
42
  } = (0, _utils2.parseJestFnCall)(node, context) ?? {};
53
-
54
43
  if (jestFnCallType === 'test') {
55
44
  inTestCase = true;
56
45
  }
57
-
58
46
  if (isCatchCall(node)) {
59
47
  inPromiseCatch = true;
60
48
  }
61
-
62
49
  if (inTestCase && jestFnCallType === 'expect' && conditionalDepth > 0) {
63
50
  context.report({
64
51
  messageId: 'conditionalExpect',
65
52
  node
66
53
  });
67
54
  }
68
-
69
55
  if (inPromiseCatch && jestFnCallType === 'expect') {
70
56
  context.report({
71
57
  messageId: 'conditionalExpect',
@@ -73,17 +59,14 @@ var _default = (0, _utils2.createRule)({
73
59
  });
74
60
  }
75
61
  },
76
-
77
62
  'CallExpression:exit'(node) {
78
63
  if ((0, _utils2.isTypeOfJestFnCall)(node, context, ['test'])) {
79
64
  inTestCase = false;
80
65
  }
81
-
82
66
  if (isCatchCall(node)) {
83
67
  inPromiseCatch = false;
84
68
  }
85
69
  },
86
-
87
70
  CatchClause: increaseConditionalDepth,
88
71
  'CatchClause:exit': decreaseConditionalDepth,
89
72
  IfStatement: increaseConditionalDepth,
@@ -96,7 +79,5 @@ var _default = (0, _utils2.createRule)({
96
79
  'LogicalExpression:exit': decreaseConditionalDepth
97
80
  };
98
81
  }
99
-
100
82
  });
101
-
102
83
  exports.default = _default;
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _utils = require("./utils");
9
-
10
8
  var _default = (0, _utils.createRule)({
11
9
  name: __filename,
12
10
  meta: {
@@ -22,10 +20,8 @@ var _default = (0, _utils.createRule)({
22
20
  schema: []
23
21
  },
24
22
  defaultOptions: [],
25
-
26
23
  create(context) {
27
24
  let inTestCase = false;
28
-
29
25
  const maybeReportConditional = node => {
30
26
  if (inTestCase) {
31
27
  context.report({
@@ -34,27 +30,22 @@ var _default = (0, _utils.createRule)({
34
30
  });
35
31
  }
36
32
  };
37
-
38
33
  return {
39
34
  CallExpression(node) {
40
35
  if ((0, _utils.isTypeOfJestFnCall)(node, context, ['test'])) {
41
36
  inTestCase = true;
42
37
  }
43
38
  },
44
-
45
39
  'CallExpression:exit'(node) {
46
40
  if ((0, _utils.isTypeOfJestFnCall)(node, context, ['test'])) {
47
41
  inTestCase = false;
48
42
  }
49
43
  },
50
-
51
44
  IfStatement: maybeReportConditional,
52
45
  SwitchStatement: maybeReportConditional,
53
46
  ConditionalExpression: maybeReportConditional,
54
47
  LogicalExpression: maybeReportConditional
55
48
  };
56
49
  }
57
-
58
50
  });
59
-
60
51
  exports.default = _default;
@@ -4,20 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _utils = require("@typescript-eslint/utils");
9
-
10
8
  var _utils2 = require("./utils");
11
-
12
9
  const parseJestVersion = rawVersion => {
13
10
  if (typeof rawVersion === 'number') {
14
11
  return rawVersion;
15
12
  }
16
-
17
13
  const [majorVersion] = rawVersion.split('.');
18
14
  return parseInt(majorVersion, 10);
19
15
  };
20
-
21
16
  var _default = (0, _utils2.createRule)({
22
17
  name: __filename,
23
18
  meta: {
@@ -34,12 +29,11 @@ var _default = (0, _utils2.createRule)({
34
29
  fixable: 'code'
35
30
  },
36
31
  defaultOptions: [],
37
-
38
32
  create(context) {
39
33
  var _context$settings, _context$settings$jes;
40
-
41
34
  const jestVersion = parseJestVersion(((_context$settings = context.settings) === null || _context$settings === void 0 ? void 0 : (_context$settings$jes = _context$settings.jest) === null || _context$settings$jes === void 0 ? void 0 : _context$settings$jes.version) || (0, _utils2.detectJestVersion)());
42
- const deprecations = { ...(jestVersion >= 15 && {
35
+ const deprecations = {
36
+ ...(jestVersion >= 15 && {
43
37
  'jest.resetModuleRegistry': 'jest.resetModules'
44
38
  }),
45
39
  ...(jestVersion >= 17 && {
@@ -61,13 +55,10 @@ var _default = (0, _utils2.createRule)({
61
55
  if (node.callee.type !== _utils.AST_NODE_TYPES.MemberExpression) {
62
56
  return;
63
57
  }
64
-
65
58
  const deprecation = (0, _utils2.getNodeName)(node);
66
-
67
59
  if (!deprecation || !(deprecation in deprecations)) {
68
60
  return;
69
61
  }
70
-
71
62
  const replacement = deprecations[deprecation];
72
63
  const {
73
64
  callee
@@ -79,23 +70,16 @@ var _default = (0, _utils2.createRule)({
79
70
  replacement
80
71
  },
81
72
  node,
82
-
83
73
  fix(fixer) {
84
74
  let [name, func] = replacement.split('.');
85
-
86
75
  if (callee.property.type === _utils.AST_NODE_TYPES.Literal) {
87
76
  func = `'${func}'`;
88
77
  }
89
-
90
78
  return [fixer.replaceText(callee.object, name), fixer.replaceText(callee.property, func)];
91
79
  }
92
-
93
80
  });
94
81
  }
95
-
96
82
  };
97
83
  }
98
-
99
84
  });
100
-
101
85
  exports.default = _default;
@@ -4,9 +4,7 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
-
8
7
  var _utils = require("./utils");
9
-
10
8
  var _default = (0, _utils.createRule)({
11
9
  name: __filename,
12
10
  meta: {
@@ -27,25 +25,20 @@ var _default = (0, _utils.createRule)({
27
25
  type: 'suggestion'
28
26
  },
29
27
  defaultOptions: [],
30
-
31
28
  create(context) {
32
29
  let suiteDepth = 0;
33
30
  let testDepth = 0;
34
31
  return {
35
32
  CallExpression(node) {
36
33
  const jestFnCall = (0, _utils.parseJestFnCall)(node, context);
37
-
38
34
  if (!jestFnCall) {
39
35
  return;
40
36
  }
41
-
42
37
  if (jestFnCall.type === 'describe') {
43
38
  suiteDepth++;
44
39
  }
45
-
46
40
  if (jestFnCall.type === 'test') {
47
41
  testDepth++;
48
-
49
42
  if (node.arguments.length < 2 && jestFnCall.members.every(s => (0, _utils.getAccessorValue)(s) !== 'todo')) {
50
43
  context.report({
51
44
  messageId: 'missingFunction',
@@ -53,8 +46,8 @@ var _default = (0, _utils.createRule)({
53
46
  });
54
47
  }
55
48
  }
56
-
57
- if ( // the only jest functions that are with "x" are "xdescribe", "xtest", and "xit"
49
+ if (
50
+ // the only jest functions that are with "x" are "xdescribe", "xtest", and "xit"
58
51
  jestFnCall.name.startsWith('x') || jestFnCall.members.some(s => (0, _utils.getAccessorValue)(s) === 'skip')) {
59
52
  context.report({
60
53
  messageId: jestFnCall.type === 'describe' ? 'disabledSuite' : 'disabledTest',
@@ -62,28 +55,22 @@ var _default = (0, _utils.createRule)({
62
55
  });
63
56
  }
64
57
  },
65
-
66
58
  'CallExpression:exit'(node) {
67
59
  const jestFnCall = (0, _utils.parseJestFnCall)(node, context);
68
-
69
60
  if (!jestFnCall) {
70
61
  return;
71
62
  }
72
-
73
63
  if (jestFnCall.type === 'describe') {
74
64
  suiteDepth--;
75
65
  }
76
-
77
66
  if (jestFnCall.type === 'test') {
78
67
  testDepth--;
79
68
  }
80
69
  },
81
-
82
70
  'CallExpression[callee.name="pending"]'(node) {
83
71
  if ((0, _utils.scopeHasLocalReference)(context.getScope(), 'pending')) {
84
72
  return;
85
73
  }
86
-
87
74
  if (testDepth > 0) {
88
75
  context.report({
89
76
  messageId: 'pendingTest',
@@ -101,10 +88,7 @@ var _default = (0, _utils.createRule)({
101
88
  });
102
89
  }
103
90
  }
104
-
105
91
  };
106
92
  }
107
-
108
93
  });
109
-
110
94
  exports.default = _default;