Files
nexarch/web/dms-browser/lib/diffApi.test.ts
patrickandClaude Sonnet 5 7a6022920c
CI / Web-Barrierefreiheitspruefung (axe, Tastatur, Reflow, Textabstaende) (push) Canceled after 0s
CI / Core-Modul (Build/Vet/Test) (push) Canceled after 0s
CI / DMS Security-Test-Gate (AC5, Merge-Gate) (push) Canceled after 0s
CI / DMS-Modul (Lint/Build/Test/Coverage/Artefakt) (push) Canceled after 0s
CI / DMS-Modul Supply-Chain-Scan (govulncheck) (push) Canceled after 0s
CI / Web (dms-browser) (push) Canceled after 0s
CI / Web (pdf-viewer) (push) Canceled after 0s
CI / Web (shl) (push) Canceled after 0s
UX-10: Bestandstests an Header-Abruf statt Link angepasst
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-22 01:07:36 +02:00

39 lines
1.5 KiB
TypeScript

import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { fetchDiff } from "./diffApi";
const ORIGINAL_ENV = process.env;
beforeEach(() => {
process.env = { ...ORIGINAL_ENV, NEXT_PUBLIC_VERSIONING_API_URL: "http://backend.test", NEXT_PUBLIC_USER_ID: "user-a" };
});
afterEach(() => {
process.env = ORIGINAL_ENV;
vi.restoreAllMocks();
});
describe("diffApi", () => {
it("fetchDiff ruft den erwarteten Endpunkt mit from/to/caller auf", async () => {
const fetchMock = vi.fn().mockResolvedValue(new Response(JSON.stringify({ text: [], metadata: [] }), { status: 200 }));
vi.stubGlobal("fetch", fetchMock);
await fetchDiff("doc-1", "rev-a", "rev-b");
expect(fetchMock.mock.calls[0][0]).toBe(
"http://backend.test/documents/doc-1/diff?from=rev-a&to=rev-b&caller=user-a"
);
});
it("fetchDiff liefert Text- und Metadatendiff bei Erfolg", async () => {
const body = {
text: [{ op: "equal", text: "a" }, { op: "delete", text: "b" }, { op: "insert", text: "c" }],
metadata: [{ field: "comment", before: "alt", after: "neu" }],
};
vi.stubGlobal("fetch", vi.fn().mockResolvedValue(new Response(JSON.stringify(body), { status: 200 })));
await expect(fetchDiff("doc-1", "rev-a", "rev-b")).resolves.toEqual(body);
});
it("fetchDiff wirft bei 403 eine verstaendliche Fehlermeldung", async () => {
vi.stubGlobal("fetch", vi.fn().mockResolvedValue(new Response(null, { status: 403 })));
await expect(fetchDiff("doc-1", "rev-a", "rev-b")).rejects.toThrow(/Berechtigung/);
});
});