Files
paseo/packages/protocol/src/messages.providers-snapshot.test.ts
T
Mohamed BoudraandGitHub e528a0db06 Remove custom providers from settings (#1951)
* feat(providers): remove custom providers from settings

Add a destructive removal flow so mistaken custom providers can be deleted from config.json instead of only disabled.

* test(app): cover provider removal with e2e

Move provider removal coverage out of mocked component tests and into the real Settings flow.

* fix(providers): keep removal live after config updates
2026-07-16 16:11:51 +02:00

97 lines
2.5 KiB
TypeScript

import { describe, expect, test } from "vitest";
import {
GetProvidersSnapshotResponseMessageSchema,
ProviderSnapshotEntrySchema,
ProvidersSnapshotUpdateMessageSchema,
} from "./messages.js";
describe("provider snapshot message schemas", () => {
test("defaults missing provider snapshot entry enabled state to true", () => {
const parsed = ProviderSnapshotEntrySchema.parse({
provider: "codex",
status: "ready",
label: "Codex",
});
expect(parsed.enabled).toBe(true);
});
test("preserves disabled provider snapshot entries", () => {
const parsed = ProviderSnapshotEntrySchema.parse({
provider: "claude",
status: "unavailable",
enabled: false,
label: "Claude",
});
expect(parsed.enabled).toBe(false);
});
test("preserves enabled provider snapshot entries", () => {
const parsed = ProviderSnapshotEntrySchema.parse({
provider: "opencode",
status: "loading",
enabled: true,
label: "OpenCode",
});
expect(parsed.enabled).toBe(true);
});
test("preserves provider snapshot entry source", () => {
const parsed = ProviderSnapshotEntrySchema.parse({
provider: "gemini",
status: "ready",
enabled: true,
source: "custom",
label: "Gemini",
});
expect(parsed.source).toBe("custom");
});
test("defaults missing enabled state in providers snapshot response entries", () => {
const parsed = GetProvidersSnapshotResponseMessageSchema.parse({
type: "get_providers_snapshot_response",
payload: {
entries: [
{
provider: "codex",
status: "ready",
label: "Codex",
},
{
provider: "claude",
status: "unavailable",
enabled: false,
label: "Claude",
},
],
generatedAt: "2026-04-24T00:00:00.000Z",
requestId: "req-providers",
},
});
expect(parsed.payload.entries.map((entry) => entry.enabled)).toEqual([true, false]);
});
test("defaults missing enabled state in providers snapshot update entries", () => {
const parsed = ProvidersSnapshotUpdateMessageSchema.parse({
type: "providers_snapshot_update",
payload: {
cwd: "/tmp/repo",
entries: [
{
provider: "codex",
status: "ready",
label: "Codex",
},
],
generatedAt: "2026-04-24T00:00:00.000Z",
},
});
expect(parsed.payload.entries[0]?.enabled).toBe(true);
});
});