diff --git a/src/infra/fetch.test.ts b/src/infra/fetch.test.ts index c9dc1c7a4d..0a81b5259d 100644 --- a/src/infra/fetch.test.ts +++ b/src/infra/fetch.test.ts @@ -31,6 +31,18 @@ function createForeignSignalHarness() { }; } +function createThrowingCleanupSignalHarness(cleanupError: Error) { + const removeEventListener = vi.fn(() => { + throw cleanupError; + }); + const fakeSignal = { + aborted: false, + addEventListener: (_event: string, _handler: () => void) => {}, + removeEventListener, + } as unknown as AbortSignal; + return { fakeSignal, removeEventListener }; +} + describe("wrapFetchWithAbortSignal", () => { it("adds duplex for requests with a body", async () => { let seenInit: RequestInit | undefined; @@ -122,15 +134,7 @@ describe("wrapFetchWithAbortSignal", () => { ); const wrapped = wrapFetchWithAbortSignal(fetchImpl); - const removeEventListener = vi.fn(() => { - throw cleanupError; - }); - - const fakeSignal = { - aborted: false, - addEventListener: (_event: string, _handler: () => void) => {}, - removeEventListener, - } as unknown as AbortSignal; + const { fakeSignal, removeEventListener } = createThrowingCleanupSignalHarness(cleanupError); await expect(wrapped("https://example.com", { signal: fakeSignal })).rejects.toBe(fetchError); expect(removeEventListener).toHaveBeenCalledOnce(); @@ -146,15 +150,7 @@ describe("wrapFetchWithAbortSignal", () => { ); const wrapped = wrapFetchWithAbortSignal(fetchImpl); - const removeEventListener = vi.fn(() => { - throw cleanupError; - }); - - const fakeSignal = { - aborted: false, - addEventListener: (_event: string, _handler: () => void) => {}, - removeEventListener, - } as unknown as AbortSignal; + const { fakeSignal, removeEventListener } = createThrowingCleanupSignalHarness(cleanupError); expect(() => wrapped("https://example.com", { signal: fakeSignal })).toThrow(syncError); expect(removeEventListener).toHaveBeenCalledOnce();