import { describe, expect, it } from "vite-plus/test";import { ProviderInstanceId } from "@t3tools/contracts"; import { providerModelKey, sortModelsForProviderInstance, sortProviderModelItems,} from "./modelOrdering"; const CODEX_WORK_ID = ProviderInstanceId.make("codex_work");const CLAUDE_ID = ProviderInstanceId.make("claudeAgent"); describe("model ordering", () => { it("groups favorites first while preserving provider model order inside each group", () => { const models = [ { slug: "gpt-5.5" }, { slug: "gpt-5.4-mini" }, { slug: "crest-alpha" }, { slug: "gpt-5.3-codex" }, ]; expect( sortModelsForProviderInstance(models, { favoriteModels: ["gpt-5.5", "gpt-5.4-mini", "crest-alpha"], groupFavorites: true, modelOrder: ["gpt-5.4-mini", "gpt-5.5", "crest-alpha", "gpt-5.3-codex"], }).map((model) => model.slug), ).toEqual(["gpt-5.4-mini", "gpt-5.5", "crest-alpha", "gpt-5.3-codex"]); }); it("sorts the favorites view by provider order, then provider model order", () => { const items = [ { instanceId: CODEX_WORK_ID, slug: "gpt-5.4-mini" }, { instanceId: CODEX_WORK_ID, slug: "gpt-5.5" }, { instanceId: CODEX_WORK_ID, slug: "crest-alpha" }, { instanceId: CLAUDE_ID, slug: "claude-opus-4-6" }, ]; const favoriteKeys = [ providerModelKey(CODEX_WORK_ID, "gpt-5.5"), providerModelKey(CLAUDE_ID, "claude-opus-4-6"), providerModelKey(CODEX_WORK_ID, "gpt-5.4-mini"), providerModelKey(CODEX_WORK_ID, "crest-alpha"), ]; expect( sortProviderModelItems(items, { favoriteModelKeys: favoriteKeys, instanceOrder: [CODEX_WORK_ID, CLAUDE_ID], }).map((item) => item.slug), ).toEqual(["gpt-5.4-mini", "gpt-5.5", "crest-alpha", "claude-opus-4-6"]); });});
import { describe, expect, it } from "vite-plus/test";
import { ProviderInstanceId } from "@t3tools/contracts";
import {
providerModelKey,
sortModelsForProviderInstance,
sortProviderModelItems,
} from "./modelOrdering";
const CODEX_WORK_ID = ProviderInstanceId.make("codex_work");
const CLAUDE_ID = ProviderInstanceId.make("claudeAgent");
describe("model ordering", () => {
it("groups favorites first while preserving provider model order inside each group", () => {
const models = [
{ slug: "gpt-5.5" },
{ slug: "gpt-5.4-mini" },
{ slug: "crest-alpha" },
{ slug: "gpt-5.3-codex" },
];
expect(
sortModelsForProviderInstance(models, {
favoriteModels: ["gpt-5.5", "gpt-5.4-mini", "crest-alpha"],
groupFavorites: true,
modelOrder: ["gpt-5.4-mini", "gpt-5.5", "crest-alpha", "gpt-5.3-codex"],
}).map((model) => model.slug),
).toEqual(["gpt-5.4-mini", "gpt-5.5", "crest-alpha", "gpt-5.3-codex"]);
});
it("sorts the favorites view by provider order, then provider model order", () => {
const items = [
{ instanceId: CODEX_WORK_ID, slug: "gpt-5.4-mini" },
{ instanceId: CODEX_WORK_ID, slug: "gpt-5.5" },
{ instanceId: CODEX_WORK_ID, slug: "crest-alpha" },
{ instanceId: CLAUDE_ID, slug: "claude-opus-4-6" },
];
const favoriteKeys = [
providerModelKey(CODEX_WORK_ID, "gpt-5.5"),
providerModelKey(CLAUDE_ID, "claude-opus-4-6"),
providerModelKey(CODEX_WORK_ID, "gpt-5.4-mini"),
providerModelKey(CODEX_WORK_ID, "crest-alpha"),
];
expect(
sortProviderModelItems(items, {
favoriteModelKeys: favoriteKeys,
instanceOrder: [CODEX_WORK_ID, CLAUDE_ID],
}).map((item) => item.slug),
).toEqual(["gpt-5.4-mini", "gpt-5.5", "crest-alpha", "claude-opus-4-6"]);
});
});