Öffnungszeiten: Status "Leisten live – Einbau läuft" nur bei einbau angestossen
In der Einrichtung nennt der Statustext "Leisten live – Einbau läuft" nur noch, wenn der Neubau angestossen ist. Bei einbau manuell oder leer steht "Einbau läuft (Team setzt die Skript-Zeile von Hand)"; "wartet auf die Zeiten des Kunden" geht weiter vor. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
3d67aa88cf
commit
919d96f7a0
2 files changed
+29
-10
No files matched your search
@@ -4,6 +4,8 @@
|
||||
import { berlinYmd, fmtYmd } from './format'
|
||||
|
||||
const TEXT_EINBAU = 'Leisten live – Einbau läuft'
|
||||
/** einbau 'manuell' oder leer: der Neubau ist nicht angestossen, die Skript-Zeile kommt nicht von selbst auf die Seite. */
|
||||
const TEXT_VON_HAND = 'Einbau läuft (Team setzt die Skript-Zeile von Hand)'
|
||||
const TEXT_WARTET = 'wartet auf die Zeiten des Kunden'
|
||||
/** Tage zwischen dem erkannten Abo-Ende (aboEndeAt) und dem Abschalten (Portal: zeiten/aboAbgleich.js, FRIST_TAGE). */
|
||||
const FRIST_TAGE = 30
|
||||
@@ -25,8 +27,9 @@ function aboEndeText(aboEndeAt) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Statustext unter dem Abzeichen (Portal: project.features.zeiten): in der Einrichtung "Leisten live – Einbau läuft" bzw. bei
|
||||
* hindernis 'zeiten_fehlen' "wartet auf die Zeiten des Kunden"; in Einrichtung und aktiv zusaetzlich der Abo-Ende-Hinweis mit Frist
|
||||
* Statustext unter dem Abzeichen (Portal: project.features.zeiten): in der Einrichtung bei hindernis 'zeiten_fehlen' "wartet auf die
|
||||
* Zeiten des Kunden" (geht vor), sonst "Leisten live – Einbau läuft" nur bei einbau 'angestossen', bei 'manuell' oder leer "Einbau
|
||||
* läuft (Team setzt die Skript-Zeile von Hand)"; in Einrichtung und aktiv zusaetzlich der Abo-Ende-Hinweis mit Frist
|
||||
* (feature.aboEndeAt), durch " · " getrennt. In allen anderen Zustaenden '': Grund und Loeschdatum einer Abschaltung nennt
|
||||
* abgeschaltetText (funktionenView). Ohne Anrede, nie "24 Uhr".
|
||||
*/
|
||||
@@ -34,7 +37,7 @@ export function zeitenStatusText(feature) {
|
||||
const state = feature?.state
|
||||
if (state !== 'setup' && state !== 'active') return ''
|
||||
const teile = []
|
||||
if (state === 'setup') teile.push(feature.hindernis === 'zeiten_fehlen' ? TEXT_WARTET : TEXT_EINBAU)
|
||||
if (state === 'setup') teile.push(feature.hindernis === 'zeiten_fehlen' ? TEXT_WARTET : feature.einbau === 'angestossen' ? TEXT_EINBAU : TEXT_VON_HAND)
|
||||
if (feature.aboEndeAt) teile.push(aboEndeText(feature.aboEndeAt))
|
||||
return teile.join(' · ')
|
||||
}
|
||||
|
||||
@@ -10,20 +10,33 @@ const {
|
||||
} = await loadModule('src/lib/zeitenView.js')
|
||||
|
||||
const EINBAU = 'Leisten live – Einbau läuft'
|
||||
const VON_HAND = 'Einbau läuft (Team setzt die Skript-Zeile von Hand)'
|
||||
const WARTET = 'wartet auf die Zeiten des Kunden'
|
||||
|
||||
test('zeitenStatusText: Einrichtung ohne Hindernis – Leisten sind live, der Einbau läuft', () => {
|
||||
assert.equal(zeitenStatusText({ state: 'setup', hindernis: null }), EINBAU)
|
||||
assert.equal(zeitenStatusText({ state: 'setup' }), EINBAU, 'ohne Feld hindernis')
|
||||
assert.equal(zeitenStatusText({ state: 'setup', hindernis: '' }), EINBAU)
|
||||
test('zeitenStatusText: Einrichtung ohne Hindernis, Einbau angestossen – Leisten sind live, der Einbau läuft', () => {
|
||||
assert.equal(zeitenStatusText({ state: 'setup', hindernis: null, einbau: 'angestossen' }), EINBAU)
|
||||
assert.equal(zeitenStatusText({ state: 'setup', einbau: 'angestossen' }), EINBAU, 'ohne Feld hindernis')
|
||||
assert.equal(zeitenStatusText({ state: 'setup', hindernis: '', einbau: 'angestossen' }), EINBAU)
|
||||
})
|
||||
|
||||
test('zeitenStatusText: Einrichtung mit hindernis "zeiten_fehlen" – wartet auf die Zeiten des Kunden', () => {
|
||||
test('zeitenStatusText: Einrichtung mit einbau manuell oder leer – nie "Leisten live", das Team setzt die Zeile von Hand', () => {
|
||||
for (const einbau of ['manuell', '', null, undefined, 'irgendwas_neues']) {
|
||||
assert.equal(zeitenStatusText({ state: 'setup', hindernis: null, einbau }), VON_HAND, JSON.stringify(einbau))
|
||||
}
|
||||
assert.equal(zeitenStatusText({ state: 'setup' }), VON_HAND, 'ohne Feld einbau')
|
||||
assert.doesNotMatch(VON_HAND, /Leisten live/)
|
||||
})
|
||||
|
||||
test('zeitenStatusText: Einrichtung mit hindernis "zeiten_fehlen" – wartet auf die Zeiten des Kunden (geht jedem Einbau-Text vor)', () => {
|
||||
assert.equal(zeitenStatusText({ state: 'setup', hindernis: 'zeiten_fehlen' }), WARTET)
|
||||
for (const einbau of ['angestossen', 'manuell', '', null]) {
|
||||
assert.equal(zeitenStatusText({ state: 'setup', hindernis: 'zeiten_fehlen', einbau }), WARTET, JSON.stringify(einbau))
|
||||
}
|
||||
})
|
||||
|
||||
test('zeitenStatusText: unbekanntes Hindernis zeigt nichts Erfundenes, sondern den Einbau-Text', () => {
|
||||
assert.equal(zeitenStatusText({ state: 'setup', hindernis: 'irgendwas_neues' }), EINBAU)
|
||||
assert.equal(zeitenStatusText({ state: 'setup', hindernis: 'irgendwas_neues', einbau: 'angestossen' }), EINBAU)
|
||||
assert.equal(zeitenStatusText({ state: 'setup', hindernis: 'irgendwas_neues', einbau: 'manuell' }), VON_HAND)
|
||||
})
|
||||
|
||||
test('zeitenStatusText: Abo-Ende nennt die Frist (Berliner Tag des Abo-Endes plus 30 Tage)', () => {
|
||||
@@ -42,7 +55,8 @@ test('zeitenStatusText: Abo-Ende nennt die Frist (Berliner Tag des Abo-Endes plu
|
||||
test('zeitenStatusText: Abo-Ende in der Einrichtung steht zusätzlich zum Einbau- bzw. Warte-Text', () => {
|
||||
const aboEndeAt = '2026-10-04T10:00:00.000Z'
|
||||
const frist = 'Abo beendet – Abschaltung am 03.11.2026, falls der Kunde die Funktion nicht behält'
|
||||
assert.equal(zeitenStatusText({ state: 'setup', hindernis: null, aboEndeAt }), `${EINBAU} · ${frist}`)
|
||||
assert.equal(zeitenStatusText({ state: 'setup', hindernis: null, einbau: 'angestossen', aboEndeAt }), `${EINBAU} · ${frist}`)
|
||||
assert.equal(zeitenStatusText({ state: 'setup', hindernis: null, einbau: 'manuell', aboEndeAt }), `${VON_HAND} · ${frist}`)
|
||||
assert.equal(zeitenStatusText({ state: 'setup', hindernis: 'zeiten_fehlen', aboEndeAt }), `${WARTET} · ${frist}`)
|
||||
})
|
||||
|
||||
@@ -66,6 +80,8 @@ test('zeitenStatusText: aktiv ohne Abo-Ende, aus, bestellt, abgeschaltet, ohne A
|
||||
test('zeitenStatusText: kein Text nennt "24 Uhr"', () => {
|
||||
for (const feature of [
|
||||
{ state: 'setup' },
|
||||
{ state: 'setup', einbau: 'angestossen' },
|
||||
{ state: 'setup', einbau: 'manuell' },
|
||||
{ state: 'setup', hindernis: 'zeiten_fehlen' },
|
||||
{ state: 'active', aboEndeAt: '2026-10-04T10:00:00.000Z' },
|
||||
{ state: 'setup', hindernis: 'zeiten_fehlen', aboEndeAt: '2026-10-04T22:30:00.000Z' },
|
||||
|
||||
Reference in new issue
Block a user