From 5bf1504ce871914a1d7dfbb5275e08a66acbcdd2 Mon Sep 17 00:00:00 2001 From: Kenso Grimm Date: Wed, 7 Oct 2026 15:21:33 +0000 Subject: [PATCH] =?UTF-8?q?Buchungskalender:=20Abschluss=20=E2=80=93=20Por?= =?UTF-8?q?tal-Fehlertexte=20f=C3=BCr=20alle=20Servercodes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 --- public/buchungen-fehler.js | 13 +++++++++++++ test/buchungenUi.test.js | 12 ++++++++++++ 2 files changed, 25 insertions(+) diff --git a/public/buchungen-fehler.js b/public/buchungen-fehler.js index 2749277..44ce89e 100644 --- a/public/buchungen-fehler.js +++ b/public/buchungen-fehler.js @@ -8,6 +8,19 @@ const CODES = { stripe_nicht_aktiv: 'Online-Zahlung geht erst, wenn dein Stripe-Konto freigeschaltet ist.', erstattung_fehlgeschlagen: 'Die Stornierung wurde durchgeführt, aber die Erstattung ist fehlgeschlagen. Bitte erstatte den Betrag im Stripe-Dashboard oder versuch es später noch einmal.', frist_abgelaufen: 'Die Frist für diese Anfrage ist abgelaufen.', + preise_unvollstaendig: 'Die Preise sind noch nicht vollständig. Trage im Reiter „Unterkünfte“ unter „Preise“ alle Pflichtpreise ein und speichere sie.', + einstellungen_unvollstaendig: 'Deine Einstellungen sind noch nicht vollständig. Ergänze im Reiter „Einstellungen“ Rechnungsangaben und Zustimmung und speichere sie.', + status_ungueltig: 'Das geht beim aktuellen Stand der Anfrage nicht mehr. Lade die Seite neu und prüfe den Status.', + limit_erreicht: 'Du hast die Höchstzahl erreicht. Entferne zuerst einen vorhandenen Eintrag, dann kannst du einen neuen anlegen.', + kein_konto: 'Es ist noch kein Stripe-Konto verbunden. Richte zuerst die Online-Zahlung im Reiter „Shop“ ein.', + nicht_aktiv: 'Der Buchungskalender ist bei dir gerade nicht aktiv. Schalte ihn unter „Funktionen“ ein oder wende dich an uns.', + praefix_gesperrt: 'Das Rechnungspräfix kann nach der ersten Rechnung nicht mehr geändert werden. Lass das Feld unverändert.', + sperre_aus_ical: 'Diese Sperre stammt aus einem Kalenderimport und lässt sich hier nicht ändern. Ändere sie im Ursprungskalender oder entferne den Import.', + online_aus: 'Online-Zahlung ist bei dir ausgeschaltet. Schalte sie in den Einstellungen ein oder wähle „Vor Ort bezahlen“.', + zahlung_fehlgeschlagen: 'Die Zahlung konnte nicht gestartet werden. Versuche es in ein paar Minuten noch einmal.', + hat_anfragen: 'Zu dieser Unterkunft gibt es schon Anfragen, deshalb kannst du sie nicht löschen. Schalte sie stattdessen auf inaktiv.', + konto_vorhanden: 'Es ist schon ein anderes Stripe-Konto hinterlegt. Wende dich an uns, wenn du es wechseln möchtest.', + zu_viele_personen: 'Das sind mehr Personen, als die Unterkunft aufnimmt. Prüfe die Personenzahl.', } /** => { message, fehler: { feld: text } } (Feldfehler aus body.felder, sonst ein Text unter „_“). */ diff --git a/test/buchungenUi.test.js b/test/buchungenUi.test.js index d574cf5..d483446 100644 --- a/test/buchungenUi.test.js +++ b/test/buchungenUi.test.js @@ -843,3 +843,15 @@ test('Posten-Editor: die Summenanzeige enthaelt bei Regelbesteuerung kein Text-" assert.doesNotMatch(fx.text(e.el), /null/) } finally { fx.restore() } }) + +// Abschluss F3: jeder Servercode hat einen deutschen Du-Satz mit Handlungshinweis +test('Fehlertexte: alle Codes des Portals sind übersetzt (Du-Form, kein Standardtext)', async () => { + const { fehlerFuerFormular } = await import('../public/buchungen-fehler.js') + const standard = fehlerFuerFormular({ fehler: 'gibt_es_nicht' }).message + for (const code of ['preise_unvollstaendig', 'einstellungen_unvollstaendig', 'status_ungueltig', 'limit_erreicht', 'kein_konto', 'nicht_aktiv', 'praefix_gesperrt', 'sperre_aus_ical', 'online_aus', 'zahlung_fehlgeschlagen']) { + const m = fehlerFuerFormular({ fehler: code }).message + assert.notEqual(m, standard, code) + assert.ok(m.length > 30 && m.endsWith('.'), code) + assert.doesNotMatch(m, /\bSie\b|\bIhre?\b/, code) + } +})