Terminplaner: Handeintraege verlangen nur den Namen, Bestaetigung braucht eine Adresse
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
be49d38e0c
commit
589f5088a6
3 files changed
+65
-14
No files matched your search
@@ -696,9 +696,17 @@ test('manuell: mit Haken und Adresse geht G02 mit Einladung und funktionierendem
|
||||
assert.equal(v.aktionen.widerrufen, false)
|
||||
})
|
||||
|
||||
test('manuell: Haken ohne Adresse ist kein Fehler, es geht nur keine Mail raus', async () => {
|
||||
test('manuell: der Haken "Bestaetigung senden" braucht eine Adresse (400 Feld email, nichts angelegt); ohne Haken geht der Eintrag ohne Adresse', async () => {
|
||||
const ctx = await speichere()
|
||||
const erg = await manuell(ctx, handEingabe({ bestaetigungSenden: true }), JETZT)
|
||||
for (const email of [undefined, null, '', ' ']) {
|
||||
const err = await fehlerVon(() => manuell(ctx, handEingabe({ email, bestaetigungSenden: true }), JETZT))
|
||||
assert.equal(err.status, 400)
|
||||
assert.deepEqual(err.fehler, { email: 'Für die Bestätigung braucht der Gast eine E-Mail-Adresse.' })
|
||||
}
|
||||
assert.equal(buchungen().length, 0)
|
||||
assert.equal(aw.docs('termineClaims').size, 0)
|
||||
|
||||
const erg = await manuell(ctx, handEingabe({ bestaetigungSenden: false }), JETZT)
|
||||
await warteAufVersand()
|
||||
assert.equal(buchung(erg.id).gastEmail, '')
|
||||
assert.equal(sink.sent.length, 0)
|
||||
@@ -710,6 +718,41 @@ test('manuell: Haken ohne Adresse ist kein Fehler, es geht nur keine Mail raus',
|
||||
assert.equal(buchung(erg.id).status, 'abgesagt')
|
||||
})
|
||||
|
||||
test('manuell: Pflicht ist nur der Name; E-Mail, Telefon, Nachricht und Zusatzfelder sind freiwillig, egal was gastFelder fuer Gaeste verlangt', async () => {
|
||||
const pflicht = await speichere(einstellung({
|
||||
gastFelder: { telefon: 'pflicht', nachricht: 'pflicht', zusatz: [{ key: 'marke', label: 'Marke', typ: 'text', pflicht: true }] },
|
||||
}))
|
||||
// nur der Name
|
||||
const nurName = await manuell(pflicht, { leistung: S_SOFORT, ressource: R1, tag: TAG_FERN, zeit: '10:00', name: 'Laufkunde' }, JETZT)
|
||||
const b = buchung(nurName.id)
|
||||
assert.equal(b.gastName, 'Laufkunde')
|
||||
for (const feld of ['gastEmail', 'gastTelefon', 'gastNachricht', 'gastZusatz']) assert.equal(b[feld], '', feld)
|
||||
// ohne Name geht es nicht, auch wenn alles andere da ist
|
||||
const err = await fehlerVon(() => manuell(pflicht, handEingabe({ name: '', email: 'a@example.com', zeit: '11:00' }), JETZT))
|
||||
assert.deepEqual(Object.keys(err.fehler), ['name'])
|
||||
|
||||
// ausgeschaltete Felder (aus) nehmen Eingaben des Betriebs trotzdem an
|
||||
const aus = await speichere(einstellung({ gastFelder: { telefon: 'aus', nachricht: 'aus', zusatz: [{ key: 'marke', label: 'Marke', typ: 'text', pflicht: false }] } }))
|
||||
const mitAllem = await manuell(aus, handEingabe({ zeit: '12:00', nachricht: 'Kommt mit Hund.', zusatz: { marke: 'Wella' } }), JETZT)
|
||||
assert.equal(buchung(mitAllem.id).gastTelefon, '06301 555')
|
||||
assert.equal(buchung(mitAllem.id).gastNachricht, 'Kommt mit Hund.')
|
||||
assert.deepEqual(JSON.parse(buchung(mitAllem.id).gastZusatz), { marke: 'Wella' })
|
||||
|
||||
// was angegeben ist, wird geprueft
|
||||
for (const [feld, over] of [
|
||||
['telefon', { telefon: 'abc' }],
|
||||
['nachricht', { nachricht: 'n'.repeat(501) }],
|
||||
['zusatz.marke', { zusatz: { marke: 'm'.repeat(201) } }],
|
||||
['zusatz', { zusatz: { unbekannt: 'x' } }],
|
||||
['email', { email: 'kein-postfach' }],
|
||||
]) {
|
||||
const e = await fehlerVon(() => manuell(aus, handEingabe({ zeit: '14:00', ...over }), JETZT))
|
||||
assert.equal(e.status, 400, feld)
|
||||
assert.ok(Object.keys(e.fehler).includes(feld), `${feld}: ${JSON.stringify(e.fehler)}`)
|
||||
}
|
||||
assert.equal(buchungen().length, 2)
|
||||
})
|
||||
|
||||
test('manuell: Pruefung wie beim Gast, aber ohne Zustimmungen; Adresse freiwillig, aber wenn angegeben gueltig', async () => {
|
||||
const ctx = await speichere()
|
||||
// Storno-Haken und Zustimmung zum vorzeitigen Beginn entfallen (Termin in 7 Tagen, mit Preis, Verbraucher-Betrieb)
|
||||
|
||||
Reference in new issue
Block a user