Skip to content

Commit 5a513b2

Browse files
authored
test(utils): add test for getNodeName (#813)
1 parent 3618d67 commit 5a513b2

File tree

1 file changed

+27
-1
lines changed

1 file changed

+27
-1
lines changed

src/rules/__tests__/utils.test.ts

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,11 @@
11
import { TSESLint } from '@typescript-eslint/experimental-utils';
22
import resolveFrom from 'resolve-from';
3-
import { createRule, isDescribeCall, isTestCaseCall } from '../utils';
3+
import {
4+
createRule,
5+
getNodeName,
6+
isDescribeCall,
7+
isTestCaseCall,
8+
} from '../utils';
49

510
const ruleTester = new TSESLint.RuleTester({
611
parser: resolveFrom(require.resolve('eslint'), 'espree'),
@@ -21,6 +26,7 @@ const rule = createRule({
2126
details: [
2227
'callType', //
2328
'numOfArgs',
29+
'nodeName',
2430
]
2531
.map(data => `${data}: {{ ${data} }}`)
2632
.join('\n'),
@@ -42,13 +48,32 @@ const rule = createRule({
4248
data: {
4349
callType,
4450
numOfArgs: node.arguments.length,
51+
nodeName: getNodeName(node),
4552
},
4653
});
4754
}
4855
},
4956
}),
5057
});
5158

59+
/**
60+
* Determines what the expected "node name" should be for the given code by normalizing
61+
* the line of code to be using dot property accessors and then applying regexp.
62+
*
63+
* @param {string} code
64+
*
65+
* @return {string}
66+
*/
67+
const expectedNodeName = (code: string): string => {
68+
const normalizedCode = code
69+
.replace(/\[["']/gu, '.') //
70+
.replace(/["']\]/gu, '');
71+
72+
const [expectedName] = /^[\w.]+/u.exec(normalizedCode) ?? ['NAME NOT FOUND'];
73+
74+
return expectedName;
75+
};
76+
5277
ruleTester.run('nonexistent methods', rule, {
5378
valid: [
5479
'describe.something()',
@@ -93,6 +118,7 @@ const testUtilsAgainst = (
93118
data: {
94119
callType,
95120
numOfArgs: 2,
121+
nodeName: expectedNodeName(code),
96122
},
97123
column: 1,
98124
line: 1,

0 commit comments

Comments
 (0)