Buchungskalender: UI-Durchlauf – Platzhalter in Stornobedingungen blockieren das Speichern
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
196921fdf0
commit
f5e304ad7a
3 files changed
+12
No files matched your search
@@ -143,6 +143,7 @@ export async function zeichnePreise(ctx, unterkunft) {
|
|||||||
}
|
}
|
||||||
const storn = String(storno.value).trim()
|
const storn = String(storno.value).trim()
|
||||||
if (storn.length < 20 || storn.length > 5000) fehler.stornobedingungen = 'Die Stornobedingungen brauchen 20 bis 5000 Zeichen.'
|
if (storn.length < 20 || storn.length > 5000) fehler.stornobedingungen = 'Die Stornobedingungen brauchen 20 bis 5000 Zeichen.'
|
||||||
|
if (!fehler.stornobedingungen && /\[[^\]]*\]/.test(storn)) fehler.stornobedingungen = 'Bitte ersetze die Platzhalter in eckigen Klammern durch deine Werte.'
|
||||||
const body = {
|
const body = {
|
||||||
staffeln, reinigungCent, aufpreisPersonNachtCent: aufpreisCent,
|
staffeln, reinigungCent, aufpreisPersonNachtCent: aufpreisCent,
|
||||||
personenInklusive: zahl('personenInklusive', inklusive, 'Bitte gib eine ganze Zahl ab 1 an.', 1, 1000),
|
personenInklusive: zahl('personenInklusive', inklusive, 'Bitte gib eine ganze Zahl ab 1 an.', 1, 1000),
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ const BIC_RE = /^[A-Z0-9]{8}([A-Z0-9]{3})?$/
|
|||||||
const UST_ID_RE = /^[A-Z]{2}[A-Z0-9]{2,18}$/
|
const UST_ID_RE = /^[A-Z]{2}[A-Z0-9]{2,18}$/
|
||||||
const SAETZE = [0, 7, 19]
|
const SAETZE = [0, 7, 19]
|
||||||
|
|
||||||
|
/** Unausgefuellte Platzhalter des Mustertexts ("[30]", "[E-Mail-Adresse des Vermieters]") duerfen nicht zum Gast gelangen. */
|
||||||
|
export const PLATZHALTER_TEXT = 'Bitte ersetze die Platzhalter in eckigen Klammern durch deine Werte.'
|
||||||
export const MAX_UNTERKUENFTE = 20
|
export const MAX_UNTERKUENFTE = 20
|
||||||
export const MAX_ICAL_IMPORTE = 5
|
export const MAX_ICAL_IMPORTE = 5
|
||||||
export const MAX_STAFFELN = 6
|
export const MAX_STAFFELN = 6
|
||||||
@@ -204,6 +206,7 @@ export function pruefePreise(eingabe) {
|
|||||||
}
|
}
|
||||||
const sb = text(e.stornobedingungen, 5000)
|
const sb = text(e.stornobedingungen, 5000)
|
||||||
if (sb.length < 20 || sb.length > 5000) fehler.stornobedingungen = 'Die Stornobedingungen müssen 20 bis 5000 Zeichen lang sein.'
|
if (sb.length < 20 || sb.length > 5000) fehler.stornobedingungen = 'Die Stornobedingungen müssen 20 bis 5000 Zeichen lang sein.'
|
||||||
|
else if (/\[[^\]]*\]/.test(sb)) fehler.stornobedingungen = PLATZHALTER_TEXT
|
||||||
else werte.stornobedingungen = sb
|
else werte.stornobedingungen = sb
|
||||||
return Object.keys(fehler).length ? { fehler } : { werte }
|
return Object.keys(fehler).length ? { fehler } : { werte }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -613,3 +613,11 @@ test('Online-Zahlung: nur mit aktivem Stripe-Konto, sonst 409 mit felder.onlineZ
|
|||||||
assert.equal((await put('/einstellungen', { telefon: '123' })).status, 200)
|
assert.equal((await put('/einstellungen', { telefon: '123' })).status, 200)
|
||||||
assert.equal((await put('/einstellungen', { onlineZahlung: true })).status, 200)
|
assert.equal((await put('/einstellungen', { onlineZahlung: true })).status, 200)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('Stornobedingungen mit unausgefuellten Platzhaltern in eckigen Klammern werden abgelehnt', () => {
|
||||||
|
for (const text of ['Bis [30] Tage vor Anreise kostenfrei, sonst Anteil.', 'Stornierung per E-Mail an [E-Mail-Adresse des Vermieters] moeglich.']) {
|
||||||
|
const r = pruefePreise({ ...PREISE, stornobedingungen: text })
|
||||||
|
assert.equal(r.fehler?.stornobedingungen, 'Bitte ersetze die Platzhalter in eckigen Klammern durch deine Werte.', text)
|
||||||
|
}
|
||||||
|
assert.ok(pruefePreise({ ...PREISE, stornobedingungen: 'Bis 30 Tage vor Anreise kostenfrei, danach 50 Prozent.' }).werte)
|
||||||
|
})
|
||||||
Reference in new issue
Block a user