Buchungskalender: Funktionsanfragen und Rechtliches-Karten
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
d2883018fc
commit
b2a0ff5d53
6 files changed
+192
-43
No files matched your search
@@ -65,7 +65,7 @@ test('terminplaner_karten_vorhanden', () => {
|
||||
assert.ok(!/\d{4}-\d{2}-\d{2}/.test(d.liveUrl), 'Alias-Seite ohne Fassungsdatum')
|
||||
}
|
||||
// Oeffnungszeiten live: Karte 12, hinter den Terminplaner- und Webshop-Karten; der Schluessel hat 28 Zeichen (WOMS-Grenze 36, Ruling R35)
|
||||
assert.equal(DOCUMENTS.length, 12, 'keine Analyse-Karten und keine weiteren')
|
||||
assert.equal(DOCUMENTS.length, 14, 'keine Analyse-Karten und keine weiteren')
|
||||
})
|
||||
|
||||
test('zeiten_karte_vorhanden_am_ende', () => {
|
||||
@@ -78,10 +78,18 @@ test('zeiten_karte_vorhanden_am_ende', () => {
|
||||
sort: 12,
|
||||
})
|
||||
assert.ok(d.key.length <= 36, 'Dokument-ID hoechstens 36 Zeichen')
|
||||
assert.equal(DOCUMENTS.at(-1), d, 'am Ende von DOCUMENTS, nach den Terminplaner- und Webshop-Karten')
|
||||
assert.equal(DOCUMENTS.at(-3), d, 'vor den Buchungskalender-Karten, nach den Terminplaner- und Webshop-Karten')
|
||||
assert.equal(DOCUMENTS.findIndex((x) => x.key === 'widerrufsbelehrung-funktionen'), 8, 'Terminplaner-Karten unveraendert davor')
|
||||
})
|
||||
|
||||
test('unterkunft_karten_am_ende', () => {
|
||||
assert.deepEqual(DOCUMENTS.slice(-2), [
|
||||
{ key: 'leistungsbeschreibung-unterkunft', title: 'Leistungsbeschreibung Buchungskalender', liveUrl: 'https://project.webklar.com/rechtliches/leistungsbeschreibung-unterkunft.html', sort: 13 },
|
||||
{ key: 'avv-unterkunft', title: 'AVV Buchungskalender', liveUrl: 'https://project.webklar.com/rechtliches/avv-unterkunft.html', sort: 14 },
|
||||
])
|
||||
assert.equal(DOCUMENTS.at(-1).key, 'avv-unterkunft')
|
||||
})
|
||||
|
||||
test('bestehende_karten_unveraendert', () => {
|
||||
assert.deepEqual(DOCUMENTS.slice(0, 9), [
|
||||
{ key: 'agb', title: 'AGB', liveUrl: 'https://webklar.com/agb', sort: 1 },
|
||||
@@ -111,5 +119,7 @@ test('dry_run_listet_karten', () => {
|
||||
assert.ok(zeilen.some((z) => z.startsWith('Rechtstext leistungsbeschreibung-webshop:')))
|
||||
assert.ok(zeilen.some((z) => z.startsWith('Rechtstext avv-webshop:')))
|
||||
assert.ok(zeilen.includes('Rechtstext leistungsbeschreibung-zeiten: Leistungsbeschreibung Öffnungszeiten live'))
|
||||
assert.ok(zeilen.includes('Rechtstext leistungsbeschreibung-unterkunft: Leistungsbeschreibung Buchungskalender'))
|
||||
assert.ok(zeilen.includes('Rechtstext avv-unterkunft: AVV Buchungskalender'))
|
||||
assert.ok(!/angelegt|vorhanden|Fertig/.test(r.stdout), 'Trockenlauf legt nichts an')
|
||||
})
|
||||
@@ -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' })
|
||||
})
|
||||
Reference in new issue
Block a user