Öffnungszeiten: Behalten nur ohne Abo anbieten (kein_abo)
Behalten (30 €) gab es bei jedem inklusive false. nicht_aktiv und gekuendigt heißen aber, dass das Wartungs-Abo läuft (Server: 409 Abo läuft wieder). Jetzt gilt an allen fünf Stellen (Kachel, Karte, Behalten-Seite, Weg aus der Kachel, Abgeschaltet-Karte) dasselbe Prädikat: inklusive false UND grund kein_abo; sonst „Abo läuft wieder“ ohne Bezahlknopf. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
7bb918390a
commit
cee44d6852
5 files changed
+166
-20
No files matched your search
@@ -211,6 +211,47 @@ test('aboEndeAt: Behalten-Hinweis mit Datum', async () => {
|
||||
assert.doesNotMatch(nurText(kaputt), /bis NaN|Invalid|undefined/)
|
||||
})
|
||||
|
||||
// Fix Runde 1: Behalten (30 €) gibt es nur ohne Abo (inklusive false UND grund kein_abo). nicht_aktiv und gekuendigt heissen, dass das Abo läuft (R20/R25).
|
||||
test('aboEndeAt bei laufendem Abo (nicht_aktiv, gekuendigt): „Abo läuft wieder“, nie ein Bezahlknopf', async () => {
|
||||
for (const grund of ['nicht_aktiv', 'gekuendigt']) {
|
||||
for (const state of ['active', 'setup']) {
|
||||
const k = kachel((await render([projekt('p1', state, { aboEndeAt: '2026-10-01T10:00:00.000Z', einbau: 'angestossen' }, { zeitenLeer: false })], { zeiten: ANGEBOT(false, grund) })).html)
|
||||
const was = `${grund}/${state}`
|
||||
assert.match(nurText(k), /Dein Wartungs-Abo läuft wieder – Öffnungszeiten live ist darin enthalten\./, was)
|
||||
assert.deepEqual(knoepfe(k), ['Zeiten bearbeiten'], was)
|
||||
assert.doesNotMatch(nurText(k), /ist beendet|behalte die Funktion|für einmalig|Für 30 €|30 €/, was)
|
||||
assert.doesNotMatch(k, /data-zeiten-weg/, was)
|
||||
}
|
||||
}
|
||||
// unbekannter Grund oder kein Grund (false, null): nicht auf Verdacht bezahlen lassen
|
||||
for (const grund of [null, 'unbekannt']) {
|
||||
const k = kachel((await render([projekt('p1', 'active', { aboEndeAt: '2026-10-01T10:00:00.000Z' }, { zeitenLeer: false })], { zeiten: ANGEBOT(false, grund) })).html)
|
||||
assert.deepEqual(knoepfe(k), ['Zeiten bearbeiten'], String(grund))
|
||||
assert.doesNotMatch(nurText(k), /Für 30 €|behalte die Funktion/, String(grund))
|
||||
}
|
||||
// Gegenprobe: ohne Abo (kein_abo) bleibt es beim Angebot
|
||||
const ohne = kachel((await render([projekt('p1', 'active', { aboEndeAt: '2026-10-01T10:00:00.000Z' }, { zeitenLeer: false })], { zeiten: ANGEBOT(false, 'kein_abo') })).html)
|
||||
assert.deepEqual(knoepfe(ohne), ['Zeiten bearbeiten', 'Für 30 € behalten'])
|
||||
})
|
||||
|
||||
test('disabled abo_ende mit Daten bei laufendem Abo (nicht_aktiv, gekuendigt): kein „Für 30 € wieder einschalten“, stattdessen „Abo läuft wieder“', async () => {
|
||||
const feature = { disabledReason: 'abo_ende', disabledAt: '2026-10-04T10:00:00.000Z', loeschungAm: '2999-01-01' }
|
||||
for (const grund of ['nicht_aktiv', 'gekuendigt']) {
|
||||
const k = kachel((await render([projekt('p1', 'disabled', feature, { zeitenLeer: false })], { zeiten: ANGEBOT(false, grund) })).html)
|
||||
assert.doesNotMatch(k, /Für 30 €|data-zeiten-weg|<button/, grund)
|
||||
assert.match(nurText(k), /Dein Wartungs-Abo läuft wieder – wir schalten Öffnungszeiten live automatisch wieder ein/, grund)
|
||||
assert.match(nurText(k), /Deine Eingaben bleiben bis 01\.01\.2999 gespeichert/, grund)
|
||||
}
|
||||
for (const grund of [null, 'unbekannt']) {
|
||||
const k = kachel((await render([projekt('p1', 'disabled', feature, { zeitenLeer: false })], { zeiten: ANGEBOT(false, grund) })).html)
|
||||
assert.doesNotMatch(k, /Für 30 €|<button/, String(grund))
|
||||
assert.match(nurText(k), /Gerade nicht prüfbar/, String(grund))
|
||||
}
|
||||
// Gegenprobe: kein_abo bietet es an
|
||||
const ohne = kachel((await render([projekt('p1', 'disabled', feature, { zeitenLeer: false })], { zeiten: ANGEBOT(false, 'kein_abo') })).html)
|
||||
assert.deepEqual(knoepfe(ohne), ['Für 30 € wieder einschalten'])
|
||||
})
|
||||
|
||||
test('ordered: „Zahlung wird bestätigt …“', async () => {
|
||||
const k = kachel((await render([projekt('p1', 'ordered', { unlockedBy: null })], { zeiten: ANGEBOT(false, 'kein_abo') })).html)
|
||||
assert.match(k, /fn-pill fn-pill-setup">Zahlung offen</)
|
||||
|
||||
Reference in new issue
Block a user