Files
nexarch/web/dms-browser/lib/metadataApi.test.ts
T
patrickandClaude Sonnet 5 6a5a455b2c MET-03: metadaten- & tag-oberfläche
metadataapi/tagapi/bulkeditapi als Backend-Voraussetzung. MetadataForm
passt sich der Felddefinition an und warnt vor Verwerfen ungespeicherter
Aenderungen, TagInput schlaegt Tags vor und ist per Pfeiltasten/Enter
bedienbar, Massenbearbeitung wendet Tags auf beliebig grosse Auswahlen in
einem Aufruf an.

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

44 lines
1.8 KiB
TypeScript

import { afterEach, beforeEach, describe, expect, it, vi } from "vitest";
import { fetchFields, fetchValues, saveValues } from "./metadataApi";
const ORIGINAL_ENV = process.env;
beforeEach(() => {
process.env = { ...ORIGINAL_ENV, NEXT_PUBLIC_METADATA_API_URL: "http://backend.test" };
});
afterEach(() => {
process.env = ORIGINAL_ENV;
vi.restoreAllMocks();
});
describe("metadataApi", () => {
it("fetchFields ruft GET /metadata-fields auf", async () => {
const fetchMock = vi.fn().mockResolvedValue(new Response("[]", { status: 200 }));
vi.stubGlobal("fetch", fetchMock);
await fetchFields();
expect(fetchMock.mock.calls[0][0]).toBe("http://backend.test/metadata-fields");
});
it("fetchValues ruft den dokumentspezifischen Endpunkt auf", async () => {
const fetchMock = vi.fn().mockResolvedValue(new Response("{}", { status: 200 }));
vi.stubGlobal("fetch", fetchMock);
await fetchValues("doc-1");
expect(fetchMock.mock.calls[0][0]).toBe("http://backend.test/documents/doc-1/metadata");
});
it("saveValues sendet PUT mit den werten", async () => {
const fetchMock = vi.fn().mockResolvedValue(new Response(null, { status: 204 }));
vi.stubGlobal("fetch", fetchMock);
await saveValues("doc-1", { "field-a": "42" });
expect(fetchMock.mock.calls[0][0]).toBe("http://backend.test/documents/doc-1/metadata");
expect(fetchMock.mock.calls[0][1].method).toBe("PUT");
expect(JSON.parse(fetchMock.mock.calls[0][1].body)).toEqual({ "field-a": "42" });
});
it("saveValues wirft die Server-Fehlermeldung bei 422", async () => {
vi.stubGlobal("fetch", vi.fn().mockResolvedValue(new Response(JSON.stringify({ error: "ungueltiger wert" }), { status: 422 })));
await expect(saveValues("doc-1", { a: "x" })).rejects.toThrow("ungueltiger wert");
});
});