35 lines
1.4 KiB
TypeScript
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/);
|
|
});
|
|
});
|