| 1 | import { ProviderDriverKind } from "@t3tools/contracts"; |
| 2 | import * as Schema from "effect/Schema"; |
| 3 | import { describe, expect, it } from "vite-plus/test"; |
| 4 | |
| 5 | import { defineProviderClient, makeProviderClientRegistry } from "./client.ts"; |
| 6 | |
| 7 | const settingsSchema = Schema.Struct({ binaryPath: Schema.String }); |
| 8 | |
| 9 | describe("makeProviderClientRegistry", () => { |
| 10 | it("looks definitions up by driver kind and keeps unknown drivers undefined", () => { |
| 11 | const codex = defineProviderClient({ |
| 12 | driverKind: ProviderDriverKind.make("codex"), |
| 13 | label: "Codex", |
| 14 | settingsSchema, |
| 15 | }); |
| 16 | const registry = makeProviderClientRegistry([codex]); |
| 17 | |
| 18 | expect(registry.get(ProviderDriverKind.make("codex"))).toBe(codex); |
| 19 | expect(registry.get(ProviderDriverKind.make("forkDriver"))).toBeUndefined(); |
| 20 | expect(registry.get(undefined)).toBeUndefined(); |
| 21 | }); |
| 22 | |
| 23 | it("rejects two definitions for one driver kind", () => { |
| 24 | const definition = defineProviderClient({ |
| 25 | driverKind: ProviderDriverKind.make("codex"), |
| 26 | label: "Codex", |
| 27 | settingsSchema, |
| 28 | }); |
| 29 | |
| 30 | expect(() => makeProviderClientRegistry([definition, definition])).toThrow( |
| 31 | "Provider driver 'codex' is defined more than once.", |
| 32 | ); |
| 33 | }); |
| 34 | }); |