import { describe, expect, it } from "vitest"; import { EditImageInputSchema, GenerateImageInputSchema, GenerateVideoInputSchema, } from "./media-generation.js"; describe("media generation inputs", () => { it("fills defaults and drops unknown fields such as continue_after", () => { expect(GenerateImageInputSchema.parse({ prompt: " a fox ", continue_after: true })).toEqual({ prompt: "a fox", count: 1, }); expect(GenerateVideoInputSchema.parse({ prompt: "waves" })).toEqual({ prompt: "waves", duration_seconds: 5, }); }); it("bounds image count, size and video duration", () => { expect(GenerateImageInputSchema.safeParse({ prompt: "x", count: 5 }).success).toBe(false); expect(GenerateImageInputSchema.safeParse({ prompt: "x", width: 512 }).success).toBe(false); expect( GenerateImageInputSchema.safeParse({ prompt: "x", width: 512, height: 4096 }).success, ).toBe(false); expect(GenerateVideoInputSchema.safeParse({ prompt: "x", duration_seconds: 11 }).success).toBe( false, ); }); it("needs at least one edit and valid edit values", () => { expect(EditImageInputSchema.safeParse({ artifact_id: "a" }).success).toBe(false); expect(EditImageInputSchema.safeParse({ artifact_id: "a", rotate: 45 }).success).toBe(false); expect(EditImageInputSchema.safeParse({ artifact_id: "a", resize: {} }).success).toBe(false); expect( EditImageInputSchema.safeParse({ artifact_id: "a", extend: { top: 4, color: "red" } }) .success, ).toBe(false); expect( EditImageInputSchema.parse({ artifact_id: "a", resize: { aspect: "vertical" }, rotate: 90 }), ).toEqual({ artifact_id: "a", resize: { aspect: "vertical", fit: "crop" }, rotate: 90 }); }); });