jest-codemods
Version:
Codemods for migrating test files to Jest
82 lines (81 loc) • 3.62 kB
JavaScript
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;
;