48 lines
1.4 KiB
TypeScript
48 lines
1.4 KiB
TypeScript
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<string, unknown>): 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);
|
|
});
|
|
});
|