Files
nexarch/web/pdf-viewer/components/CasePanel.test.tsx
T
patrickandClaude Sonnet 5 533efa891c DOC-13: akten vorgangsanzeige im dokumentkontext
CasePanel zeigt Akte-Zugehoerigkeit, Vermerke und offene Wiedervorlagen in
der Dokument-Detailansicht ueber die externe Workflow-Board-API (VOR-04) an.
Kein eigenes Akte-Datenmodell, Ausfall der externen API blockiert nur diesen
Bereich.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-18 00:08:16 +02:00

53 lines
2.2 KiB
TypeScript

import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { cleanup, render, screen } from "@testing-library/react";
import { CasePanel } from "./CasePanel";
const ORIGINAL_ENV = process.env;
beforeEach(() => {
process.env = { ...ORIGINAL_ENV, NEXT_PUBLIC_WORKFLOW_API_URL: "http://workflow.test" };
});
afterEach(() => {
cleanup();
process.env = ORIGINAL_ENV;
vi.restoreAllMocks();
});
// Akzeptanzkriterium 1 / Pflichtpruefung 1: Dokument mit verknuepfter Akte
// zeigt Akte-Informationen korrekt an.
it("zeigt Akte-Titel, Vermerke und offene Wiedervorlagen an", async () => {
const info = {
caseId: "case-1",
caseTitle: "Vertrag Mustermann",
notes: [{ id: "n1", text: "Rueckruf noetig", createdAt: "2026-09-01T00:00:00Z" }],
openFollowUps: [{ id: "f1", dueDate: "2026-09-20", description: "Frist pruefen" }],
};
vi.stubGlobal("fetch", vi.fn().mockResolvedValue(new Response(JSON.stringify(info), { status: 200 })));
render(<CasePanel documentId="doc-1" />);
expect(await screen.findByText("Akte: Vertrag Mustermann")).toBeTruthy();
expect(await screen.findByText("Rueckruf noetig")).toBeTruthy();
expect(await screen.findByText("2026-09-20: Frist pruefen")).toBeTruthy();
});
// Akzeptanzkriterium 1 / Pflichtpruefung 2: Dokument OHNE Akte-Verknuepfung
// zeigt den Bereich nicht/leer an, kein Fehler.
it("zeigt gar nichts an, wenn keine Akte verknuepft ist", async () => {
vi.stubGlobal("fetch", vi.fn().mockResolvedValue(new Response(null, { status: 404 })));
render(<CasePanel documentId="doc-1" />);
await new Promise((r) => setTimeout(r, 0));
expect(screen.queryByTestId("case-panel")).toBeNull();
});
// Akzeptanzkriterium 3 / Pflichtpruefung 3: simulierter Ausfall der
// Workflow-API blockiert die uebrige Anzeige nicht — das Panel selbst wirft
// nie und zeigt einen eigenen, verstaendlichen Hinweis.
it("zeigt einen Hinweis statt eines Fehlers, wenn die Workflow-API nicht erreichbar ist", async () => {
vi.stubGlobal("fetch", vi.fn().mockRejectedValue(new Error("connection refused")));
render(<CasePanel documentId="doc-1" />);
expect(await screen.findByText("Akte-Informationen vorübergehend nicht verfügbar.")).toBeTruthy();
});