test: dedupe fetch cleanup-throw signal harness

This commit is contained in:
Peter Steinberger
2026-02-19 13:50:01 +00:00
parent 0bda0202fd
commit 4ddc4dfd76

View File

@@ -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();