27 lines
1.1 KiB
TypeScript
27 lines
1.1 KiB
TypeScript
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();
|
|
});
|
|
});
|