Skip to content

Commit 3491dd7

Browse files
committed
fix(valid-expect-in-promise): support resolve & reject methods
1 parent c49f704 commit 3491dd7

File tree

2 files changed

+52
-6
lines changed

2 files changed

+52
-6
lines changed

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -605,6 +605,42 @@ ruleTester.run('valid-expect-in-promise', rule, {
605605
return Promise.all([somePromise]);
606606
});
607607
`,
608+
dedent`
609+
test('promise test', async function () {
610+
const somePromise = getPromise().then((data) => {
611+
expect(data).toEqual('foo');
612+
});
613+
614+
return Promise.resolve(somePromise);
615+
});
616+
`,
617+
dedent`
618+
test('promise test', async function () {
619+
const somePromise = getPromise().then((data) => {
620+
expect(data).toEqual('foo');
621+
});
622+
623+
return Promise.reject(somePromise);
624+
});
625+
`,
626+
dedent`
627+
test('promise test', async function () {
628+
const somePromise = getPromise().then((data) => {
629+
expect(data).toEqual('foo');
630+
});
631+
632+
await Promise.resolve(somePromise);
633+
});
634+
`,
635+
dedent`
636+
test('promise test', async function () {
637+
const somePromise = getPromise().then((data) => {
638+
expect(data).toEqual('foo');
639+
});
640+
641+
await Promise.reject(somePromise);
642+
});
643+
`,
608644
],
609645
invalid: [
610646
{

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

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -115,16 +115,26 @@ const isPromiseMethodThatUsesValue = (
115115

116116
if (
117117
node.argument.type === AST_NODE_TYPES.CallExpression &&
118-
node.argument.arguments.length > 0 &&
119-
getNodeName(node.argument) === 'Promise.all'
118+
node.argument.arguments.length > 0
120119
) {
121-
const [firstArg] = node.argument.arguments;
120+
const nodeName = getNodeName(node.argument);
121+
122+
if (nodeName === 'Promise.all') {
123+
const [firstArg] = node.argument.arguments;
124+
125+
if (
126+
firstArg.type === AST_NODE_TYPES.ArrayExpression &&
127+
firstArg.elements.some(nod => isIdentifier(nod, name))
128+
) {
129+
return true;
130+
}
131+
}
122132

123133
if (
124-
firstArg.type === AST_NODE_TYPES.ArrayExpression &&
125-
firstArg.elements.some(nod => isIdentifier(nod, name))
134+
['Promise.resolve', 'Promise.reject'].includes(nodeName as string) &&
135+
node.argument.arguments.length === 1
126136
) {
127-
return true;
137+
return isIdentifier(node.argument.arguments[0], name);
128138
}
129139
}
130140

0 commit comments

Comments
 (0)