From 9eb12e9f1ac2e1bbfdb6b8223b8f59ae8f83b7cb Mon Sep 17 00:00:00 2001 From: Trung Nguyen Date: Fri, 3 Nov 2023 14:16:29 +0100 Subject: [PATCH] fix(await-async-events): non-async userEvent.setup() should not be invalid Signed-off-by: Trung Nguyen --- lib/rules/await-async-events.ts | 12 ++++++++++-- tests/lib/rules/await-async-events.test.ts | 13 +++++++++++++ 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/lib/rules/await-async-events.ts b/lib/rules/await-async-events.ts index 96adfcb2..c83fc558 100644 --- a/lib/rules/await-async-events.ts +++ b/lib/rules/await-async-events.ts @@ -91,9 +91,17 @@ export default createTestingLibraryRule({ messageId?: MessageIds; fix?: TSESLint.ReportFixFunction; }): void { - if (node.name === USER_EVENT_SETUP_FUNCTION_NAME) { - return; + if (isMemberExpression(closestCallExpression.callee)) { + if ( + (closestCallExpression.callee.object as TSESTree.Identifier).name === + USER_EVENT_NAME && + (closestCallExpression.callee.property as TSESTree.Identifier) + .name === USER_EVENT_SETUP_FUNCTION_NAME + ) { + return; + } } + if (!isPromiseHandled(node)) { context.report({ node: closestCallExpression.callee, diff --git a/tests/lib/rules/await-async-events.test.ts b/tests/lib/rules/await-async-events.test.ts index 2f0ce78e..080ab4ba 100644 --- a/tests/lib/rules/await-async-events.test.ts +++ b/tests/lib/rules/await-async-events.test.ts @@ -204,6 +204,19 @@ ruleTester.run(RULE_NAME, rule, { `, options: [{ eventModule: 'userEvent' }] as const, }, + { + code: ` + import userEvent from '${testingFramework}' + function customSetup() { + const user = userEvent.setup() + return {user} + } + test('setup method called and returned is valid', () => { + const {user} = customSetup(); + }) + `, + options: [{ eventModule: 'userEvent' }] as const, + }, ...USER_EVENT_ASYNC_FUNCTIONS.map((eventMethod) => ({ code: ` import userEvent from '${testingFramework}'