Skip to content

Commit 4ca5889

Browse files
G-RathSimenB
authored andcommitted
chore(prefer-called-with): convert to typescript (#385)
1 parent 538ec03 commit 4ca5889

File tree

3 files changed

+43
-38
lines changed

3 files changed

+43
-38
lines changed

src/rules/__tests__/prefer-called-with.test.js renamed to src/rules/__tests__/prefer-called-with.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 '../prefer-called-with';
33

4-
const ruleTester = new RuleTester();
4+
const ruleTester = new TSESLint.RuleTester();
55

66
ruleTester.run('prefer-called-with', rule, {
77
valid: [

src/rules/prefer-called-with.js

Lines changed: 0 additions & 36 deletions
This file was deleted.

src/rules/prefer-called-with.ts

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
import { createRule, isExpectCall, parseExpectCall } from './tsUtils';
2+
3+
export default createRule({
4+
name: __filename,
5+
meta: {
6+
docs: {
7+
category: 'Best Practices',
8+
description:
9+
'Suggest using `toBeCalledWith()` OR `toHaveBeenCalledWith()`',
10+
recommended: false,
11+
},
12+
messages: {
13+
preferCalledWith: 'Prefer {{name}}With(/* expected args */)',
14+
},
15+
type: 'suggestion',
16+
schema: [],
17+
},
18+
defaultOptions: [],
19+
create(context) {
20+
return {
21+
CallExpression(node) {
22+
if (!isExpectCall(node)) {
23+
return;
24+
}
25+
26+
const { modifier, matcher } = parseExpectCall(node);
27+
28+
// Could check resolves/rejects here but not a likely idiom.
29+
if (matcher && !modifier) {
30+
if (['toBeCalled', 'toHaveBeenCalled'].includes(matcher.name)) {
31+
context.report({
32+
data: { name: matcher.name }, // todo: rename to 'matcherName'
33+
messageId: 'preferCalledWith',
34+
node: matcher.node.property,
35+
});
36+
}
37+
}
38+
},
39+
};
40+
},
41+
});

0 commit comments

Comments
 (0)