import { describe, expect, test } from "bun:test"; import { z } from "zod"; import { AuthoredModel } from "../src/index.js"; type AuthoredModelData = z.infer; describe("model schema", () => { test("requires reasoning_options when reasoning is true", () => { const model = baseModel({ reasoning: true }); expect(AuthoredModel.safeParse(model).success).toBe(false); }); test("accepts empty reasoning_options when reasoning is true", () => { const model = baseModel({ reasoning: true, reasoning_options: [], }); expect(AuthoredModel.safeParse(model).success).toBe(true); }); test("rejects reasoning_options when reasoning is false", () => { const model = baseModel({ reasoning: false, reasoning_options: [], }); expect(AuthoredModel.safeParse(model).success).toBe(false); }); }); function baseModel(overrides: Partial) { return { id: "example/model", name: "Example Model", description: "Example model for schema validation and regression tests", attachment: false, reasoning: false, tool_call: true, release_date: "2026-01-01", last_updated: "2026-01-01", modalities: { input: ["text"], output: ["text"], }, open_weights: false, limit: { context: 1_000, output: 100, }, cost: { input: 1, output: 2, }, ...overrides, }; }