import { describe, expect, it } from "vitest"; import type { AdapterConfigSchema, ConfigFieldSchema } from "@paperclipai/adapter-utils"; import { fieldMatchesVisibleWhen } from "./schema-config-fields"; const sourceField: ConfigFieldSchema = { key: "provider", label: "Provider", type: "select", options: [ { label: "Claude", value: "claude" }, { label: "Codex", value: "codex" }, ], }; const schema: AdapterConfigSchema = { fields: [sourceField], }; function targetWithVisibleWhen(visibleWhen: Record): ConfigFieldSchema { return { key: "model", label: "Model", type: "text", meta: { visibleWhen }, }; } describe("fieldMatchesVisibleWhen", () => { it("treats an empty values array as no match", () => { const field = targetWithVisibleWhen({ key: "provider", values: [] }); expect(fieldMatchesVisibleWhen(field, () => "claude", schema)).toBe(false); }); it("treats all non-string values as no match", () => { const field = targetWithVisibleWhen({ key: "provider", values: [null, 42] }); expect(fieldMatchesVisibleWhen(field, () => "claude", schema)).toBe(false); }); it("matches non-empty string values", () => { const field = targetWithVisibleWhen({ key: "provider", values: ["claude"] }); expect(fieldMatchesVisibleWhen(field, () => "claude", schema)).toBe(true); expect(fieldMatchesVisibleWhen(field, () => "codex", schema)).toBe(false); }); });