Gästetexte des Terminplaners: Entwurf-Kennzeichnung entfernt
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
c1266fcce7
commit
495d5ad9ca
11 files changed
+79
-56
No files matched your search
@@ -219,6 +219,11 @@ test('cssVorschlag: der Hinweis nennt den Kontrast gegen Weiss, wenn der Akzent
|
||||
const NOW = new Date('2026-10-05T10:00:00Z') // Montag, 12:00 Berliner Zeit
|
||||
const SPAETER = new Date('2026-10-06T10:00:00Z') // einen Tag spaeter: nur die "Erzeugt am"-Zeile aendert sich
|
||||
const GEHEIM = 'XYZ-GEHEIM'
|
||||
// Endregel (Leistungsbeschreibung Nr. 4 Abs. 9): wer den Datenschutz-Absatz einfügt; Checkliste und Schritt 4 der Kurzfassung nennen sie
|
||||
const DATENSCHUTZ_ENDREGEL =
|
||||
'liegt die Datenschutzerklärung in der von WEBklar betreuten Website, fügen wir den Absatz beim Einbau ein, das gehört zur Einrichtung und wird nicht auf das Stundenkontingent angerechnet; '
|
||||
+ 'sonst den Absatz als Textbaustein per Chat an den Kunden senden, der ihn selbst einfügt'
|
||||
|
||||
const BETRIEB = {
|
||||
name: 'Salon Muster',
|
||||
email: 'inhaber-intern@salon-muster.example',
|
||||
@@ -880,6 +885,36 @@ test('D3b Banner: ENTWURF_BANNER genau dann, wenn entwurf, und zwar als erste Wa
|
||||
assert.equal(erzeuge({ entwurf: true }).warnungen.filter((w) => w === ENTWURF_BANNER).length, 1)
|
||||
})
|
||||
|
||||
test('einbau_ohne_banner: im Standardaufruf steht kein ENTWURF-Banner in Warnungen, Volltext und Kurzfassung; mit entwurf: true bleibt er', () => {
|
||||
assert.equal(RECHTSTEXTE_ENTWURF, false)
|
||||
const r = erzeuge()
|
||||
assert.deepEqual(r.warnungen, [])
|
||||
assert.ok(!r.warnungen.includes(ENTWURF_BANNER))
|
||||
assert.ok(!r.text.includes('ENTWURF'), 'Volltext')
|
||||
assert.ok(!r.kurz.includes('ENTWURF'), 'Kurzfassung (Ticket)')
|
||||
for (const a of r.abschnitte) assert.ok(!a.text.includes('ENTWURF'), `Abschnitt ${a.id}`)
|
||||
// die D3b-Tests mit ausdrücklichem entwurf: true bleiben gültig: der Banner ist weiter eine eigene Warnung
|
||||
const mit = erzeuge({ entwurf: true })
|
||||
assert.deepEqual(mit.warnungen, [ENTWURF_BANNER])
|
||||
assert.ok(mit.kurz.includes(ENTWURF_BANNER))
|
||||
})
|
||||
|
||||
test('checkliste_datenschutz_endregel: die Checkliste nennt die Endregel der Leistungsbeschreibung, die Zwischenregel ist weg', () => {
|
||||
const text = abschnitt(erzeuge(), 'checkliste').text
|
||||
const punkt = zeilen(text).find((z) => z.includes('Datenschutz-Absatz „Online-Terminbuchung“ steht in der Datenschutzerklärung'))
|
||||
assert.ok(punkt, text)
|
||||
assert.ok(punkt.includes(`(Fassung Sie; ${DATENSCHUTZ_ENDREGEL}).`), punkt)
|
||||
for (const teil of ['von WEBklar betreuten Website', 'fügen wir den Absatz beim Einbau ein', 'nicht auf das Stundenkontingent angerechnet', 'Textbaustein per Chat an den Kunden']) {
|
||||
assert.ok(punkt.includes(teil), `Endregel: ${teil}`)
|
||||
}
|
||||
assert.ok(!text.includes('liegt die Datenschutzerklärung nicht in unserem Repo'), 'Zwischenregel aus D3b ist weg')
|
||||
assert.ok(!erzeuge().kurz.includes('nicht in unserem Repo'), 'auch nicht in der Kurzfassung')
|
||||
assert.ok(!erzeuge().text.includes('nicht in unserem Repo'), 'und nicht im Volltext')
|
||||
const du = fixtureEinstellung()
|
||||
du.anrede = 'du'
|
||||
assert.ok(abschnitt(erzeuge({ einstellung: du }), 'checkliste').text.includes(`(Fassung Du; ${DATENSCHUTZ_ENDREGEL}).`))
|
||||
})
|
||||
|
||||
test('D3b Warnungen: fehlende Telefonnummer, und Anschrift nur, wenn Gaeste ein Widerrufsrecht haben', () => {
|
||||
const ohneTelefon = fixtureEinstellung()
|
||||
ohneTelefon.betrieb.telefon = ''
|
||||
@@ -996,7 +1031,7 @@ test('D3b Checkliste: immer-Punkte (Freischalten, Probebuchung, stornieren, Kont
|
||||
'Datenschutz-Absatz', 'Impressum', 'Kontrast', '390 px', 'Tastatur',
|
||||
]) assert.ok(text.includes(erwartet), `${erwartet}\n---\n${text}`)
|
||||
assert.ok(text.includes(BETRIEB.impressumUrl) && text.includes(BETRIEB.datenschutzUrl), 'die URLs stehen zum Pruefen im Punkt')
|
||||
assert.ok(text.includes('liegt die Datenschutzerklärung nicht in unserem Repo: Absatz per Chat an den Kunden senden'), 'Zwischenregel bis Block F')
|
||||
assert.ok(text.includes(DATENSCHUTZ_ENDREGEL), 'Endregel der Leistungsbeschreibung (Nr. 4 Abs. 9)')
|
||||
assert.ok(text.includes(`${config.womsBaseUrl}/customers/c1?tab=funktionen`), 'Link ins WOMS-Kundenpanel')
|
||||
// die Reihenfolge: erst Einbau, dann Freischalten, dann Probebuchung, dann die Pruefungen am sichtbaren Widget
|
||||
const stelle = (teil) => z.findIndex((x) => x.includes(teil))
|
||||
@@ -1246,7 +1281,7 @@ test('D4 kurz Schritt 4 und 6: Datenschutz-Fassung nach Anrede, Preis nur bei be
|
||||
du.anrede = 'du'
|
||||
assert.match(schritt({}, 4), /Sie-Form/)
|
||||
assert.match(schritt({ einstellung: du }, 4), /Du-Form/)
|
||||
assert.ok(schritt({}, 4).includes('Absatz per Chat an den Kunden senden'), 'Zwischenregel aus der Checkliste (F10b2 ersetzt sie an einer Stelle)')
|
||||
assert.ok(schritt({}, 4).includes(DATENSCHUTZ_ENDREGEL), 'dieselbe Endregel wie in der Checkliste')
|
||||
assert.match(schritt({ feature: PAKET_FEATURE }, 6), /Nicht auf das Stundenkontingent anrechnen \(Einrichtung bezahlt, 149 €\)/)
|
||||
assert.ok(schritt({}, 6).includes('Nicht auf das Stundenkontingent anrechnen'))
|
||||
assert.ok(!schritt({}, 6).includes('bezahlt'), 'ohne Kauf keine Behauptung, die Einrichtung sei bezahlt')
|
||||
|
||||
Reference in new issue
Block a user