UNPKG

1.33 kBJavaScriptView Raw
1'use strict';
2
3const {
4 getDocsUrl,
5 expectCase,
6 expectNotCase,
7 expectResolveCase,
8 expectRejectCase,
9 method,
10} = require('./util');
11
12module.exports = {
13 meta: {
14 docs: {
15 url: getDocsUrl(__filename),
16 },
17 fixable: 'code',
18 },
19 create(context) {
20 return {
21 CallExpression(node) {
22 if (
23 !(
24 expectNotCase(node) ||
25 expectResolveCase(node) ||
26 expectRejectCase(node)
27 ) &&
28 expectCase(node) &&
29 (method(node).name === 'toBe' || method(node).name === 'toEqual') &&
30 node.arguments[0].property &&
31 node.arguments[0].property.name === 'length'
32 ) {
33 const propertyDot = context
34 .getSourceCode()
35 .getFirstTokenBetween(
36 node.arguments[0].object,
37 node.arguments[0].property,
38 token => token.value === '.'
39 );
40 context.report({
41 fix(fixer) {
42 return [
43 fixer.remove(propertyDot),
44 fixer.remove(node.arguments[0].property),
45 fixer.replaceText(method(node), 'toHaveLength'),
46 ];
47 },
48 message: 'Use toHaveLength() instead',
49 node: method(node),
50 });
51 }
52 },
53 };
54 },
55};