eslint-plugin-jest 27.1.5 → 27.1.6

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.
@@ -78,28 +78,31 @@ var _default = (0, _utils2.createRule)({
78
78
  callback: argument.name
79
79
  },
80
80
  fix(fixer) {
81
+ var _tokenAfterLastParam;
81
82
  const {
82
- body
83
+ body,
84
+ params
83
85
  } = callback;
84
86
  const sourceCode = context.getSourceCode();
85
87
  const firstBodyToken = sourceCode.getFirstToken(body);
86
88
  const lastBodyToken = sourceCode.getLastToken(body);
87
- const tokenBeforeArgument = sourceCode.getTokenBefore(argument);
88
- const tokenAfterArgument = sourceCode.getTokenAfter(argument);
89
+ const [firstParam] = params;
90
+ const lastParam = params[params.length - 1];
91
+ const tokenBeforeFirstParam = sourceCode.getTokenBefore(firstParam);
92
+ let tokenAfterLastParam = sourceCode.getTokenAfter(lastParam);
93
+ if (((_tokenAfterLastParam = tokenAfterLastParam) === null || _tokenAfterLastParam === void 0 ? void 0 : _tokenAfterLastParam.value) === ',') {
94
+ tokenAfterLastParam = sourceCode.getTokenAfter(tokenAfterLastParam);
95
+ }
89
96
 
90
97
  /* istanbul ignore if */
91
- if (!firstBodyToken || !lastBodyToken || !tokenBeforeArgument || !tokenAfterArgument) {
98
+ if (!firstBodyToken || !lastBodyToken || !tokenBeforeFirstParam || !tokenAfterLastParam) {
92
99
  throw new Error(`Unexpected null when attempting to fix ${context.getFilename()} - please file a github issue at https://github.com/jest-community/eslint-plugin-jest`);
93
100
  }
94
- const argumentInParens = tokenBeforeArgument.value === '(' && tokenAfterArgument.value === ')';
95
- let argumentFix = fixer.replaceText(argument, '()');
96
- if (argumentInParens) {
97
- argumentFix = fixer.remove(argument);
98
- }
99
- let newCallback = argument.name;
100
- if (argumentInParens) {
101
- newCallback = `(${newCallback})`;
101
+ let argumentFix = fixer.replaceText(firstParam, '()');
102
+ if (tokenBeforeFirstParam.value === '(' && tokenAfterLastParam.value === ')') {
103
+ argumentFix = fixer.removeRange([tokenBeforeFirstParam.range[1], tokenAfterLastParam.range[0]]);
102
104
  }
105
+ const newCallback = argument.name;
103
106
  let beforeReplacement = `new Promise(${newCallback} => `;
104
107
  let afterReplacement = ')';
105
108
  let replaceBefore = true;
@@ -25,9 +25,9 @@ const isFirstStatement = node => {
25
25
  /* istanbul ignore next */
26
26
  throw new Error(`Could not find BlockStatement - please file a github issue at https://github.com/jest-community/eslint-plugin-jest`);
27
27
  };
28
- const suggestRemovingExtraArguments = (args, extraArgsStartAt) => ({
28
+ const suggestRemovingExtraArguments = (context, func, from) => ({
29
29
  messageId: 'suggestRemovingExtraArguments',
30
- fix: fixer => fixer.removeRange([args[extraArgsStartAt].range[0] - Math.sign(extraArgsStartAt), args[args.length - 1].range[1]])
30
+ fix: fixer => (0, _utils2.removeExtraArgumentsFixer)(fixer, context, func, from)
31
31
  });
32
32
  var _default = (0, _utils2.createRule)({
33
33
  name: __filename,
@@ -97,13 +97,13 @@ var _default = (0, _utils2.createRule)({
97
97
  }
98
98
  return false;
99
99
  };
100
- const checkExpectHasAssertions = expectFnCall => {
100
+ const checkExpectHasAssertions = (expectFnCall, func) => {
101
101
  if ((0, _utils2.getAccessorValue)(expectFnCall.members[0]) === 'hasAssertions') {
102
102
  if (expectFnCall.args.length) {
103
103
  context.report({
104
104
  messageId: 'hasAssertionsTakesNoArguments',
105
105
  node: expectFnCall.matcher,
106
- suggest: [suggestRemovingExtraArguments(expectFnCall.args, 0)]
106
+ suggest: [suggestRemovingExtraArguments(context, func, 0)]
107
107
  });
108
108
  }
109
109
  return;
@@ -115,7 +115,7 @@ var _default = (0, _utils2.createRule)({
115
115
  const suggest = [];
116
116
  if (expectFnCall.args.length) {
117
117
  loc = expectFnCall.args[1].loc;
118
- suggest.push(suggestRemovingExtraArguments(expectFnCall.args, 1));
118
+ suggest.push(suggestRemovingExtraArguments(context, func, 1));
119
119
  }
120
120
  context.report({
121
121
  messageId: 'assertionsRequiresOneArgument',
@@ -157,7 +157,7 @@ var _default = (0, _utils2.createRule)({
157
157
  if ((jestFnCall === null || jestFnCall === void 0 ? void 0 : jestFnCall.type) === 'expect' && inTestCaseCall) {
158
158
  var _jestFnCall$head$node;
159
159
  if (expressionDepth === 1 && isFirstStatement(node) && ((_jestFnCall$head$node = jestFnCall.head.node.parent) === null || _jestFnCall$head$node === void 0 ? void 0 : _jestFnCall$head$node.type) === _utils.AST_NODE_TYPES.MemberExpression && jestFnCall.members.length === 1 && ['assertions', 'hasAssertions'].includes((0, _utils2.getAccessorValue)(jestFnCall.members[0]))) {
160
- checkExpectHasAssertions(jestFnCall);
160
+ checkExpectHasAssertions(jestFnCall, node);
161
161
  hasExpectAssertionsAsFirstStatement = true;
162
162
  }
163
163
  if (inForLoop) {
@@ -26,14 +26,14 @@ const shouldUseToBe = expectFnCall => {
26
26
  }
27
27
  return firstArg.type === _utils.AST_NODE_TYPES.TemplateLiteral;
28
28
  };
29
- const reportPreferToBe = (context, whatToBe, expectFnCall, modifierNode) => {
29
+ const reportPreferToBe = (context, whatToBe, expectFnCall, func, modifierNode) => {
30
30
  context.report({
31
31
  messageId: `useToBe${whatToBe}`,
32
32
  fix(fixer) {
33
33
  var _expectFnCall$args;
34
34
  const fixes = [(0, _utils2.replaceAccessorFixer)(fixer, expectFnCall.matcher, `toBe${whatToBe}`)];
35
35
  if ((_expectFnCall$args = expectFnCall.args) !== null && _expectFnCall$args !== void 0 && _expectFnCall$args.length && whatToBe !== '') {
36
- fixes.push(fixer.remove(expectFnCall.args[0]));
36
+ fixes.push((0, _utils2.removeExtraArgumentsFixer)(fixer, context, func, 0));
37
37
  }
38
38
  if (modifierNode) {
39
39
  fixes.push(fixer.removeRange([modifierNode.range[0] - 1, modifierNode.range[1]]));
@@ -73,27 +73,27 @@ var _default = (0, _utils2.createRule)({
73
73
  const matcherName = (0, _utils2.getAccessorValue)(jestFnCall.matcher);
74
74
  const notModifier = jestFnCall.modifiers.find(nod => (0, _utils2.getAccessorValue)(nod) === 'not');
75
75
  if (notModifier && ['toBeUndefined', 'toBeDefined'].includes(matcherName)) {
76
- reportPreferToBe(context, matcherName === 'toBeDefined' ? 'Undefined' : 'Defined', jestFnCall, notModifier);
76
+ reportPreferToBe(context, matcherName === 'toBeDefined' ? 'Undefined' : 'Defined', jestFnCall, node, notModifier);
77
77
  return;
78
78
  }
79
79
  if (!_utils2.EqualityMatcher.hasOwnProperty(matcherName) || jestFnCall.args.length === 0) {
80
80
  return;
81
81
  }
82
82
  if (isNullEqualityMatcher(jestFnCall)) {
83
- reportPreferToBe(context, 'Null', jestFnCall);
83
+ reportPreferToBe(context, 'Null', jestFnCall, node);
84
84
  return;
85
85
  }
86
86
  if (isFirstArgumentIdentifier(jestFnCall, 'undefined')) {
87
87
  const name = notModifier ? 'Defined' : 'Undefined';
88
- reportPreferToBe(context, name, jestFnCall, notModifier);
88
+ reportPreferToBe(context, name, jestFnCall, node, notModifier);
89
89
  return;
90
90
  }
91
91
  if (isFirstArgumentIdentifier(jestFnCall, 'NaN')) {
92
- reportPreferToBe(context, 'NaN', jestFnCall);
92
+ reportPreferToBe(context, 'NaN', jestFnCall, node);
93
93
  return;
94
94
  }
95
95
  if (shouldUseToBe(jestFnCall) && matcherName !== _utils2.EqualityMatcher.toBe) {
96
- reportPreferToBe(context, '', jestFnCall);
96
+ reportPreferToBe(context, '', jestFnCall, node);
97
97
  }
98
98
  }
99
99
  };
@@ -5,7 +5,7 @@ Object.defineProperty(exports, "__esModule", {
5
5
  });
6
6
  exports.getFirstMatcherArg = exports.findTopMostCallExpression = exports.createRule = exports.TestCaseName = exports.ModifierName = exports.HookName = exports.EqualityMatcher = exports.DescribeAlias = void 0;
7
7
  exports.getNodeName = getNodeName;
8
- exports.replaceAccessorFixer = exports.isFunction = exports.isBooleanLiteral = exports.hasOnlyOneArgument = exports.getTestCallExpressionsFromDeclaredVariables = void 0;
8
+ exports.replaceAccessorFixer = exports.removeExtraArgumentsFixer = exports.isFunction = exports.isBooleanLiteral = exports.hasOnlyOneArgument = exports.getTestCallExpressionsFromDeclaredVariables = void 0;
9
9
  var _path = require("path");
10
10
  var _utils = require("@typescript-eslint/utils");
11
11
  var _package = require("../../../package.json");
@@ -106,6 +106,17 @@ const replaceAccessorFixer = (fixer, node, text) => {
106
106
  return fixer.replaceText(node, node.type === _utils.AST_NODE_TYPES.Identifier ? text : `'${text}'`);
107
107
  };
108
108
  exports.replaceAccessorFixer = replaceAccessorFixer;
109
+ const removeExtraArgumentsFixer = (fixer, context, func, from) => {
110
+ const firstArg = func.arguments[from];
111
+ const lastArg = func.arguments[func.arguments.length - 1];
112
+ const sourceCode = context.getSourceCode();
113
+ let tokenAfterLastParam = sourceCode.getTokenAfter(lastArg);
114
+ if (tokenAfterLastParam.value === ',') {
115
+ tokenAfterLastParam = sourceCode.getTokenAfter(tokenAfterLastParam);
116
+ }
117
+ return fixer.removeRange([firstArg.range[0], tokenAfterLastParam.range[0]]);
118
+ };
119
+ exports.removeExtraArgumentsFixer = removeExtraArgumentsFixer;
109
120
  const findTopMostCallExpression = node => {
110
121
  let topMostCallExpression = node;
111
122
  let {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-jest",
3
- "version": "27.1.5",
3
+ "version": "27.1.6",
4
4
  "description": "ESLint rules for Jest",
5
5
  "keywords": [
6
6
  "eslint",
@@ -29,7 +29,7 @@
29
29
  "prettier:write": "prettier --write 'docs/**/*.md' README.md '.github/**' package.json tsconfig.json src/globals.json .yarnrc.yml",
30
30
  "postpublish": "pinst --enable",
31
31
  "test": "jest",
32
- "tools:regenerate-docs": "yarn prepack && eslint-doc-generator --ignore-config all --rule-doc-title-format desc-parens-name --rule-doc-section-include \"Rule details\" --rule-list-columns name,description,configsError,configsWarn,configsOff,fixable,hasSuggestions,deprecated --split-by meta.docs.requiresTypeChecking --url-configs \"https://github.com/jest-community/eslint-plugin-jest/blob/main/README.md#shareable-configurations\" && yarn prettier:write",
32
+ "tools:regenerate-docs": "yarn prepack && eslint-doc-generator && yarn prettier:write",
33
33
  "typecheck": "tsc -p ."
34
34
  },
35
35
  "commitlint": {
@@ -121,7 +121,7 @@
121
121
  "dedent": "^0.7.0",
122
122
  "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0",
123
123
  "eslint-config-prettier": "^8.3.0",
124
- "eslint-doc-generator": "^0.19.0",
124
+ "eslint-doc-generator": "^0.26.0",
125
125
  "eslint-plugin-eslint-comments": "^3.1.2",
126
126
  "eslint-plugin-eslint-plugin": "^5.0.6",
127
127
  "eslint-plugin-import": "^2.25.1",
@@ -155,7 +155,7 @@
155
155
  "optional": true
156
156
  }
157
157
  },
158
- "packageManager": "yarn@3.2.4",
158
+ "packageManager": "yarn@3.3.0",
159
159
  "engines": {
160
160
  "node": "^14.15.0 || ^16.10.0 || >=18.0.0"
161
161
  }