Skip to content

Commit 4bb3dca

Browse files
committed
fix(valid-expect-in-promise): check number of arguments being passed
1 parent f2660be commit 4bb3dca

File tree

2 files changed

+29
-14
lines changed

2 files changed

+29
-14
lines changed

src/rules/__tests__/valid-expect-in-promise.test.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -120,15 +120,14 @@ ruleTester.run('valid-expect-in-promise', rule, {
120120
});
121121
});
122122
`,
123-
// todo: tighter "is promise" check
124-
// dedent`
125-
// it('it1', function () {
126-
// Promise.resolve().then(/*fulfillment*/ function () {
127-
// }, undefined, /*rejection*/ function () {
128-
// expect(someThing).toEqual(true)
129-
// })
130-
// });
131-
// `,
123+
dedent`
124+
it('it1', function () {
125+
Promise.resolve().then(/*fulfillment*/ function () {
126+
}, undefined, /*rejection*/ function () {
127+
expect(someThing).toEqual(true)
128+
})
129+
});
130+
`,
132131
dedent`
133132
it('it1', function () {
134133
return Promise.resolve().then(function () {

src/rules/valid-expect-in-promise.ts

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,27 @@ type ThenOrCatchCallExpression = KnownCallExpression<'then' | 'catch'>;
1919

2020
const isThenOrCatchCall = (
2121
node: TSESTree.Node,
22-
): node is ThenOrCatchCallExpression =>
23-
node.type === AST_NODE_TYPES.CallExpression &&
24-
node.callee.type === AST_NODE_TYPES.MemberExpression &&
25-
isSupportedAccessor(node.callee.property) &&
26-
['then', 'catch'].includes(getAccessorValue(node.callee.property));
22+
): node is ThenOrCatchCallExpression => {
23+
if (
24+
node.type === AST_NODE_TYPES.CallExpression &&
25+
node.callee.type === AST_NODE_TYPES.MemberExpression &&
26+
isSupportedAccessor(node.callee.property)
27+
) {
28+
// promise methods should have at least 1 argument
29+
if (node.arguments.length === 0) {
30+
return false;
31+
}
32+
33+
switch (getAccessorValue(node.callee.property)) {
34+
case 'then':
35+
return node.arguments.length < 3;
36+
case 'catch':
37+
return node.arguments.length < 2;
38+
}
39+
}
40+
41+
return false;
42+
};
2743

2844
const reportReturnRequired = (context: RuleContext, node: TSESTree.Node) => {
2945
context.report({

0 commit comments

Comments
 (0)