K22: Abo-Ende nur bei beendetem Wartungs-Abo (nicht das Datum eines Hosting-Abos)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
bea07e73b1
commit
be007af7d0
2 files changed
+10
-1
No files matched your search
@@ -139,7 +139,8 @@ export async function meldeAboEnde(doc, { lage = null, now, onGesendet = null })
|
|||||||
const beginn = new Date(Number.isFinite(zeitMs(doc.disabledAt)) ? zeitMs(doc.disabledAt) : nowMs) // disabledAt fehlt nie, ausser bei Altdaten
|
const beginn = new Date(Number.isFinite(zeitMs(doc.disabledAt)) ? zeitMs(doc.disabledAt) : nowMs) // disabledAt fehlt nie, ausser bei Altdaten
|
||||||
// enddatum ist der Tag des Abo-Endes (lage.endedAt: endedAt || canceledAt des Abos), wenn bekannt - das Abschalten kann Tage danach liegen;
|
// enddatum ist der Tag des Abo-Endes (lage.endedAt: endedAt || canceledAt des Abos), wenn bekannt - das Abschalten kann Tage danach liegen;
|
||||||
// sonst (Sofortpfad, Nachlauf ohne Abo-Lesen, kein lesbares Datum) der Tag des Abschaltens. loeschdatum bleibt 30 Tage nach dem Abschalten.
|
// sonst (Sofortpfad, Nachlauf ohne Abo-Lesen, kein lesbares Datum) der Tag des Abschaltens. loeschdatum bleibt 30 Tage nach dem Abschalten.
|
||||||
const aboEnde = zeitMs(lage?.endedAt)
|
// Nur bei art 'beendet' ist lage.endedAt das Ende des Wartungs-Abos; bei 'hosting' gehoert es zum Hosting-Abo (etwa eine vorgemerkte Kuendigung).
|
||||||
|
const aboEnde = lage?.art === 'beendet' ? zeitMs(lage.endedAt) : NaN
|
||||||
const ende = Number.isFinite(aboEnde) ? new Date(aboEnde) : beginn
|
const ende = Number.isFinite(aboEnde) ? new Date(aboEnde) : beginn
|
||||||
const grundBlock = vorEinrichtung
|
const grundBlock = vorEinrichtung
|
||||||
? { vor_einrichtung: true }
|
? { vor_einrichtung: true }
|
||||||
|
|||||||
@@ -632,6 +632,14 @@ test('C3: ohne endedAt gilt canceledAt, ohne beides der Tag des Abschaltens (dis
|
|||||||
assert.match(mails().at(-1).text, /weil Dein Wartungs-Abo am 05\.10\.2026 beendet wurde/, 'unlesbares endedAt: disabledAt')
|
assert.match(mails().at(-1).text, /weil Dein Wartungs-Abo am 05\.10\.2026 beendet wurde/, 'unlesbares endedAt: disabledAt')
|
||||||
})
|
})
|
||||||
|
|
||||||
|
test('C3: bei einem Hosting-Abo nennt K22 den Tag des Abschaltens, nicht das Kuendigungsdatum des Hosting-Abos', async () => {
|
||||||
|
const id = legeFunktion(1, { state: 'disabled', enabled: false, disabledReason: 'abo_ende', disabledAt: JETZT.toISOString() })
|
||||||
|
assert.equal(await meldeAboEnde(funktion(id), { lage: { laeuft: false, art: 'hosting', endedAt: AM_ABO_ENDE.toISOString() }, now: JETZT }), true)
|
||||||
|
const text = mails().at(-1).text
|
||||||
|
assert.match(text, /05\.10\.2026/, 'Tag des Abschaltens')
|
||||||
|
assert.doesNotMatch(text, /02\.10\.2026/, 'nicht das Datum des Hosting-Abos')
|
||||||
|
})
|
||||||
|
|
||||||
test('C3: K22 vor_einrichtung nennt ebenfalls das Abo-Ende', async () => {
|
test('C3: K22 vor_einrichtung nennt ebenfalls das Abo-Ende', async () => {
|
||||||
legeAufbau(1)
|
legeAufbau(1)
|
||||||
wartung('canceled', { endedAt: AM_ABO_ENDE.toISOString() })
|
wartung('canceled', { endedAt: AM_ABO_ENDE.toISOString() })
|
||||||
|
|||||||
Reference in new issue
Block a user