From bbc8ead2e5c9e67ac16ba0d311d85bc4779fffdb Mon Sep 17 00:00:00 2001 From: patrick Date: Tue, 8 Sep 2026 10:00:08 +0200 Subject: [PATCH] fix(test): CI-Runner-Node hatte Blob ohne .stream() - kein echtes Response mehr MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit new Response(new Blob(...)) schlug auf dem Gitea-Runner mit "object.stream is not a function" fehl (Node-Version dort mit unvollständiger Blob-Impl.), lokal (Node 22) unauffällig. ladeDokumentAnsehen braucht nur response.ok und response.blob() - Mock jetzt als einfaches Objekt statt echtem Response. Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01CVgbozhYmuEhiEJHffRXCV --- frontend/src/api/client.test.ts | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) 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);