259 lines · 8.4 KB · TypeScript
RawDownload
import { describe, expect, it } from "vite-plus/test";import { ProviderDriverKind, type ModelCapabilities } from "@t3tools/contracts"; import {  DESCRIPTOR_PRESETS_BY_KIND,  descriptorFromPreset,  definitionFromDraft,  descriptorsFromCapabilities,  draftFromDefinition,  validateDraft,  type CustomModelDraft,} from "./customModelEditor.logic"; const draft = (overrides: Partial<CustomModelDraft>): CustomModelDraft => ({  slug: "my-model",  name: "",  descriptors: [],  ...overrides,}); describe("customModelEditor.logic", () => {  it("round-trips a definition through the draft, marking the current value as default", () => {    const definition = definitionFromDraft(      draft({        name: " My Model ",        descriptors: [          {            key: "a",            type: "select",            id: "reasoningEffort",            label: "Reasoning",            choices: [              { key: "a1", id: "low", label: "Low", isDefault: false },              { key: "a2", id: "high", label: "", isDefault: true },            ],          },          { key: "b", type: "boolean", id: "fastMode", label: "Fast Mode", choices: [] },        ],      }),    );     expect(definition).toEqual({      slug: "my-model",      name: "My Model",      capabilities: {        optionDescriptors: [          {            id: "reasoningEffort",            label: "Reasoning",            type: "select",            options: [              { id: "low", label: "Low" },              { id: "high", label: "high", isDefault: true },            ],            currentValue: "high",          },          { id: "fastMode", label: "Fast Mode", type: "boolean" },        ],      },    });     const reopened = draftFromDefinition(definition);    expect(reopened.name).toBe("My Model");    expect(reopened.descriptors.map((descriptor) => descriptor.id)).toEqual([      "reasoningEffort",      "fastMode",    ]);    expect(reopened.descriptors[0]!.choices.map((choice) => choice.isDefault)).toEqual([      false,      true,    ]);  });   it("preserves the current choice when it differs from the built-in default", () => {    const descriptors = descriptorsFromCapabilities(      {        optionDescriptors: [          {            id: "effort",            label: "Reasoning",            type: "select",            currentValue: "high",            options: [              { id: "low", label: "Low", isDefault: true },              { id: "high", label: "High" },            ],          },        ],      },      ProviderDriverKind.make("claudeAgent"),    );    expect(descriptors[0]!.choices.map((choice) => choice.isDefault)).toEqual([false, true]);    expect(      definitionFromDraft(draft({ descriptors })).capabilities?.optionDescriptors?.[0],    ).toMatchObject({ currentValue: "high" });  });   it("drops prompt-injected choices when copying a built-in's descriptors", () => {    const [copied] = descriptorsFromCapabilities(      {        optionDescriptors: [          {            id: "effort",            label: "Reasoning",            type: "select",            options: [              { id: "high", label: "High", isDefault: true },              { id: "ultrathink", label: "Ultrathink" },            ],            promptInjectedValues: ["ultrathink"],          },        ],      },      ProviderDriverKind.make("claudeAgent"),    );    expect(copied!.choices.map((choice) => choice.id)).toEqual(["high"]);  });   it.each([true, false, undefined])(    "preserves boolean values through copy and edit: %s",    (currentValue) => {      const capabilities: ModelCapabilities = {        optionDescriptors: [          {            id: "thinking",            label: "Thinking",            type: "boolean",            ...(currentValue !== undefined ? { currentValue } : {}),          },        ],      };      const copied = definitionFromDraft(        draft({          descriptors: descriptorsFromCapabilities(capabilities, ProviderDriverKind.make("cursor")),        }),      );      expect(copied.capabilities).toEqual(capabilities);      const reopened = draftFromDefinition(copied);      expect(definitionFromDraft({ ...reopened, name: "Renamed" }).capabilities).toEqual(        capabilities,      );    },  );   it("excludes Claude context choices from presets and copies without changing other providers or authored entries", () => {    const capabilities: ModelCapabilities = {      optionDescriptors: [        {          id: "contextWindow",          label: "Context",          type: "select",          options: [{ id: "1m", label: "1M", isDefault: true }],        },        { id: "thinking", label: "Thinking", type: "boolean", currentValue: true },      ],    };    const claude = ProviderDriverKind.make("claudeAgent");    const copied = definitionFromDraft(      draft({ descriptors: descriptorsFromCapabilities(capabilities, claude) }),    );    expect(copied.capabilities?.optionDescriptors).toEqual([capabilities.optionDescriptors![1]]);    const presets = definitionFromDraft(      draft({        descriptors: (DESCRIPTOR_PRESETS_BY_KIND[claude] ?? []).map(descriptorFromPreset),      }),    );    expect(      presets.capabilities?.optionDescriptors?.some((option) => option.id === "contextWindow"),    ).toBe(false);    const cursorCopy = descriptorsFromCapabilities(capabilities, ProviderDriverKind.make("cursor"));    expect(cursorCopy.map((option) => option.id)).toEqual(["contextWindow", "thinking"]);    const authored = { slug: "custom", name: "Custom", capabilities };    expect(      definitionFromDraft(draftFromDefinition(authored)).capabilities?.optionDescriptors?.[0],    ).toMatchObject(capabilities.optionDescriptors![0]!);  });   it("preserves choice descriptions when copying, renaming, and saving", () => {    const capabilities: ModelCapabilities = {      optionDescriptors: [        {          id: "effort",          label: "Reasoning",          description: "Choose a reasoning level.",          type: "select",          options: [            { id: "high", label: "High", isDefault: true },            { id: "ultracode", label: "Ultracode", description: "Uses additional reasoning." },          ],        },      ],    };    const copied = definitionFromDraft(      draft({        descriptors: descriptorsFromCapabilities(          capabilities,          ProviderDriverKind.make("claudeAgent"),        ),      }),    );    const reopened = draftFromDefinition(copied);    const saved = definitionFromDraft({ ...reopened, name: "Renamed" });    expect(saved.capabilities?.optionDescriptors?.[0]).toMatchObject(      capabilities.optionDescriptors![0]!,    );    expect(copied.capabilities?.optionDescriptors?.[0]).toMatchObject(      capabilities.optionDescriptors![0]!,    );  });   it.each(Object.entries(DESCRIPTOR_PRESETS_BY_KIND))(    "offers saveable presets for %s",    (_driver, presets) => {      expect(        validateDraft(draft({ descriptors: (presets ?? []).map(descriptorFromPreset) })),      ).toBeNull();    },  );   it("collapses a blank name and no options back to a bare definition", () => {    expect(definitionFromDraft(draft({ name: "  " }))).toEqual({      slug: "my-model",      name: "my-model",      capabilities: null,    });    expect(draftFromDefinition({ slug: "x", name: "x", capabilities: null }).name).toBe("");  });   it("rejects duplicate ids, blank ids, and selects without choices", () => {    const select = (id: string, choices: Array<{ id: string }>) => ({      key: id,      type: "select" as const,      id,      label: "Label",      choices: choices.map((choice) => ({        key: choice.id,        label: "",        isDefault: false,        ...choice,      })),    });     expect(validateDraft(draft({ descriptors: [select("", [{ id: "a" }])] }))).toBe(      "Option 1 needs an id.",    );    expect(      validateDraft(        draft({ descriptors: [select("effort", [{ id: "a" }]), select("effort", [{ id: "b" }])] }),      ),    ).toBe('Option 2: id "effort" is used twice.');    expect(validateDraft(draft({ descriptors: [select("effort", [])] }))).toBe(      "Option 1 needs at least one choice.",    );    expect(      validateDraft(draft({ descriptors: [select("effort", [{ id: "a" }, { id: "a" }])] })),    ).toBe('Option 1: choice "a" is used twice.');    expect(validateDraft(draft({ descriptors: [select("effort", [{ id: "a" }])] }))).toBeNull();  });});