diff --git a/frontend/src/api/client.test.ts b/frontend/src/api/client.test.ts index db62ac8..7355ccf 100644 --- a/frontend/src/api/client.test.ts +++ b/frontend/src/api/client.test.ts @@ -46,9 +46,13 @@ describe("ladeDokumentAnsehen (Popup-Blocker-Fix)", () => { it("öffnet das Tab-Fenster SOFORT synchron, bevor fetch abgeschlossen ist", async () => { const tabStub = { location: { href: "" }, close: vi.fn() }; const openSpy = vi.spyOn(window, "open").mockReturnValue(tabStub as unknown as Window); - (fetch as ReturnType).mockResolvedValue( - new Response(new Blob(["pdf-inhalt"]), { status: 200 }) - ); + // Kein echtes Response/Blob-Objekt - manche Node-Versionen (CI-Runner) + // haben eine Blob-Implementierung ohne .stream(), die new Response(blob) + // dann intern braucht. ladeDokumentAnsehen nutzt nur .ok und .blob(). + (fetch as ReturnType).mockResolvedValue({ + ok: true, + blob: () => Promise.resolve(new Blob(["pdf-inhalt"])), + }); vi.stubGlobal("URL", { ...URL, createObjectURL: vi.fn().mockReturnValue("blob:fake-url") }); const promise = ladeDokumentAnsehen("abc-123"); @@ -63,9 +67,13 @@ describe("ladeDokumentAnsehen (Popup-Blocker-Fix)", () => { it("fällt bei blockiertem Popup auf denselben Tab zurück statt zu crashen", async () => { vi.spyOn(window, "open").mockReturnValue(null); - (fetch as ReturnType).mockResolvedValue( - new Response(new Blob(["pdf-inhalt"]), { status: 200 }) - ); + // Kein echtes Response/Blob-Objekt - manche Node-Versionen (CI-Runner) + // haben eine Blob-Implementierung ohne .stream(), die new Response(blob) + // dann intern braucht. ladeDokumentAnsehen nutzt nur .ok und .blob(). + (fetch as ReturnType).mockResolvedValue({ + ok: true, + blob: () => Promise.resolve(new Blob(["pdf-inhalt"])), + }); vi.stubGlobal("URL", { ...URL, createObjectURL: vi.fn().mockReturnValue("blob:fake-url") }); const ortsStub = { href: "" }; vi.stubGlobal("location", ortsStub);