Buchungskalender: Funktionsanfragen und Rechtliches-Karten

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
knsoandClaude Opus 5.5 committed 2026-10-07 14:26:18 +00:00
1 parent d2883018fc
commit b2a0ff5d53
6 files changed
+192 -43

No files matched your search

+50 -1
View File
@@ -82,11 +82,21 @@ test('FUNKTIONEN: News, Terminplaner, Webshop und Öffnungszeiten live (in diese
ticket: 'Fehlendes Einbau-Ticket neu anlegen?',
},
},
{
key: 'unterkunft',
label: 'Buchungskalender',
bestaetigen: {
activate: 'Buchungskalender ohne Zahlung aktivieren?',
disable: 'Buchungskalender abschalten? Auf der Website sind dann keine Buchungsanfragen mehr möglich.',
abnahme: 'Buchungskalender freischalten? Der Kunde bekommt die Mail „bereit“ und Gäste können anfragen.',
ticket: 'Fehlendes Einrichtungs-Ticket neu anlegen?',
},
},
])
})
test('FUNKTIONEN: Schlüssel sind eindeutig und jede Funktion hat Aktivieren und Abschalten bestätigt', () => {
assert.deepEqual(FUNKTIONEN.map((f) => f.key), ['news', 'termine', 'shop', 'zeiten'])
assert.deepEqual(FUNKTIONEN.map((f) => f.key), ['news', 'termine', 'shop', 'zeiten', 'unterkunft'])
for (const f of FUNKTIONEN) {
assert.ok(f.bestaetigen.activate && f.bestaetigen.disable, f.key)
}
@@ -754,3 +764,42 @@ test('entscheidungStatus: Warnung, wenn die Mail an den Kunden fehlschlug', () =
assert.deepEqual(entscheidungStatus({ ok: true, mailFehler: true }), { ok: false, text: 'Entscheidung gespeichert, Mail an den Kunden fehlgeschlagen.' })
assert.deepEqual(entscheidungStatus(null), { ok: true, text: 'Gespeichert.' })
})
test('unterkunft: Aktionen wie beim Webshop, Site-Key wird gezeigt', () => {
for (const state of ['off', 'ordered', 'setup', 'active', 'disabled', undefined]) {
assert.deepEqual(aktionen(state, 'unterkunft'), aktionen(state, 'shop'), String(state))
assert.deepEqual(aktionen(state, 'unterkunft', { ticketMissing: true }), aktionen(state, 'shop', { ticketMissing: true }), `${state} mit Ticket fehlt`)
}
assert.equal(siteKeyOf({ state: 'active', siteKey: ' abcdefghijklmnop ' }, 'unterkunft'), 'abcdefghijklmnop')
assert.equal(siteKeyOf({ state: 'active', siteKey: null }, 'unterkunft'), '')
})
test('anfrageZeilen (unterkunft): Art, Einheiten, Portale, Nachricht', () => {
const a = { art: 'ferienwohnung', einheiten: 3, portale: true, nachricht: ' Hallo ' }
assert.deepEqual(anfrageZeilen(a, 'unterkunft'), [
{ label: 'Art', text: 'Ferienwohnung' },
{ label: 'Einheiten', text: '3' },
{ label: 'Portale', text: 'nutzt Booking.com/Airbnb' },
{ label: 'Nachricht', text: 'Hallo' },
])
assert.equal(anfrageZeilen({ ...a, art: 'monteurzimmer' }, 'unterkunft')[0].text, 'Monteurzimmer')
assert.equal(anfrageZeilen({ ...a, art: 'pension' }, 'unterkunft')[0].text, 'Pension')
assert.equal(anfrageZeilen({ ...a, art: 'sonstiges' }, 'unterkunft')[0].text, 'Sonstiges')
assert.equal(anfrageZeilen({ ...a, art: 'xyz' }, 'unterkunft')[0].text, 'xyz')
const leer = anfrageZeilen({ portale: false }, 'unterkunft')
assert.deepEqual(leer.map((z) => z.text), ['–', '–', 'nutzt keine Portale', '–'])
assert.equal(anfrageZeilen({ ...a, einheiten: 'x' }, 'unterkunft')[1].text, '–')
assert.deepEqual(anfrageZeilen(null, 'unterkunft'), [])
// ohne art: unveraendert Webshop
assert.deepEqual(anfrageZeilen(a), anfrageZeilen(a, 'shop'))
})
test('anfrageText (unterkunft): Kurzfassung', () => {
assert.equal(anfrageText({ art: 'pension', einheiten: 4, portale: true }, 'unterkunft'), 'Pension, 4 Einheiten, nutzt Booking.com/Airbnb')
assert.equal(anfrageText({ art: 'pension', einheiten: 1 }, 'unterkunft'), 'Pension, 1 Einheit')
assert.equal(anfrageText(null, 'unterkunft'), '')
})
test('entscheidungBody und begruendungOk gelten unverändert für den Buchungskalender', () => {
assert.deepEqual(entscheidungBody({ projectId: 'p', entscheidung: 'ablehnen', begruendung: ' x ' }), { projectId: 'p', entscheidung: 'ablehnen', begruendung: 'x' })
})