Files
next-tjwater-drainage-frontend/features/agent/api/swr.test.ts
T

48 lines
1.8 KiB
TypeScript

import { describe, expect, it, vi } from "vitest";
import type { AgentApiClient } from "./client";
import { fetchAgentBootstrap, fetchAgentSessions } from "./swr";
describe("Agent API SWR helpers", () => {
it("loads bootstrap data with a normalized UI registry", async () => {
const client = {
getUiRegistry: vi.fn(async () => ({
schema_version: "agent-ui-registry@1",
chart_grammars: ["echarts-safe-subset"],
components: [{ id: "HistoryPanel", supportedSurfaces: ["side_panel", "unknown"] }],
actions: [{ id: "zoom_to_map", supportedSurfaces: ["map_overlay"] }]
})),
getModels: vi.fn(async () => ({
defaultModel: "model-a",
models: [{ id: "model-a", label: "Model A", description: "Default model", icon: "sparkle" }]
}))
} as Pick<AgentApiClient, "getUiRegistry" | "getModels"> as AgentApiClient;
await expect(fetchAgentBootstrap(client)).resolves.toEqual({
defaultModel: "model-a",
models: [{ id: "model-a", label: "Model A", description: "Default model", icon: "sparkle" }],
registry: {
schema_version: "agent-ui-registry@1",
chart_grammars: ["echarts-safe-subset"],
components: [{ id: "HistoryPanel", supportedSurfaces: ["side_panel"] }],
actions: [{ id: "zoom_to_map", supportedSurfaces: ["map_overlay"] }]
}
});
});
it("loads session summaries through the shared client", async () => {
const sessions = [
{
id: "session-1",
title: "会话",
createdAt: 1,
updatedAt: 2
}
];
const client = {
listSessions: vi.fn(async () => sessions)
} as Pick<AgentApiClient, "listSessions"> as AgentApiClient;
await expect(fetchAgentSessions(client)).resolves.toBe(sessions);
});
});