eslint-plugin-jest
Version:
Eslint rules for Jest
41 lines (35 loc) • 1.31 kB
JavaScript
'use strict';
const _require = require('./util'),
getDocsUrl = _require.getDocsUrl,
expectCase = _require.expectCase,
expectNotCase = _require.expectNotCase,
expectResolveCase = _require.expectResolveCase,
expectRejectCase = _require.expectRejectCase,
method = _require.method;
module.exports = {
meta: {
docs: {
url: getDocsUrl(__filename)
},
messages: {
useToHaveLength: 'Use toHaveLength() instead'
},
fixable: 'code'
},
create(context) {
return {
CallExpression(node) {
if (!(expectNotCase(node) || expectResolveCase(node) || expectRejectCase(node)) && expectCase(node) && (method(node).name === 'toBe' || method(node).name === 'toEqual') && node.arguments[0].property && node.arguments[0].property.name === 'length') {
const propertyDot = context.getSourceCode().getFirstTokenBetween(node.arguments[0].object, node.arguments[0].property, token => token.value === '.');
context.report({
fix(fixer) {
return [fixer.remove(propertyDot), fixer.remove(node.arguments[0].property), fixer.replaceText(method(node), 'toHaveLength')];
},
messageId: 'useToHaveLength',
node: method(node)
});
}
}
};
}
};