65 lines
1.6 KiB
TypeScript
65 lines
1.6 KiB
TypeScript
import { fetchAgentModels } from "./chatModels";
|
|
|
|
const apiFetch = jest.fn();
|
|
|
|
jest.mock("@/lib/apiFetch", () => ({
|
|
apiFetch: (...args: unknown[]) => apiFetch(...args),
|
|
}));
|
|
|
|
describe("fetchAgentModels", () => {
|
|
beforeEach(() => {
|
|
apiFetch.mockReset();
|
|
});
|
|
|
|
it("loads model options and backend default model", async () => {
|
|
apiFetch.mockResolvedValueOnce({
|
|
ok: true,
|
|
json: async () => ({
|
|
default_model: "deepseek/deepseek-v4-flash",
|
|
models: [
|
|
{
|
|
id: "deepseek/deepseek-v4-flash",
|
|
label: "快速",
|
|
description: "快速回答和任务执行",
|
|
icon: "bolt",
|
|
},
|
|
],
|
|
}),
|
|
});
|
|
|
|
await expect(fetchAgentModels()).resolves.toEqual({
|
|
defaultModel: "deepseek/deepseek-v4-flash",
|
|
models: [
|
|
{
|
|
id: "deepseek/deepseek-v4-flash",
|
|
label: "快速",
|
|
description: "快速回答和任务执行",
|
|
icon: "bolt",
|
|
},
|
|
],
|
|
});
|
|
expect(apiFetch).toHaveBeenCalledWith(
|
|
expect.stringContaining("/api/v1/agent/chat/models"),
|
|
expect.objectContaining({
|
|
method: "GET",
|
|
projectHeaderMode: "include",
|
|
skipAuthRedirect: true,
|
|
}),
|
|
);
|
|
});
|
|
|
|
it("falls back to the first option when default model is omitted", async () => {
|
|
apiFetch.mockResolvedValueOnce({
|
|
ok: true,
|
|
json: async () => ({
|
|
models: [{ id: "provider/model", label: "Model" }],
|
|
}),
|
|
});
|
|
|
|
await expect(fetchAgentModels()).resolves.toEqual({
|
|
defaultModel: "provider/model",
|
|
models: [{ id: "provider/model", label: "Model" }],
|
|
});
|
|
});
|
|
});
|