feat(chat): load model options from backend
This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
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",
|
||||
userHeaderMode: "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" }],
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user