Files
Laufzettel/tests/validierung.test.ts
T
florian.wilde d8d5444e9f
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s
feat(vorlagen): Versionierung, Unveraenderlichkeit und JSON-Austausch (#23)
2026-09-25 06:10:01 +00:00

35 lines
1.4 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { z } from "@/lib/validierung";
import { AustauschSchema, StrukturSchema } from "@/lib/vorlagen-format";
/**
* Zod ist in src/lib/validierung.ts auf Deutsch eingestellt (#009).
*
* Ohne diese Einstellung landen englische Standardsaetze ueber die Server
* Actions in der Oberflaeche — und zwar genau dort, wo niemand an eine eigene
* Meldung gedacht hat.
*/
describe("Deutsche Meldungen", () => {
it("meldet einen falschen Typ auf Deutsch", () => {
const ergebnis = z.object({ name: z.string() }).safeParse({ name: 42 });
expect(ergebnis.error?.issues[0]?.message).toMatch(/Ungültige Eingabe/);
});
it("meldet ein fehlendes Pflichtfeld auf Deutsch", () => {
const ergebnis = z.object({ name: z.string() }).safeParse({});
expect(ergebnis.error?.issues[0]?.message).not.toMatch(/Invalid input/);
});
it("laesst eigene Meldungen unangetastet", () => {
const ergebnis = StrukturSchema.safeParse({
abschnitte: [{ titel: "A", schritte: [{ titel: "" }] }],
});
expect(ergebnis.error?.issues[0]?.message).toBe("Ein Schritt braucht einen Titel.");
});
it("meldet ein unbekanntes Austauschformat auf Deutsch", () => {
const ergebnis = AustauschSchema.safeParse({ format: 99, name: "X", struktur: {} });
expect(ergebnis.error?.issues[0]?.message).toMatch(/Unbekanntes Format/);
});
});