功能修改
This commit is contained in:
@@ -2,13 +2,14 @@ import { renderToStaticMarkup } from "react-dom/server";
|
||||
import { describe, expect, it } from "vitest";
|
||||
|
||||
import { AiProvidersPage } from "./AiProvidersPage";
|
||||
import aiProvidersPageSource from "./AiProvidersPage.tsx?raw";
|
||||
import type { AiProviderResponse } from "../api/types";
|
||||
|
||||
const provider: AiProviderResponse = {
|
||||
id: "ai.openai",
|
||||
name: "OpenAI Relay",
|
||||
kind: "openai-compatible",
|
||||
baseUrl: "https://relay.example.test/v1",
|
||||
baseUrlConfigured: true,
|
||||
apiKeyConfigured: true,
|
||||
models: ["gpt-4.1", "gpt-4.1-mini"],
|
||||
defaultModel: "gpt-4.1-mini",
|
||||
@@ -38,6 +39,16 @@ describe("AiProvidersPage", () => {
|
||||
expect(html).not.toContain("OpenAI Relay");
|
||||
});
|
||||
|
||||
it("renders provider API failure with scoped retry instead of a browser reload", () => {
|
||||
const html = renderToStaticMarkup(<AiProvidersPage initialState={{ listState: "error", listError: "backend unavailable", source: "error" }} />);
|
||||
|
||||
expect(html).toContain("AI 提供商加载失败");
|
||||
expect(html).toContain("backend unavailable");
|
||||
expect(html).toContain("重试");
|
||||
expect(aiProvidersPageSource).toContain("refreshProviders");
|
||||
expect(aiProvidersPageSource).not.toContain("window.location.reload");
|
||||
});
|
||||
|
||||
it("renders local-development fixtures with an explicit status label", () => {
|
||||
const html = renderToStaticMarkup(<AiProvidersPage initialState={{ providers: [provider], listState: "ready", source: "local-development" }} />);
|
||||
|
||||
@@ -65,6 +76,7 @@ describe("AiProvidersPage", () => {
|
||||
expect(html).toContain("secret://providers/...");
|
||||
expect(html).not.toContain('name="id"');
|
||||
expect(html).not.toContain("api.example.test");
|
||||
expect(html).not.toContain("relay.example.test");
|
||||
});
|
||||
|
||||
it("does not render raw key field names", () => {
|
||||
@@ -77,4 +89,14 @@ describe("AiProvidersPage", () => {
|
||||
expect(html).not.toContain("api_key=");
|
||||
expect(html).not.toContain("Bearer ");
|
||||
});
|
||||
|
||||
it("keeps provider state actions confirmed and provider-scoped busy", () => {
|
||||
expect(aiProvidersPageSource).toContain("confirmStatus");
|
||||
expect(aiProvidersPageSource).toContain("busyProviderIds.has(provider.id)");
|
||||
expect(aiProvidersPageSource).toContain("确认提供商状态变更");
|
||||
expect(aiProvidersPageSource).toContain("只读模式");
|
||||
expect(aiProvidersPageSource).toContain("operations?.begin");
|
||||
expect(aiProvidersPageSource).toContain("operations?.succeed");
|
||||
expect(aiProvidersPageSource).toContain("operations?.fail");
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user