Files
actions-ansi-to-html/node_modules/eslint-plugin-jest/lib/rules/max-expects.js
T
2025-11-11 06:53:11 -05:00

86 lines
2.0 KiB
JavaScript

"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _utils = require("@typescript-eslint/utils");
var _utils2 = require("./utils");
var _default = (0, _utils2.createRule)({
name: __filename,
meta: {
docs: {
category: 'Best Practices',
description: 'Enforces a maximum number assertion calls in a test body',
recommended: false
},
messages: {
exceededMaxAssertion: 'Too many assertion calls ({{ count }}). Maximum allowed is {{ max }}.'
},
type: 'suggestion',
schema: [{
type: 'object',
properties: {
max: {
type: 'integer',
minimum: 1
}
},
additionalProperties: false
}]
},
defaultOptions: [{
max: 5
}],
create(context, [{
max
}]) {
let count = 0;
const onFunctionExpressionEnter = node => {
var _node$parent;
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']);
if (isTestFn) {
count = 0;
}
};
return {
FunctionExpression: onFunctionExpressionEnter,
ArrowFunctionExpression: onFunctionExpressionEnter,
CallExpression(node) {
var _jestFnCall$head$node;
const jestFnCall = (0, _utils2.parseJestFnCall)(node, context);
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) {
return;
}
count += 1;
if (count > max) {
context.report({
node,
messageId: 'exceededMaxAssertion',
data: {
count,
max
}
});
}
}
};
}
});
exports.default = _default;