From c94f89610f127c6a15edda2db339fa622eb94d54 Mon Sep 17 00:00:00 2001 From: Stevche Radevski Date: Thu, 12 Sep 2024 10:45:58 +0200 Subject: [PATCH] fix: Remove test listeners after the event has happened (#9115) --- packages/core/medusa-test-utils/src/events.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/core/medusa-test-utils/src/events.ts b/packages/core/medusa-test-utils/src/events.ts index dca62e5898..92e5627948 100644 --- a/packages/core/medusa-test-utils/src/events.ts +++ b/packages/core/medusa-test-utils/src/events.ts @@ -6,8 +6,9 @@ export const waitSubscribersExecution = ( eventName: string, eventBus: IEventBusModuleService ) => { - const subscriberPromises: Promise[] = [] const eventEmitter: EventEmitter = (eventBus as any).eventEmitter_ + const subscriberPromises: Promise[] = [] + const originalListeners = eventEmitter.listeners(eventName) // If there are no existing listeners, resolve once the event happens. Otherwise, wrap the existing subscribers in a promise and resolve once they are done. if (!eventEmitter.listeners(eventName).length) { @@ -38,5 +39,10 @@ export const waitSubscribersExecution = ( }) } - return Promise.all(subscriberPromises) + return Promise.all(subscriberPromises).finally(() => { + eventEmitter.removeAllListeners(eventName) + originalListeners.forEach((listener) => { + eventEmitter.on(eventName, listener as (...args: any) => void) + }) + }) }