Ö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:
1 parent
1d5a565e9f
commit
019833d385
6 files changed
+71
-19
No files matched your search
+24
-2
@@ -180,6 +180,27 @@ test('Team aktiviert eine abgeschaltete Funktion wieder: setup, Abschaltgrund ge
|
||||
assert.match(doc.adminNote, / Andrej: activate \| alte Notiz$/)
|
||||
})
|
||||
|
||||
// Merge mit TP2: die Aktionen abnahme und ticket gibt es fuer jede Funktion mit ticketFreischaltung; fuer die Zeiten darf
|
||||
// abnahme weder abschalten noch den Gratis-Pfad nehmen, sondern gibt in setup frei (Haken freischaltbar, Ersatz-Hash)
|
||||
test('Team „Freischalten (Abnahme)“ der Zeiten: ohne Zeiten 409 (bleibt setup), mit Zeiten active mit Ersatz-Hash, nie disabled', async () => {
|
||||
const doc = featureDoc('p1', { ticketId: 't_offen', einbau: 'angestossen' })
|
||||
aw.seed('workorders', { $id: 't_offen', woid: '10002', topic: 'Zeiten', status: 'Open', customerId: 'c1' })
|
||||
aw.seed('portalFeatures', doc)
|
||||
const zu = await aktion('abnahme')
|
||||
assert.equal(zu.status, 409, JSON.stringify(zu.body))
|
||||
assert.equal(zeitenDoc().state, 'setup')
|
||||
assert.equal(sink.sent.length, 0)
|
||||
|
||||
await mitZeiten(doc, EIN_PLAN())
|
||||
const ok = await aktion('abnahme')
|
||||
assert.equal(ok.status, 200, JSON.stringify(ok.body))
|
||||
assert.equal(ok.body.projects[0].features.zeiten.state, 'active')
|
||||
assert.equal(zeitenDoc().state, 'active')
|
||||
assert.match((await ladeZeiten(doc.$id)).ersatzHash, /^[0-9a-f]{16}$/)
|
||||
assert.equal(sink.sent.length, 1, 'K16 an den Kunden')
|
||||
assert.equal(ok.body.ersatzTicket, undefined, 'abnahme legt kein Ersatz-Ticket an')
|
||||
})
|
||||
|
||||
test('Aktivieren: fremdes oder unbekanntes Projekt 403, unbekannte Aktion 400, ohne Anmeldung 401, nichts entsteht', async () => {
|
||||
assert.equal((await aktion('activate', {}, { projectId: 'p3' })).status, 403)
|
||||
assert.equal((await aktion('activate', {}, { projectId: 'gibtsnicht' })).status, 403)
|
||||
@@ -527,9 +548,10 @@ test('adminView zeigt Pläne, team und hindernis (nur für zeiten)', async () =>
|
||||
assert.equal(z2.teamVersion, 0)
|
||||
assert.equal(z2.hindernis, 'zeiten_fehlen')
|
||||
|
||||
// andere Funktionen bekommen die Felder nicht
|
||||
// andere Funktionen bekommen die Zeiten-Felder nicht; hindernis tragen seit TP2 alle (null ausser beim Terminplaner in setup)
|
||||
for (const key of ['news', 'termine']) {
|
||||
for (const feld of ['plaene', 'team', 'teamVersion', 'hindernis']) assert.equal(feld in projekte[0].features[key], false, `${key}.${feld}`)
|
||||
for (const feld of ['plaene', 'team', 'teamVersion']) assert.equal(feld in projekte[0].features[key], false, `${key}.${feld}`)
|
||||
assert.equal(projekte[0].features[key].hindernis, null, `${key}.hindernis`)
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
Reference in new issue
Block a user