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>
53 lines
2.2 KiB
TypeScript
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();
|
|
});
|