feat: 设置页新增模型卡片,支持为7种能力配置默认模型

This commit is contained in:
2026-06-07 09:51:04 +08:00
parent 43b14a94a3
commit 074ea0bb1a
8 changed files with 338 additions and 25 deletions

View File

@@ -9,10 +9,15 @@ function mockSettingsResponse(theme = "system", compact = false): Response {
return jsonResponse({ compact, theme });
}
function mockEmptyModelsResponse(): Response {
return jsonResponse({ items: [], page: 1, pageSize: 200, total: 0 });
}
describe("SettingsPage", () => {
test("渲染主题卡片", () => {
installFetchMock((call) => {
if (call.url.includes("/api/settings")) return mockSettingsResponse();
if (call.url.includes("/api/models")) return mockEmptyModelsResponse();
return jsonResponse({});
});
@@ -24,6 +29,7 @@ describe("SettingsPage", () => {
test("渲染主题模式 Radio.Group 选项", () => {
installFetchMock((call) => {
if (call.url.includes("/api/settings")) return mockSettingsResponse();
if (call.url.includes("/api/models")) return mockEmptyModelsResponse();
return jsonResponse({});
});
@@ -37,6 +43,7 @@ describe("SettingsPage", () => {
test("渲染紧凑模式标签和开关", () => {
installFetchMock((call) => {
if (call.url.includes("/api/settings")) return mockSettingsResponse();
if (call.url.includes("/api/models")) return mockEmptyModelsResponse();
return jsonResponse({});
});
@@ -48,6 +55,7 @@ describe("SettingsPage", () => {
test("渲染水平表单结构", () => {
installFetchMock((call) => {
if (call.url.includes("/api/settings")) return mockSettingsResponse();
if (call.url.includes("/api/models")) return mockEmptyModelsResponse();
return jsonResponse({});
});
@@ -60,6 +68,7 @@ describe("SettingsPage", () => {
test("不再使用 Segmented", () => {
installFetchMock((call) => {
if (call.url.includes("/api/settings")) return mockSettingsResponse();
if (call.url.includes("/api/models")) return mockEmptyModelsResponse();
return jsonResponse({});
});
@@ -71,6 +80,7 @@ describe("SettingsPage", () => {
test("不显示保存状态文本(已迁移到 toast)", () => {
installFetchMock((call) => {
if (call.url.includes("/api/settings")) return mockSettingsResponse();
if (call.url.includes("/api/models")) return mockEmptyModelsResponse();
return jsonResponse({});
});
@@ -92,4 +102,16 @@ describe("SettingsPage", () => {
expect(radioGroup).not.toBeNull();
});
});
test("渲染模型卡片标题", () => {
installFetchMock((call) => {
if (call.url.includes("/api/settings")) return mockSettingsResponse();
if (call.url.includes("/api/models")) return mockEmptyModelsResponse();
return jsonResponse({});
});
renderWithProviders(createElement(SettingsPage));
expect(screen.getByText("模型")).not.toBeNull();
});
});