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.
92 lines
2.5 KiB
TypeScript
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();
|
|
});
|
|
});
|