import { describe, expect, it } from "vitest"; import { IMAGE_GENERATOR_DRAFT_VERSION, parseImageGeneratorDraft, serializeImageGeneratorDraft, } from "./image-generator-draft"; describe("image generator drafts", () => { const parseTitle = (value: unknown) => { if (!value || typeof value !== "object") return null; const title = (value as { title?: unknown }).title; return typeof title === "string" ? { title } : null; }; it("round trips a versioned draft", () => { const serialized = serializeImageGeneratorDraft({ title: "Hyperbloom" }); expect(parseImageGeneratorDraft(serialized, parseTitle)).toEqual({ title: "Hyperbloom" }); }); it("rejects corrupt, incompatible, and invalid drafts", () => { expect(parseImageGeneratorDraft("not-json", parseTitle)).toBeNull(); expect(parseImageGeneratorDraft(JSON.stringify({ version: IMAGE_GENERATOR_DRAFT_VERSION + 1, value: { title: "Old" } }), parseTitle)).toBeNull(); expect(parseImageGeneratorDraft(JSON.stringify({ version: IMAGE_GENERATOR_DRAFT_VERSION, value: { title: 42 } }), parseTitle)).toBeNull(); }); });