Mails: Vertragsbestätigung je Fassung, Zustimmung zum AVV, kleinere Textkorrekturen
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
1 parent
63d3bb11bf
commit
12a24514a4
10 files changed
+172
-36
No files matched your search
@@ -121,7 +121,7 @@ test('Textfassung K01: alle Vertragsangaben lesbar', () => {
|
||||
'• 1 Domain',
|
||||
'Zum Kundenportal: https://project.webklar.com/dashboard.html',
|
||||
'📎 Widerrufsbelehrung mit Muster-Widerrufsformular',
|
||||
'Ihre Zustimmung zu den Vertragsbedingungen (Version 2026-09-25-v3) haben wir am 01.10.2026, 10:07 Uhr erhalten.',
|
||||
'Ihre Zustimmung zu den Vertragsbedingungen (Version 2026-09-25-v3) einschließlich des Auftragsverarbeitungsvertrags haben wir am 01.10.2026, 10:07 Uhr erhalten.',
|
||||
'Vertrag widerrufen (https://project.webklar.com/widerrufen.html)',
|
||||
'Vertrag kündigen (https://project.webklar.com/kuendigen.html)',
|
||||
'Telefon 0176 23726355 · support@webklar.com',
|
||||
@@ -267,11 +267,13 @@ test('K03, K04, T08, T09: Vertrag bzw. Bestellung, Pakete und die Blöcke der Au
|
||||
assert.match(speicher.text, /Vertrag: E-Mail-Zusatzspeicher zum WEBklar Hosting-Abo/)
|
||||
assert.match(speicher.text, /Ihr Zusatzspeicher verringert sich zum\n31\.10\.2026/)
|
||||
assert.match(speicher.text, /um 2 Paket\(e\) gekündigt; danach bleiben 1 Paket\(e\)/)
|
||||
assert.doesNotMatch(speicher.text, /Wartungs-Abo\n|Stundenguthaben|Wir prüfen Ihre Kündigung/)
|
||||
assert.doesNotMatch(speicher.text, /Wartungs-Abo\n|Stundenkontingent|Stundenguthaben|Wir prüfen Ihre Kündigung/)
|
||||
assert.match(renderMail('K03', k03, { pruefen: true }).text, /bestätigen Ihnen den Zeitpunkt, zu dem sie wirkt, gesondert per E-Mail/)
|
||||
// Task 12: das Stundenguthaben gibt es nur im Wartungs-Abo (Block wartung innerhalb von abo)
|
||||
assert.match(renderMail('K03', k03, { abo: true, wartung: true }).text, /Stundenguthaben verfällt/)
|
||||
assert.doesNotMatch(renderMail('K03', k03, { abo: true }).text, /Stundenguthaben/)
|
||||
// Task 12 (Fix 1, 6): das Stundenkontingent gibt es nur im Wartungs-Abo (Block wartung innerhalb von abo); es ist
|
||||
// kein Geldguthaben (v4 § 4 Abs. 1), darum „nicht genutzte Arbeitszeit“ statt „Stundenguthaben“
|
||||
assert.match(renderMail('K03', k03, { abo: true, wartung: true }).text, /Nicht genutzte Arbeitszeit aus dem Stundenkontingent verfällt mit Vertragsende\./)
|
||||
assert.doesNotMatch(renderMail('K03', k03, { abo: true }).text, /Stundenkontingent|Stundenguthaben/)
|
||||
assert.doesNotMatch(renderMail('K03', k03, { abo: true, wartung: true }).text, /Stundenguthaben/)
|
||||
assert.match(renderMail('K03', k03, { abo: true }).text, /Domain-AuthCode/)
|
||||
|
||||
const k04 = { ...sampleValues(loadTemplate('K04')), bestellung: 'Wechsel ins Wartungs-Abo' }
|
||||
@@ -445,3 +447,44 @@ test('T09: Handgriffe je Bestellung ohne Wertersatz beim Zusatzspeicher', () =>
|
||||
const abschluss = renderMail('T09', t09, { abo_gefunden: true, abschluss: true }).text
|
||||
assert.match(abschluss, /Zusatzspeicher[^.]*vollständig/)
|
||||
})
|
||||
|
||||
// Task 12, Fix round 1: K01 je Fassung (v3-Zeile „1 E-Mail-Postfach · 1 Stunde Arbeitszeit pro Monat“ im Block wartung_v3),
|
||||
// Zustimmung einschließlich AVV; K12 „Heute fällig“ nennt den Zusatzspeicher nur im Block; T07 nennt die Arbeitszeit nur bei Wartung
|
||||
test('K01: Block wartung_v3 mit der Zeile der Fassung 3, wartung mit der Fassung 4, Zustimmung einschließlich AVV', () => {
|
||||
const base = { name: 'K', produkt: 'Wartungs-Abo', preis: '50,00 € / Monat', angebot_text: '', vertragsschluss: '01.10.2026', leistungsbeginn: '01.10.2026',
|
||||
mindestlaufzeit_bis: '01.10.2027', bedingungen_version: '2026-09-25-v3', zustimmung_zeitpunkt: '01.10.2026, 10:07' }
|
||||
assert.ok(loadTemplate('K01').blocks.includes('wartung_v3'), 'Block wartung_v3 deklariert')
|
||||
const v3 = renderMail('K01', base, { wartung_v3: true, sofortbeginn: true })
|
||||
assert.deepEqual(v3.problems, [])
|
||||
assert.match(v3.text, /• 1 E-Mail-Postfach/)
|
||||
assert.match(v3.text, /• 1 Stunde Arbeitszeit pro Monat/)
|
||||
assert.match(v3.text, /Dort sehen Sie jederzeit Ihr aktuelles Stundenkontingent\./)
|
||||
assert.doesNotMatch(v3.text, /beliebig viele|je bezahltem Monat|Zusatzspeicher/)
|
||||
assert.match(v3.text, /Ihre Zustimmung zu den Vertragsbedingungen \(Version 2026-09-25-v3\) einschließlich des Auftragsverarbeitungsvertrags haben wir am 01\.10\.2026, 10:07 Uhr erhalten\./)
|
||||
const v4 = renderMail('K01', { ...base, bedingungen_version: '2026-10-05-v4' }, { wartung: true, sofortbeginn: true })
|
||||
assert.match(v4.text, /• beliebig viele Postfächer/)
|
||||
assert.match(v4.text, /1 Stunde Arbeitszeit je bezahltem Monat/)
|
||||
assert.doesNotMatch(v4.text, /1 E-Mail-Postfach|pro Monat/)
|
||||
const h = renderMail('K01', { ...base, produkt: 'Hosting-Abo', preis: '15,00 € / Monat' }, { hosting: true, sofortbeginn: true })
|
||||
assert.doesNotMatch(h.text, /Stundenkontingent|Stunde Arbeitszeit/)
|
||||
})
|
||||
|
||||
test('K12: „Heute fällig“ nennt den Zusatzspeicher nur im Block zusatzspeicher', () => {
|
||||
const values = sampleValues(loadTemplate('K12'))
|
||||
assert.match(renderMail('K12', values, { zusatzspeicher: true }).text, /Monatsgebühr des Wartungs-Abos mit gebuchtem Zusatzspeicher, abzüglich der Gutschrift/)
|
||||
const ohne = renderMail('K12', values, {}).text
|
||||
assert.match(ohne, /Monatsgebühr des Wartungs-Abos, abzüglich der Gutschrift/)
|
||||
assert.doesNotMatch(ohne, /mit gebuchtem Zusatzspeicher/)
|
||||
})
|
||||
|
||||
test('T07: Hinweis auf nicht genutzte Arbeitszeit nur im Block wartung', () => {
|
||||
const values = { produkt: 'Wartungs-Abo', email: 'k@example.invalid', stripe_abo_id: 'sub_1', status: 'canceled', vertragsende_paragraph: '§ 11' }
|
||||
assert.ok(loadTemplate('T07').blocks.includes('wartung'), 'Block wartung deklariert')
|
||||
const w = renderMail('T07', values, { wartung: true })
|
||||
assert.deepEqual(w.problems, [])
|
||||
assert.match(w.text, /Nicht genutzte Arbeitszeit aus dem Stundenkontingent verfällt mit dem Vertragsende\. Gebuchter Zusatzspeicher endet mit dem Abo\./)
|
||||
const h = renderMail('T07', { ...values, produkt: 'Hosting-Abo' }, {})
|
||||
assert.deepEqual(h.problems, [])
|
||||
assert.match(h.text, /Gebuchter Zusatzspeicher endet mit dem Abo\./)
|
||||
assert.doesNotMatch(h.text, /Arbeitszeit|Stundenkontingent|Restguthaben/)
|
||||
})
|
||||
Reference in new issue
Block a user