import { beforeEach, describe, expect, it, vi } from "vitest"; import { deleteSession, fetchSessionMessages, updateSettings } from "@/lib/api"; describe("webui API helpers", () => { beforeEach(() => { vi.stubGlobal( "fetch", vi.fn().mockResolvedValue({ ok: true, json: async () => ({ deleted: true, key: "websocket:chat-1", messages: [] }), }), ); }); it("percent-encodes websocket keys when fetching session history", async () => { await fetchSessionMessages("tok", "websocket:chat-1"); expect(fetch).toHaveBeenCalledWith( "/api/sessions/websocket%3Achat-1/messages", expect.objectContaining({ headers: { Authorization: "Bearer tok" }, }), ); }); it("percent-encodes websocket keys when deleting a session", async () => { await deleteSession("tok", "websocket:chat-1"); expect(fetch).toHaveBeenCalledWith( "/api/sessions/websocket%3Achat-1/delete", expect.objectContaining({ headers: { Authorization: "Bearer tok" }, }), ); }); it("serializes settings updates as a narrow query string", async () => { await updateSettings("tok", { model: "openrouter/test", provider: "openrouter", }); expect(fetch).toHaveBeenCalledWith( "/api/settings/update?model=openrouter%2Ftest&provider=openrouter", expect.objectContaining({ headers: { Authorization: "Bearer tok" }, }), ); }); });