Skip to content

Commit e9f8f4f

Browse files
authored
fix(await-async-queries): false positive with optional chaining (#1009)
Closes #882
1 parent 70fea91 commit e9f8f4f

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

lib/node-utils/index.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -278,6 +278,10 @@ function getRootExpression(
278278
return parent.expressions[parent.expressions.length - 1] === expression
279279
? getRootExpression(parent)
280280
: expression;
281+
282+
case AST_NODE_TYPES.ChainExpression:
283+
return getRootExpression(parent);
284+
281285
default:
282286
return expression;
283287
}

tests/lib/rules/await-async-queries.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,21 @@ ruleTester.run(RULE_NAME, rule, {
9393
// async screen queries declaration are valid
9494
...createTestCase((query) => `await screen.${query}('foo')`),
9595

96+
// async queries with optional chaining are valid
97+
...createTestCase((query) => `await screen?.${query}('foo')`),
98+
99+
...createTestCase(
100+
(query) => `
101+
it('test case', async () => {
102+
let renderResult: RenderResult | undefined;
103+
104+
renderResult = render(<div>text</div>);
105+
106+
expect(await renderResult?.${query}('text')).toBeDefined();
107+
});
108+
`
109+
),
110+
96111
// async @marko/testing-library screen queries declaration are valid
97112
...createTestCase((query) => `await screen.${query}('foo')`, {
98113
testingFramework: '@marko/testing-library',

0 commit comments

Comments
 (0)