Skip to content
Source
Sign inSign up

providerModels.test.ts

64 lines1.7 KB

1import {
2 ProviderDriverKind,
3 type ModelCapabilities,
4 type ServerProviderModel,
5} from "@t3tools/contracts";
6import { describe, expect, it } from "vite-plus/test";
7​
8import { getProviderModelCapabilities } from "./providerModels";
9​
10const PROVIDER = ProviderDriverKind.make("claudeAgent");
11​
12function capabilities(id: string): ModelCapabilities {
13 return {
14 optionDescriptors: [{ id, label: id, type: "boolean" }],
15 };
17​
18function model(input: {
19 slug: string;
20 capabilities: ModelCapabilities;
21 aliases?: ReadonlyArray<string>;
22 isCustom?: boolean;
23}): ServerProviderModel {
24 return {
25 slug: input.slug,
26 name: input.slug,
27 ...(input.aliases ? { aliases: [...input.aliases] } : {}),
28 isCustom: input.isCustom ?? false,
29 capabilities: input.capabilities,
30 };
32​
33describe("getProviderModelCapabilities", () => {
34 it("resolves model-declared aliases", () => {
35 const aliasCapabilities = capabilities("aliased-option");
36 const models = [
37 model({
38 slug: "synthetic-model",
39 aliases: ["Legacy-Synthetic-Model"],
40 capabilities: aliasCapabilities,
41 }),
42 ];
43​
44 expect(getProviderModelCapabilities(models, "legacy-synthetic-model", PROVIDER)).toEqual(
45 aliasCapabilities,
46 );
47 });
48​
49 it("prefers an exact custom slug over a built-in model alias", () => {
50 const customCapabilities = capabilities("custom-option");
51 const models = [
52 model({
53 slug: "synthetic-model",
54 aliases: ["custom-model"],
55 capabilities: capabilities("built-in-option"),
56 }),
57 model({ slug: "custom-model", capabilities: customCapabilities, isCustom: true }),
58 ];
59​
60 expect(getProviderModelCapabilities(models, " custom-model ", PROVIDER)).toEqual(
61 customCapabilities,
62 );
63 });
64});