Skip to content

Commit ec1ce6c

Browse files
G-RathSimenB
authored andcommitted
chore(consistent-test-it): convert to typescript (#327)
1 parent b1a0978 commit ec1ce6c

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

src/rules/__tests__/consistent-test-it.test.js renamed to src/rules/__tests__/consistent-test-it.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { RuleTester } from 'eslint';
1+
import { TSESLint } from '@typescript-eslint/experimental-utils';
22
import rule from '../consistent-test-it';
33

4-
const ruleTester = new RuleTester({
4+
const ruleTester = new TSESLint.RuleTester({
55
parserOptions: {
66
ecmaVersion: 6,
77
},

src/rules/consistent-test-it.js renamed to src/rules/consistent-test-it.ts

Lines changed: 23 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,13 @@
1-
import { getDocsUrl, getNodeName, isDescribe, isTestCase } from './util';
1+
import { AST_NODE_TYPES } from '@typescript-eslint/experimental-utils';
2+
import { createRule, getNodeName, isDescribe, isTestCase } from './tsUtils';
23

3-
export default {
4+
export default createRule({
5+
name: __filename,
46
meta: {
57
docs: {
6-
url: getDocsUrl(__filename),
8+
category: 'Best Practices',
9+
description: 'Have control over `test` and `it` usages',
10+
recommended: false,
711
},
812
fixable: 'code',
913
messages: {
@@ -26,7 +30,14 @@ export default {
2630
additionalProperties: false,
2731
},
2832
],
33+
type: 'suggestion',
2934
},
35+
defaultOptions: [
36+
{ fn: 'test', withinDescribe: 'it' } as {
37+
fn?: 'it' | 'test';
38+
withinDescribe?: 'it' | 'test';
39+
},
40+
],
3041
create(context) {
3142
const configObj = context.options[0] || {};
3243
const testKeyword = configObj.fn || 'test';
@@ -39,6 +50,10 @@ export default {
3950
CallExpression(node) {
4051
const nodeName = getNodeName(node.callee);
4152

53+
if (!nodeName) {
54+
return;
55+
}
56+
4257
if (isDescribe(node)) {
4358
describeNestingLevel++;
4459
}
@@ -56,7 +71,7 @@ export default {
5671
data: { testKeyword, oppositeTestKeyword },
5772
fix(fixer) {
5873
const nodeToReplace =
59-
node.callee.type === 'MemberExpression'
74+
node.callee.type === AST_NODE_TYPES.MemberExpression
6075
? node.callee.object
6176
: node.callee;
6277

@@ -81,7 +96,7 @@ export default {
8196
data: { testKeywordWithinDescribe, oppositeTestKeyword },
8297
fix(fixer) {
8398
const nodeToReplace =
84-
node.callee.type === 'MemberExpression'
99+
node.callee.type === AST_NODE_TYPES.MemberExpression
85100
? node.callee.object
86101
: node.callee;
87102

@@ -101,9 +116,9 @@ export default {
101116
},
102117
};
103118
},
104-
};
119+
});
105120

106-
function getPreferredNodeName(nodeName, preferredTestKeyword) {
121+
function getPreferredNodeName(nodeName: string, preferredTestKeyword: string) {
107122
switch (nodeName) {
108123
case 'fit':
109124
return 'test.only';
@@ -114,7 +129,7 @@ function getPreferredNodeName(nodeName, preferredTestKeyword) {
114129
}
115130
}
116131

117-
function getOppositeTestKeyword(test) {
132+
function getOppositeTestKeyword(test: string) {
118133
if (test === 'test') {
119134
return 'it';
120135
}

0 commit comments

Comments
 (0)