import { describe, expect, it } from "vitest"; import { AI_SURFACES, byokFeatureDefaultModelKey, parseAiSurfaces, parseByokFeatureModels, surfaceForModelKey, workerModelSurfaceForAgentRun, } from "@/lib/ai-surfaces"; describe("AI surfaces", () => { it("accepte toutes les surfaces et permet de tout laisser au quota Minddy", () => { expect(parseAiSurfaces(AI_SURFACES)).toEqual(AI_SURFACES); expect(parseAiSurfaces([])).toEqual([]); }); it("refuse les surfaces inconnues et les doublons", () => { expect(parseAiSurfaces(["agent", "unknown"])).toBeNull(); expect(parseAiSurfaces(["assistant", "assistant"])).toBeNull(); }); it("nettoie les modèles vides et refuse les clés inconnues", () => { expect( parseByokFeatureModels({ assistant_model: " claude-sonnet-5 ", brief_model: " " }), ).toEqual({ assistant_model: "claude-sonnet-5" }); expect(parseByokFeatureModels({ mystery_model: "x" })).toBeNull(); }); it("drops a retired triage override when an older client saves its other models", () => { expect(parseByokFeatureModels({ smart_triage_model: "old-model", assistant_model: "current-model" })) .toEqual({ assistant_model: "current-model" }); }); it("relie chaque modèle à sa surface et à sa clé admin", () => { expect(surfaceForModelKey("smart_fill_model")).toBe("automations"); expect(surfaceForModelKey("feedback_embedding_model")).toBe("feedback"); expect(byokFeatureDefaultModelKey("anthropic", "assistant_model")).toBe( "byok_default_anthropic_assistant_model", ); }); it("preserves legacy automation providers while routing new workers through account settings", () => { const automation = { chain_id: "chain-1", routine_id: null }; expect(workerModelSurfaceForAgentRun(automation)).toBe("automations"); expect( workerModelSurfaceForAgentRun({ ...automation, worker_model_source: "account" }), ).toBe("agent"); }); });