1import { ProviderDriverKind } from "@t3tools/contracts";
2import * as Schema from "effect/Schema";
3import { describe, expect, it } from "vite-plus/test";
4
5import { defineProviderClient, makeProviderClientRegistry } from "./client.ts";
6
7const settingsSchema = Schema.Struct({ binaryPath: Schema.String });
8
9describe("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});