Öffnungszeiten: Tests und Belehrung nach dem Merge mit TP2

Zeiten nutzen die echte Widerrufsbelehrung wie der Terminplaner (der Platzhalter BELEHRUNG_PLATZHALTER ist
mit TP2 F7 entfallen). Gepinnte Listen als Vereinigung beider Seiten: K15-Blöcke, T16-Blöcke, legal-Schlüssel der
Projektliste, hindernis in der Team-Ansicht für alle Funktionen. Neue Tests: Abnahme (Freischalten) der Zeiten über den
Haken freischaltbar und mit Ersatz-Hash, abnahme gibt für Zeiten nie ab.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Sonnet 5.5 committed 2026-10-05 04:43:20 +00:00
1 parent 1d5a565e9f
commit 019833d385
6 files changed
+71 -19

No files matched your search

+32
View File
@@ -272,6 +272,38 @@ test('nachFreischaltung des Registers wird je freigeschaltetem Dokument mit dem
assert.match(logText(), /Haken kaputt/)
})
// ------------------------------------------------------------------------------ Freischalten (Abnahme) durch das Team
// Merge mit TP2: freischaltenNachAbnahme (WOMS "Freischalten (Abnahme)") gilt fuer jede Funktion mit ticketFreischaltung. Die
// Voraussetzung der Zeiten ist ihr Haken freischaltbar (eingetragene Zeiten), nicht Abo und Einstellung des Terminplaners.
test('Abnahme der Zeiten: ohne eingetragene Zeiten 409 und alles bleibt setup, auch ohne laufendes Wartungs-Abo', async () => {
const id = await einrichtung({ ticket: 'Open' })
const projectId = feld(id, 'projectId')
await assert.rejects(sf.freischaltenNachAbnahme({ customerId: 'c1', projectId, key: 'zeiten', by: 'Kenso', now: JETZT }), (err) => {
assert.equal(err.status, 409)
assert.match(err.message, /Voraussetzungen/)
return true
})
assert.equal(zustand(id), 'setup')
assert.equal(sink.sent.length, 0)
})
test('Abnahme der Zeiten: mit eingetragenen Zeiten active, K16, Ersatz-Hash (nachFreischaltung) und ohne Abo-Prüfung des Terminplaners', async () => {
const id = await einrichtung({ ticket: 'Open', zeiten: WOCHE })
const projectId = feld(id, 'projectId')
const vorher = await ladeZeiten(id)
assert.equal(vorher.ersatzHash, '')
const { doc, activated } = await sf.freischaltenNachAbnahme({ customerId: 'c1', projectId, key: 'zeiten', by: 'Kenso', now: JETZT })
assert.equal(activated, true)
assert.equal(doc.state, 'active')
assert.equal(zustand(id), 'active')
assert.equal(k16().length, 1)
assert.equal((await ladeZeiten(id)).ersatzHash, wochenplanHash(vorher.daten))
// schon aktiv: Erfolg ohne zweite Mail
assert.equal((await sf.freischaltenNachAbnahme({ customerId: 'c1', projectId, key: 'zeiten', now: JETZT })).activated, false)
assert.equal(k16().length, 1)
})
// ------------------------------------------------------------------------------------------- Selbstheilung
test('Selbstheilung: setup ohne ticketId ⇒ der Job legt das Ticket an (und sendet die K24)', async () => {