import { describe, it, expect } from "vitest"; import { merkmalCreateSchema, merkmalUpdateSchema } from "./merkmal"; describe("merkmalCreateSchema", () => { const base = { name: "Löschwassertank", typ: "number" as const, geltungsbereich: "vehicle" as const, einheit: "l", }; it("akzeptiert ein number-Merkmal ohne Optionen", () => { const r = merkmalCreateSchema.safeParse(base); expect(r.success).toBe(true); }); it("verlangt mindestens eine Option bei typ=enum", () => { const r = merkmalCreateSchema.safeParse({ name: "Pumpentyp", typ: "enum", geltungsbereich: "vehicle", optionen: [], }); expect(r.success).toBe(false); }); it("akzeptiert enum mit Optionen", () => { const r = merkmalCreateSchema.safeParse({ name: "Pumpentyp", typ: "enum", geltungsbereich: "vehicle", optionen: [{ wert: "fpn_10_1000", label: "FPN 10-1000" }], }); expect(r.success).toBe(true); }); it("lehnt leeren Namen ab", () => { const r = merkmalCreateSchema.safeParse({ ...base, name: "" }); expect(r.success).toBe(false); }); it("lehnt ungültigen Typ ab", () => { const r = merkmalCreateSchema.safeParse({ ...base, typ: "datum" }); expect(r.success).toBe(false); }); }); describe("merkmalUpdateSchema", () => { it("verlangt eine id", () => { const r = merkmalUpdateSchema.safeParse({ name: "X", typ: "text", geltungsbereich: "both", }); expect(r.success).toBe(false); }); it("akzeptiert vollständige Update-Daten", () => { const r = merkmalUpdateSchema.safeParse({ id: "11111111-1111-1111-1111-111111111111", name: "X", typ: "text", geltungsbereich: "both", }); expect(r.success).toBe(true); }); });