feat(vorlagen): Editor, Liste und Versionsgeschichte (#24)
This commit was merged in pull request #24.
This commit is contained in:
+25
-2
@@ -174,7 +174,11 @@ describe.runIf(datenbankVerfuegbar)("Vorlagen-Versionierung", () => {
|
||||
).rejects.toThrow(/„upn“ gibt es zweimal/);
|
||||
});
|
||||
|
||||
it("nennt bei einem Fehler im Aufbau den Pfad", async () => {
|
||||
it("nennt die Stelle so, wie sie im Editor steht", async () => {
|
||||
// „abschnitte.0.schritte.1.titel“ ist richtig und nutzlos: der Redakteur
|
||||
// muesste von null an zaehlen. Der Review hat es als den Weg benannt, auf
|
||||
// dem Arbeit wirklich verloren geht — mehrfach vergeblich speichern, dann
|
||||
// weggehen.
|
||||
const benutzer = await benutzerAnlegen();
|
||||
const { version } = await vorlageAnlegen({ name: "Probe" }, benutzer.id);
|
||||
await expect(
|
||||
@@ -182,7 +186,7 @@ describe.runIf(datenbankVerfuegbar)("Vorlagen-Versionierung", () => {
|
||||
variablen: [],
|
||||
abschnitte: [{ titel: "Abschnitt", schritte: [{ titel: "gut" }, { titel: " " }] }],
|
||||
}),
|
||||
).rejects.toThrow(/abschnitte\.0\.schritte\.1\.titel/);
|
||||
).rejects.toThrow("Abschnitt 01, Schritt 2: Ein Schritt braucht einen Titel.");
|
||||
});
|
||||
|
||||
it("hinterlässt bei einem Fehler keinen halben Entwurf", async () => {
|
||||
@@ -489,6 +493,25 @@ describe.runIf(datenbankVerfuegbar)("Vorlagen-Versionierung", () => {
|
||||
expect(await testPrisma.protokoll.count({ where: { aktion: "Vorlage archiviert" } })).toBe(1);
|
||||
});
|
||||
|
||||
it("lässt die Kundenzuordnung stehen, wenn sie nicht mitgeschickt wird", async () => {
|
||||
// Im Modus Intern zeigt das Formular keine Kundenwahl. Wuerde ein
|
||||
// fehlendes Feld als „auf leer setzen“ gelten, verlöre jede Vorlage beim
|
||||
// Speichern ihrer Kopfdaten die Zuordnung – und nach einem Wechsel zurueck
|
||||
// in den Modus Dienstleistung waere sie fuer alle sichtbar.
|
||||
const benutzer = await benutzerAnlegen();
|
||||
const kunde = await testPrisma.kunde.create({ data: { name: "Meiner", kuerzel: "MEIN" } });
|
||||
const { vorlage } = await vorlageAnlegen({ name: "Probe", kundeId: kunde.id }, benutzer.id);
|
||||
|
||||
await vorlageBearbeiten(vorlage.id, { name: "Anders" }, benutzer.id);
|
||||
expect((await testPrisma.vorlage.findUniqueOrThrow({ where: { id: vorlage.id } })).kundeId).toBe(
|
||||
kunde.id,
|
||||
);
|
||||
|
||||
// Ausdrücklich `null` loest sie dagegen.
|
||||
await vorlageBearbeiten(vorlage.id, { name: "Anders", kundeId: null }, benutzer.id);
|
||||
expect((await testPrisma.vorlage.findUniqueOrThrow({ where: { id: vorlage.id } })).kundeId).toBeNull();
|
||||
});
|
||||
|
||||
it("schreibt nichts, wenn sich nichts ändert", async () => {
|
||||
const benutzer = await benutzerAnlegen();
|
||||
const { vorlage } = await veroeffentlichteVorlage(benutzer.id);
|
||||
|
||||
Reference in New Issue
Block a user