Files
plainleaf/client/spaces_ui/runtime_availability.test.ts
T
wushenghua 9e43ae824a
CI / config (push) Canceled after 0s
CI / test-frontend (push) Canceled after 0s
CI / test-rust (push) Canceled after 0s
CI / test-e2e (push) Canceled after 0s
CI / test-e2e-release (push) Canceled after 0s
CI / build (push) Canceled after 0s
CI / release (push) Canceled after 0s
CI / docker (push) Canceled after 0s
CI / docker-website (push) Canceled after 0s
feat: complete task planning and account management
Add Markdown-native planning, repeat rules, subtasks, reminders, transactional backup restore, Chinese account management, and the account-managed NAS migration configuration.\n\nCo-Authored-By: Codex <noreply@anthropic.com>
2026-08-12 20:22:33 +08:00

31 lines
1.0 KiB
TypeScript

import { expect, test } from "vitest";
import { runtimeApiUnavailableReason } from "./runtime_availability.ts";
test("an available runtime has nothing to explain", () => {
expect(runtimeApiUnavailableReason({ status: "available" })).toBeNull();
});
test("an unknown availability leaves the checkbox usable", () => {
// `null` is what a failed fetch leaves behind. Locking the setting because
// one request blipped would be worse than letting the admin try.
expect(runtimeApiUnavailableReason(null)).toBeNull();
});
test("a missing browser is reported as such", () => {
expect(runtimeApiUnavailableReason({ status: "no_chrome" })).toContain(
"未安装",
);
});
test("the env opt-out is reported as a deliberate choice", () => {
expect(runtimeApiUnavailableReason({ status: "disabled_by_env" })).toContain(
"SB_RUNTIME_API=0",
);
});
test("a pool failure surfaces the server's own message", () => {
expect(
runtimeApiUnavailableReason({ status: "failed", message: "boom" }),
).toBe("暂不可用:boom");
});