Skip to content

Commit cac6670

Browse files
committed
fix(no-await-sync-query): avoid false positive from parent func
1 parent 82124af commit cac6670

File tree

3 files changed

+13
-26
lines changed

3 files changed

+13
-26
lines changed

lib/node-utils.ts

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -153,19 +153,6 @@ export function findClosestCallNode(
153153
}
154154
}
155155

156-
export function isCallExpressionCallee(
157-
node: TSESTree.CallExpression,
158-
identifier: TSESTree.Identifier
159-
): boolean {
160-
const nodeInnerIdentifier = getDeepestIdentifierNode(node);
161-
162-
if (nodeInnerIdentifier) {
163-
return nodeInnerIdentifier.name === identifier.name;
164-
}
165-
166-
return false;
167-
}
168-
169156
export function isObjectExpression(
170157
node: TSESTree.Expression
171158
): node is TSESTree.ObjectExpression {

lib/rules/no-await-sync-query.ts

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
11
import { TSESTree } from '@typescript-eslint/experimental-utils';
22
import { createTestingLibraryRule } from '../create-testing-library-rule';
3-
import {
4-
findClosestCallExpressionNode,
5-
isCallExpressionCallee,
6-
} from '../node-utils';
3+
import { getDeepestIdentifierNode } from '../node-utils';
74

85
export const RULE_NAME = 'no-await-sync-query';
96
export type MessageIds = 'noAwaitSyncQuery';
@@ -29,22 +26,19 @@ export default createTestingLibraryRule<Options, MessageIds>({
2926

3027
create(context, _, helpers) {
3128
return {
32-
'AwaitExpression > CallExpression Identifier'(node: TSESTree.Identifier) {
33-
const closestCallExpression = findClosestCallExpressionNode(node, true);
34-
if (!closestCallExpression) {
35-
return;
36-
}
29+
'AwaitExpression > CallExpression'(node: TSESTree.CallExpression) {
30+
const deepestIdentifierNode = getDeepestIdentifierNode(node);
3731

38-
if (!isCallExpressionCallee(closestCallExpression, node)) {
32+
if (!deepestIdentifierNode) {
3933
return;
4034
}
4135

42-
if (helpers.isSyncQuery(node)) {
36+
if (helpers.isSyncQuery(deepestIdentifierNode)) {
4337
context.report({
44-
node,
38+
node: deepestIdentifierNode,
4539
messageId: 'noAwaitSyncQuery',
4640
data: {
47-
name: node.name,
41+
name: deepestIdentifierNode.name,
4842
},
4943
});
5044
}

tests/lib/rules/no-await-sync-query.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,12 @@ ruleTester.run(RULE_NAME, rule, {
3333
const element = queryAllByIcon('search')
3434
}
3535
`,
36+
`async () => {
37+
await waitFor(() => {
38+
getByText('search');
39+
});
40+
}
41+
`,
3642
// sync queries without await inside assert are valid
3743
...SYNC_QUERIES_COMBINATIONS.map((query) => ({
3844
code: `() => {

0 commit comments

Comments
 (0)