Files
OmniRoute/tests/unit/providerModelMutationSchema-isfree.test.ts
Dizzle 51ca7edd97 feat(free): per-model isFree for custom models (catalog + UI) (#11843)
Adds an opt-in customModels[].isFree flag so a self-hosted local model can be marked free-tier without touching the curated free-model catalog (providerHasFreeModels stays curated). 9/9 focused tests passing across the DB round-trip, schema tri-state validation, and free-model detection. Thanks!
2026-08-28 12:37:44 -03:00

21 lines
1.1 KiB
TypeScript

import { describe, it } from "node:test";
import assert from "node:assert/strict";
import { providerModelMutationSchema } from "../../src/shared/validation/schemas/provider.ts";
describe("providerModelMutationSchema isFree", () => {
it("isFree:true accepted", () => {
assert.equal(providerModelMutationSchema.safeParse({ provider: "p", modelId: "m", isFree: true }).success, true);
});
it("old payload without isFree still valid", () => {
assert.equal(providerModelMutationSchema.safeParse({ provider: "p", modelId: "m" }).success, true);
});
it("rejects isFree:0 and isFree:\"yes\"", () => {
assert.equal(providerModelMutationSchema.safeParse({ provider: "p", modelId: "m", isFree: 0 as any }).success, false);
assert.equal(providerModelMutationSchema.safeParse({ provider: "p", modelId: "m", isFree: "yes" as any }).success, false);
});
it("nullable true/false/null accepted", () => {
assert.equal(providerModelMutationSchema.safeParse({ provider: "p", modelId: "m", isFree: null }).success, true);
assert.equal(providerModelMutationSchema.safeParse({ provider: "p", modelId: "m", isFree: false }).success, true);
});
});