Terminplaner: Widerrufsfunktion im Satzrahmen des Musters, Belehrung nur mit Anschrift und Telefon
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
459efff10a
commit
0c033ab1d2
3 files changed
+56
-42
No files matched your search
@@ -64,18 +64,19 @@ test('Belehrung: alle Muster-Absaetze der Anlage 1 stehen wörtlich darin, nur d
|
||||
}
|
||||
})
|
||||
|
||||
test('Belehrung: Widerrufsfunktion als „anderer geeigneter Hinweis“, Rest des Gesetzeswortlauts unverändert', () => {
|
||||
test('Belehrung: Satzrahmen der Widerrufsfunktion wörtlich aus der Anlage, nur die Lücke „…“ ist mit einem geeigneten Hinweis gefüllt', () => {
|
||||
const text = belehrung()
|
||||
const m = /Wenn Sie diese Online-Funktion nutzen, ([^“]+?)\s*“/.exec(ANLAGE_1)
|
||||
assert.ok(m, 'Gestaltungshinweis zur Widerrufsfunktion fehlt in anlage-1.txt')
|
||||
assert.ok(m[1].includes('Eingangsbestätigung') && m[1].includes('Uhrzeit ihres Eingangs'))
|
||||
const absatz = 'Sie können Ihr Widerrufsrecht auch online über die Schaltfläche „Vertrag widerrufen“ ausüben, '
|
||||
+ 'die Sie im Terminbereich auf unserer Website und über den Link „Termin verwalten“ in Ihrer Bestätigungs-E-Mail finden. '
|
||||
+ `Wenn Sie diese Online-Funktion nutzen, ${m[1]}`
|
||||
assert.ok(text.includes(absatz), 'Absatz zur Widerrufsfunktion fehlt oder weicht ab')
|
||||
assert.ok(text.includes('Vertrag widerrufen'))
|
||||
assert.ok(!text.includes('online unter'), 'keine Internetadresse, kein Parameter')
|
||||
assert.ok(!/https?:\/\//.test(text))
|
||||
// Rahmen und Gesetzesteil kommen aus anlage-1.txt, nichts davon ist hier abgeschrieben:
|
||||
// „Sie können Ihr Widerrufsrecht auch online unter … [Internetadresse oder anderen geeigneten Hinweis …] ausüben. Wenn Sie diese Online-Funktion nutzen, …“
|
||||
const m = /„(Sie können Ihr Widerrufsrecht auch online unter) … \[[^\]]+\] (ausüben\.) (Wenn Sie diese Online-Funktion nutzen, [^“]+?)\s*“/.exec(ANLAGE_1)
|
||||
assert.ok(m, 'Gestaltungshinweis zur Widerrufsfunktion fehlt oder hat sich geändert in anlage-1.txt')
|
||||
assert.ok(m[3].includes('Eingangsbestätigung') && m[3].includes('Uhrzeit ihres Eingangs'))
|
||||
const hinweis = '„Vertrag widerrufen“ (Schaltfläche im Terminbereich auf unserer Website sowie Link „Termin verwalten“ in Ihrer Bestätigungs-E-Mail)'
|
||||
const absatz = `${m[1]} ${hinweis} ${m[2]} ${m[3]}`
|
||||
assert.ok(text.includes(absatz), 'Absatz zur Widerrufsfunktion fehlt oder weicht vom Satzrahmen der Anlage ab')
|
||||
assert.ok(text.includes('Vertrag widerrufen') && text.includes('Termin verwalten'))
|
||||
assert.ok(!/https?:\/\/|www\./.test(text), 'keine Internetadresse, kein Parameter')
|
||||
assert.ok(!text.includes('über die Schaltfläche'), 'kein umformulierter Satzrahmen')
|
||||
})
|
||||
|
||||
test('Belehrung: Wertersatz für Dienstleistungen, Unzutreffendes (Wasser/Gas/Strom/Fernwärme) gestrichen', () => {
|
||||
@@ -130,23 +131,25 @@ test('Belehrung: reiner Text mit Zeilenumbrüchen, nicht HTML-maskiert (die Mail
|
||||
assert.equal(belehrung(), belehrung(), 'deterministisch')
|
||||
})
|
||||
|
||||
test('Belehrung: fehlende Telefonnummer oder Anschrift hinterlässt keine leeren Klammern oder Kommas', () => {
|
||||
const ohneTel = belehrung({ ...BETRIEB, telefon: '' })
|
||||
assert.ok(ohneTel.includes('uns (Salon Müller & Söhne, Hauptstraße 1, 67722 Winnweiler, E-Mail: info@salon-mueller.de)'))
|
||||
assert.ok(!ohneTel.includes('Telefon:'))
|
||||
const ohneAdresse = belehrung({ ...BETRIEB, adresse: '', telefon: undefined })
|
||||
assert.ok(ohneAdresse.includes('uns (Salon Müller & Söhne, E-Mail: info@salon-mueller.de)'))
|
||||
assert.ok(ohneAdresse.includes('An Salon Müller & Söhne, info@salon-mueller.de:'))
|
||||
assert.ok(!/,\s*,|\(\s*,|,\s*\)|:\s*,/.test(ohneAdresse))
|
||||
})
|
||||
|
||||
test('Belehrung: Betriebsname und E-Mail sind Pflicht, Leerraum in Angaben wird zu einem Leerzeichen', () => {
|
||||
assert.throws(() => widerrufsbelehrung({ ...BETRIEB, name: '' }), TypeError)
|
||||
assert.throws(() => widerrufsbelehrung({ ...BETRIEB, email: undefined }), TypeError)
|
||||
test('Belehrung: Name, Anschrift, Telefon und E-Mail sind Pflicht, eine unvollständige Belehrung entsteht nie (TypeError)', () => {
|
||||
for (const feld of ['name', 'adresse', 'telefon', 'email']) {
|
||||
for (const leer of [undefined, null, '', ' ', ' \n\t ', 42, {}]) {
|
||||
assert.throws(() => widerrufsbelehrung({ ...BETRIEB, [feld]: leer }), TypeError, `${feld}=${JSON.stringify(leer)}`)
|
||||
}
|
||||
const ohne = { ...BETRIEB }
|
||||
delete ohne[feld]
|
||||
assert.throws(() => widerrufsbelehrung(ohne), TypeError, `${feld} fehlt`)
|
||||
}
|
||||
assert.throws(() => widerrufsbelehrung({ name: 'Salon Müller', email: 'info@salon.de' }), TypeError)
|
||||
assert.throws(() => widerrufsbelehrung(undefined), TypeError)
|
||||
assert.throws(() => widerrufsbelehrung(null), TypeError)
|
||||
assert.throws(() => widerrufsbelehrung('Salon'), TypeError)
|
||||
})
|
||||
|
||||
test('Belehrung: Leerraum in den Angaben wird zu einem Leerzeichen, vollständige Angaben stehen in Klammer und „An“-Zeile', () => {
|
||||
const text = belehrung({ ...BETRIEB, name: ' Salon \n Müller ', adresse: 'Hauptstraße 1,\n67722 Winnweiler' })
|
||||
assert.ok(text.includes('uns (Salon Müller, Hauptstraße 1, 67722 Winnweiler, Telefon:'))
|
||||
assert.ok(text.includes('uns (Salon Müller, Hauptstraße 1, 67722 Winnweiler, Telefon: 06301 1234, E-Mail: info@salon-mueller.de)'))
|
||||
assert.ok(text.includes('An Salon Müller, Hauptstraße 1, 67722 Winnweiler, info@salon-mueller.de:'))
|
||||
})
|
||||
|
||||
test('Belehrung ist die Quelle von docs/rechtliches/termine-widerrufsbelehrung-muster.md (Platzhalter-Fassung steht dort wörtlich)', () => {
|
||||
|
||||
Reference in new issue
Block a user