import { ProviderDriverKind, ProviderInstanceId, type ServerProvider } from "@t3tools/contracts"; import { renderToStaticMarkup } from "react-dom/server"; import { describe, expect, it } from "vite-plus/test"; import { deriveProviderInstanceEntries } from "../../providerInstances"; import { ProviderModelPicker } from "./ProviderModelPicker"; import type { ModelEsque } from "./providerIconUtils"; function providerEntry(instanceId: string, driver: string) { const provider: ServerProvider = { instanceId: ProviderInstanceId.make(instanceId), driver: ProviderDriverKind.make(driver), enabled: true, installed: true, version: null, status: "ready", auth: { status: "authenticated" }, checkedAt: "2026-08-28T00:00:00.000Z", models: [], slashCommands: [], skills: [], }; return deriveProviderInstanceEntries([provider])[0]!; } function renderPicker(input: { instanceId: string; driver: string; model: string; options: ReadonlyArray; includeEntry?: boolean; }) { const instanceId = ProviderInstanceId.make(input.instanceId); const entry = providerEntry(input.instanceId, input.driver); return renderToStaticMarkup( {}} />, ); } describe("ProviderModelPicker", () => { it("shows a missing model slug for a custom OpenCode instance", () => { const markup = renderPicker({ instanceId: "team_runtime", driver: "opencode", model: "openrouter/missing-model", options: [{ slug: "openrouter/fallback", name: "Fallback model" }], }); expect(markup).toContain("openrouter/missing-model"); expect(markup).not.toContain("Fallback model"); }); it.each(["codex", "claudeAgent", "cursor", "grok"])( "uses the first option label for a missing %s model", (driver) => { const markup = renderPicker({ instanceId: `${driver}_work`, driver, model: "missing-model", options: [{ slug: "fallback-model", name: "Fallback model" }], }); expect(markup).toContain("Fallback model"); expect(markup).not.toContain(">missing-model<"); }, ); it("prefers a matching model for OpenCode", () => { const markup = renderPicker({ instanceId: "custom_runtime", driver: "opencode", model: "openrouter/selected", options: [ { slug: "openrouter/fallback", name: "Fallback model" }, { slug: "openrouter/selected", name: "Selected model" }, ], }); expect(markup).toContain("Selected model"); expect(markup).not.toContain("Fallback model"); }); it("uses the first option when the active instance entry is missing", () => { const markup = renderPicker({ instanceId: "missing_instance", driver: "opencode", model: "missing-model", options: [{ slug: "fallback-model", name: "Fallback model" }], includeEntry: false, }); expect(markup).toContain("Fallback model"); expect(markup).not.toContain(">missing-model<"); }); });