import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { fetchChildren, fetchDocuments } from "./api"; const ORIGINAL_ENV = process.env; beforeEach(() => { process.env = { ...ORIGINAL_ENV, NEXT_PUBLIC_FOLDER_API_URL: "http://backend.test" }; }); afterEach(() => { process.env = ORIGINAL_ENV; vi.restoreAllMocks(); }); describe("api client", () => { it("fetchChildren(null) ruft den Wurzel-Endpunkt auf", async () => { const fetchMock = vi.fn().mockResolvedValue(new Response("[]", { status: 200 })); vi.stubGlobal("fetch", fetchMock); await fetchChildren(null); expect(fetchMock.mock.calls[0][0]).toBe("http://backend.test/folders/children"); }); it("fetchChildren(id) ruft den ordnerspezifischen Endpunkt auf", async () => { const fetchMock = vi.fn().mockResolvedValue(new Response("[]", { status: 200 })); vi.stubGlobal("fetch", fetchMock); await fetchChildren("abc"); expect(fetchMock.mock.calls[0][0]).toBe("http://backend.test/folders/abc/children"); }); it("fetchDocuments gibt Sortierparameter weiter", async () => { const fetchMock = vi.fn().mockResolvedValue(new Response("[]", { status: 200 })); vi.stubGlobal("fetch", fetchMock); await fetchDocuments("abc", { sort: "title", order: "desc" }); expect(fetchMock.mock.calls[0][0]).toBe("http://backend.test/folders/abc/documents?sort=title&order=desc"); }); });