UNPKG

jest-codemods

Version:

Codemods for migrating test files to Jest

82 lines (81 loc) 3.62 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.isExpectCallUtil = exports.createCallChainUtil = exports.updateExpectUtil = exports.getExpectNodeUtil = exports.getNodeBeforeMemberExpressionUtil = exports.chainContainsUtil = exports.createCallUtil = void 0; var consts_1 = require("./consts"); var createCallUtil = function (j) { return function (fnName, args, rest, containsNot) { var expression = containsNot ? j.memberExpression(rest, j.identifier('not')) : rest; var numberOfArgs = consts_1.JEST_MATCHER_TO_MAX_ARGS[fnName]; if (typeof numberOfArgs === 'undefined') { throw new Error("Unknown matcher \"".concat(fnName, "\" (JEST_MATCHER_TO_MAX_ARGS)")); } return j.memberExpression(expression, j.callExpression(j.identifier(fnName), args.slice(0, numberOfArgs))); }; }; exports.createCallUtil = createCallUtil; var chainContainsUtil = function (j) { return function (fnName, node, end) { var curr = node; var checkEnd = typeof end === 'function' ? end : function (name) { return name === end; }; while (curr.type === j.MemberExpression.name && curr.property.name !== fnName && !checkEnd(curr.property.name)) { curr = curr.object; } return curr.type === j.MemberExpression.name && curr.property.name === fnName; }; }; exports.chainContainsUtil = chainContainsUtil; var getNodeBeforeMemberExpressionUtil = function (j) { return function (equalsMemberName, node, end) { var rest = node; while (rest.type === j.MemberExpression.name && !equalsMemberName(rest.property.name) && rest.property.name !== end) { rest = rest.object; } if (rest.type === j.MemberExpression.name && equalsMemberName(rest.property.name) && rest.property.name !== end) { rest = rest.object; } return rest; }; }; exports.getNodeBeforeMemberExpressionUtil = getNodeBeforeMemberExpressionUtil; var getExpectNodeUtil = function (j) { return function (node) { var curr = node; while (curr.type === j.MemberExpression.name || (curr.type === j.CallExpression.name && curr.callee.name !== 'expect')) { if (curr.type === j.MemberExpression.name) { curr = curr.object; } else if (curr.type === j.CallExpression.name) { curr = curr.callee; } } return curr; }; }; exports.getExpectNodeUtil = getExpectNodeUtil; var updateExpectUtil = function (j) { return function (node, fn) { var expectNode = (0, exports.getExpectNodeUtil)(j)(node); if (expectNode == null || expectNode.arguments == null) { return node; } var args = expectNode.arguments.map(fn); return j.callExpression(j.identifier('expect'), args); }; }; exports.updateExpectUtil = updateExpectUtil; var createCallChainUtil = function (j) { return function (chain, args) { var arr = chain.reverse(); var val = arr.pop(); var temp = typeof val === 'string' ? j.identifier(val) : val; var curr = temp; while (chain.length) { val = arr.pop(); temp = typeof val === 'string' ? j.identifier(val) : val; curr = j.memberExpression(curr, temp); } return j.callExpression(curr, args); }; }; exports.createCallChainUtil = createCallChainUtil; var isExpectCallUtil = function (j, node) { return node.name === 'expect' || (node.type === j.MemberExpression.name && (0, exports.isExpectCallUtil)(j, node.object)) || (node.type === j.CallExpression.name && (0, exports.isExpectCallUtil)(j, node.callee)); }; exports.isExpectCallUtil = isExpectCallUtil;