evOo-local/packages/core/src/model-providers.test.ts
cynarAI 6c7eed7580 Initial clean evOo-local from f00577b
Fresh history cut from cynarAI/evoo antigravity-handoff/project-timeline
(Voice First + project timeline). Brand docs/titles as evOo; keep @rakazo/*
packages as tech debt. Excludes node_modules, caches, secrets, voice blobs.
2026-09-20 17:15:16 +02:00

92 lines
2.5 KiB
TypeScript

import type { ModelCatalogEntry } from "@rakazo/contracts";
import { describe, expect, it } from "vitest";
import { featuredModelProviders, selectedProviderOutsideSearchResults } from "./model-providers.js";
function provider(provider: string): ModelCatalogEntry {
return {
provider,
providerName: provider,
id: `${provider}-model`,
label: `${provider} model`,
billing: "",
};
}
describe("featuredModelProviders", () => {
it("shows popular providers in a stable order", () => {
const providers = [
provider("azure"),
provider("vercel-ai-gateway"),
provider("google"),
provider("openai"),
provider("anthropic"),
provider("openai-codex"),
provider("openrouter"),
];
expect(featuredModelProviders(providers, "openrouter").map((entry) => entry.provider)).toEqual([
"openrouter",
"openai-codex",
"anthropic",
"openai",
"google",
"vercel-ai-gateway",
]);
});
it("fills missing popular slots from the catalog", () => {
const providers = [
provider("azure"),
provider("openrouter"),
provider("bedrock"),
provider("anthropic"),
];
expect(featuredModelProviders(providers, "openrouter").map((entry) => entry.provider)).toEqual([
"openrouter",
"anthropic",
"azure",
"bedrock",
]);
});
it("keeps a non-featured selected provider visible", () => {
const providers = [
provider("openrouter"),
provider("openai-codex"),
provider("anthropic"),
provider("openai"),
provider("google"),
provider("vercel-ai-gateway"),
provider("local"),
];
expect(featuredModelProviders(providers, "local").map((entry) => entry.provider)).toEqual([
"openrouter",
"openai-codex",
"anthropic",
"openai",
"google",
"local",
]);
});
});
describe("selectedProviderOutsideSearchResults", () => {
it("returns the active provider separately from unrelated search results", () => {
const providers = [provider("openrouter"), provider("anthropic"), provider("bedrock")];
expect(
selectedProviderOutsideSearchResults(providers.slice(1), providers, "openrouter"),
).toMatchObject({ provider: "openrouter" });
});
it("returns nothing when the active provider matches the search", () => {
const providers = [provider("openrouter"), provider("anthropic")];
expect(
selectedProviderOutsideSearchResults(providers, providers, "openrouter"),
).toBeUndefined();
});
});