feat(vorlagen): Editor, Liste und Versionsgeschichte (#24)
Prüfung / pruefung (push) Canceled after 0s
Prüfung / e2e (push) Canceled after 0s

This commit was merged in pull request #24.
This commit is contained in:
2026-09-25 08:23:22 +00:00
parent d8d5444e9f
commit e3d80e5982
65 changed files with 5454 additions and 103 deletions
+27 -1
View File
@@ -1,6 +1,6 @@
import { describe, expect, it } from "vitest";
import { z } from "@/lib/validierung";
import { AustauschSchema, StrukturSchema } from "@/lib/vorlagen-format";
import { AustauschSchema, StrukturSchema, stelleBenennen } from "@/lib/vorlagen-format";
/**
* Zod ist in src/lib/validierung.ts auf Deutsch eingestellt (#009).
@@ -32,3 +32,29 @@ describe("Deutsche Meldungen", () => {
expect(ergebnis.error?.issues[0]?.message).toMatch(/Unbekanntes Format/);
});
});
describe("Stelle benennen", () => {
it("macht aus einem Zod-Pfad eine Stelle im Editor", () => {
expect(stelleBenennen(["struktur", "abschnitte", 2, "schritte", 0, "titel"])).toBe(
"Abschnitt 03, Schritt 1: ",
);
expect(stelleBenennen(["variablen", 1, "schluessel"])).toBe("Variable 2: ");
expect(stelleBenennen(["abschnitte", 0, "schritte", 3, "konfig", "optionen", 1])).toBe(
"Abschnitt 01, Schritt 4, Option 2: ",
);
});
it("liefert nichts, wenn der Pfad keine Stelle beschreibt", () => {
// Dann bleibt die Meldung des Schemas fuer sich allein stehen – besser als
// ein leerer Doppelpunkt davor.
expect(stelleBenennen(["name"])).toBe("");
expect(stelleBenennen([])).toBe("");
});
it("nennt die Stelle in der Reihenfolge, in der man sie sucht", () => {
// Erst der Abschnitt, dann der Schritt darin – nicht umgekehrt.
const stelle = stelleBenennen(["abschnitte", 9, "schritte", 11, "titel"]);
expect(stelle.indexOf("Abschnitt")).toBeLessThan(stelle.indexOf("Schritt"));
expect(stelle).toBe("Abschnitt 10, Schritt 12: ");
});
});