132 lines · 4.5 KB · TypeScript
RawDownload
import { ProviderDriverKind, ProviderInstanceId, type ServerProvider } from "@t3tools/contracts";import { describe, expect, it } from "vite-plus/test";import {  deriveProviderInstanceEntries,  resolveSelectableProviderInstance,  resolveProviderDriverKindForInstanceSelection,} from "./providerInstances"; function provider(input: {  provider: ProviderDriverKind;  instanceId: string;  enabled?: boolean;  availability?: ServerProvider["availability"];  displayName?: string;}): ServerProvider {  return {    instanceId: ProviderInstanceId.make(input.instanceId),    driver: input.provider,    ...(input.displayName ? { displayName: input.displayName } : {}),    enabled: input.enabled ?? true,    installed: true,    version: null,    status: "ready",    ...(input.availability ? { availability: input.availability } : {}),    auth: { status: "authenticated" },    checkedAt: "2026-01-01T00:00:00.000Z",    models: [],    slashCommands: [],    skills: [],  };} describe("deriveProviderInstanceEntries", () => {  it("uses explicit instance id and driver kind from the snapshot", () => {    const snapshot = provider({      provider: ProviderDriverKind.make("codex"),      instanceId: "codex_personal",    });    const [entry] = deriveProviderInstanceEntries([snapshot]);     expect(entry?.instanceId).toBe("codex_personal");    expect(entry?.driverKind).toBe("codex");    expect(entry?.isDefault).toBe(false);  });}); describe("resolveSelectableProviderInstance", () => {  it("returns the requested instance when it is enabled and available", () => {    const requested = ProviderInstanceId.make("claude_work");    const providers = [      provider({ provider: ProviderDriverKind.make("codex"), instanceId: "codex" }),      provider({ provider: ProviderDriverKind.make("claudeAgent"), instanceId: requested }),    ];     expect(resolveSelectableProviderInstance(providers, requested)).toBe(requested);  });   it("falls back to the first enabled and available instance", () => {    const disabled = ProviderInstanceId.make("codex");    const fallback = ProviderInstanceId.make("claudeAgent");    const providers = [      provider({        provider: ProviderDriverKind.make("codex"),        instanceId: disabled,        enabled: false,      }),      provider({ provider: ProviderDriverKind.make("claudeAgent"), instanceId: fallback }),    ];     expect(resolveSelectableProviderInstance(providers, disabled)).toBe(fallback);  });   it("does not return disabled, unavailable, or unknown instances when none are sendable", () => {    const disabled = ProviderInstanceId.make("codex");    const unavailable = ProviderInstanceId.make("claudeAgent");    const unknown = ProviderInstanceId.make("removed_instance");    const providers = [      provider({        provider: ProviderDriverKind.make("codex"),        instanceId: disabled,        enabled: false,      }),      provider({        provider: ProviderDriverKind.make("claudeAgent"),        instanceId: unavailable,        availability: "unavailable",      }),    ];     expect(resolveSelectableProviderInstance(providers, disabled)).toBeUndefined();    expect(resolveSelectableProviderInstance(providers, unavailable)).toBeUndefined();    expect(resolveSelectableProviderInstance(providers, unknown)).toBeUndefined();  });}); describe("resolveProviderDriverKindForInstanceSelection", () => {  it("maps custom provider instance ids back to their driver kind", () => {    const providers = [      provider({ provider: ProviderDriverKind.make("codex"), instanceId: "codex" }),      provider({        provider: ProviderDriverKind.make("claudeAgent"),        instanceId: "claude_openrouter",        displayName: "Claude OpenRouter",      }),    ];    const entries = deriveProviderInstanceEntries(providers);     expect(      resolveProviderDriverKindForInstanceSelection(        entries,        providers,        ProviderInstanceId.make("claude_openrouter"),      ),    ).toBe("claudeAgent");  });   it("does not guess a provider kind when the instance selection is unknown", () => {    const providers = [      provider({ provider: ProviderDriverKind.make("codex"), instanceId: "codex", enabled: false }),      provider({ provider: ProviderDriverKind.make("claudeAgent"), instanceId: "claudeAgent" }),    ];    const entries = deriveProviderInstanceEntries(providers);     expect(      resolveProviderDriverKindForInstanceSelection(        entries,        providers,        ProviderInstanceId.make("removed_instance"),      ),    ).toBeUndefined();  });});