123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181 |
- "use strict";
- Object.defineProperty(exports, "__esModule", {
- value: true
- });
- exports.getFirstMatcherArg = exports.findTopMostCallExpression = exports.createRule = exports.TestCaseName = exports.ModifierName = exports.HookName = exports.EqualityMatcher = exports.DescribeAlias = void 0;
- exports.getNodeName = getNodeName;
- exports.replaceAccessorFixer = exports.isFunction = exports.isBooleanLiteral = exports.hasOnlyOneArgument = exports.getTestCallExpressionsFromDeclaredVariables = void 0;
- var _path = require("path");
- var _utils = require("@typescript-eslint/utils");
- var _package = require("../../../package.json");
- var _accessors = require("./accessors");
- var _followTypeAssertionChain = require("./followTypeAssertionChain");
- var _parseJestFnCall = require("./parseJestFnCall");
- const REPO_URL = 'https://github.com/jest-community/eslint-plugin-jest';
- const createRule = _utils.ESLintUtils.RuleCreator(name => {
- const ruleName = (0, _path.parse)(name).name;
- return `${REPO_URL}/blob/v${_package.version}/docs/rules/${ruleName}.md`;
- });
- /**
- * Represents a `MemberExpression` with a "known" `property`.
- */
- exports.createRule = createRule;
- /**
- * Guards that the given `call` has only one `argument`.
- *
- * @param {CallExpression} call
- *
- * @return {call is CallExpressionWithSingleArgument}
- */
- const hasOnlyOneArgument = call => call.arguments.length === 1;
- exports.hasOnlyOneArgument = hasOnlyOneArgument;
- let DescribeAlias;
- exports.DescribeAlias = DescribeAlias;
- (function (DescribeAlias) {
- DescribeAlias["describe"] = "describe";
- DescribeAlias["fdescribe"] = "fdescribe";
- DescribeAlias["xdescribe"] = "xdescribe";
- })(DescribeAlias || (exports.DescribeAlias = DescribeAlias = {}));
- let TestCaseName;
- exports.TestCaseName = TestCaseName;
- (function (TestCaseName) {
- TestCaseName["fit"] = "fit";
- TestCaseName["it"] = "it";
- TestCaseName["test"] = "test";
- TestCaseName["xit"] = "xit";
- TestCaseName["xtest"] = "xtest";
- })(TestCaseName || (exports.TestCaseName = TestCaseName = {}));
- let HookName;
- exports.HookName = HookName;
- (function (HookName) {
- HookName["beforeAll"] = "beforeAll";
- HookName["beforeEach"] = "beforeEach";
- HookName["afterAll"] = "afterAll";
- HookName["afterEach"] = "afterEach";
- })(HookName || (exports.HookName = HookName = {}));
- let ModifierName;
- exports.ModifierName = ModifierName;
- (function (ModifierName) {
- ModifierName["not"] = "not";
- ModifierName["rejects"] = "rejects";
- ModifierName["resolves"] = "resolves";
- })(ModifierName || (exports.ModifierName = ModifierName = {}));
- let EqualityMatcher;
- exports.EqualityMatcher = EqualityMatcher;
- (function (EqualityMatcher) {
- EqualityMatcher["toBe"] = "toBe";
- EqualityMatcher["toEqual"] = "toEqual";
- EqualityMatcher["toStrictEqual"] = "toStrictEqual";
- })(EqualityMatcher || (exports.EqualityMatcher = EqualityMatcher = {}));
- const joinNames = (a, b) => a && b ? `${a}.${b}` : null;
- function getNodeName(node) {
- if ((0, _accessors.isSupportedAccessor)(node)) {
- return (0, _accessors.getAccessorValue)(node);
- }
- switch (node.type) {
- case _utils.AST_NODE_TYPES.TaggedTemplateExpression:
- return getNodeName(node.tag);
- case _utils.AST_NODE_TYPES.MemberExpression:
- return joinNames(getNodeName(node.object), getNodeName(node.property));
- case _utils.AST_NODE_TYPES.NewExpression:
- case _utils.AST_NODE_TYPES.CallExpression:
- return getNodeName(node.callee);
- }
- return null;
- }
- const isFunction = node => node.type === _utils.AST_NODE_TYPES.FunctionExpression || node.type === _utils.AST_NODE_TYPES.ArrowFunctionExpression;
- exports.isFunction = isFunction;
- const getTestCallExpressionsFromDeclaredVariables = (declaredVariables, context) => {
- return declaredVariables.reduce((acc, {
- references
- }) => acc.concat(references.map(({
- identifier
- }) => identifier.parent).filter(node => (node === null || node === void 0 ? void 0 : node.type) === _utils.AST_NODE_TYPES.CallExpression && (0, _parseJestFnCall.isTypeOfJestFnCall)(node, context, ['test']))), []);
- };
- /**
- * Replaces an accessor node with the given `text`, surrounding it in quotes if required.
- *
- * This ensures that fixes produce valid code when replacing both dot-based and
- * bracket-based property accessors.
- */
- exports.getTestCallExpressionsFromDeclaredVariables = getTestCallExpressionsFromDeclaredVariables;
- const replaceAccessorFixer = (fixer, node, text) => {
- return fixer.replaceText(node, node.type === _utils.AST_NODE_TYPES.Identifier ? text : `'${text}'`);
- };
- exports.replaceAccessorFixer = replaceAccessorFixer;
- const findTopMostCallExpression = node => {
- let topMostCallExpression = node;
- let {
- parent
- } = node;
- while (parent) {
- if (parent.type === _utils.AST_NODE_TYPES.CallExpression) {
- topMostCallExpression = parent;
- parent = parent.parent;
- continue;
- }
- if (parent.type !== _utils.AST_NODE_TYPES.MemberExpression) {
- break;
- }
- parent = parent.parent;
- }
- return topMostCallExpression;
- };
- exports.findTopMostCallExpression = findTopMostCallExpression;
- const isBooleanLiteral = node => node.type === _utils.AST_NODE_TYPES.Literal && typeof node.value === 'boolean';
- exports.isBooleanLiteral = isBooleanLiteral;
- const getFirstMatcherArg = expectFnCall => {
- const [firstArg] = expectFnCall.args;
- if (firstArg.type === _utils.AST_NODE_TYPES.SpreadElement) {
- return firstArg;
- }
- return (0, _followTypeAssertionChain.followTypeAssertionChain)(firstArg);
- };
- exports.getFirstMatcherArg = getFirstMatcherArg;
|