Öffnungszeiten: Mails K24–K27 heißen jetzt K27–K30, Feld k24At heißt einschaltMailAt
K24–K26 sind seit dem Webshop-Livegang (main) vergeben; der Mail-Lader sucht die Vorlage über den Dateianfang, doppelte Nummern hätten die falsche Mail geschickt. Das Feld ist noch nicht in der Produktion angelegt (zeiten-setup.mjs lief noch nicht), daher jetzt ein sprechender Name. Spec und Plan behalten die alten Nummern (Hinweis oben im Dokument). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
ea4457e6a4
commit
c7cd436ec2
34 files changed
+359
-354
No files matched your search
@@ -18,7 +18,7 @@ const aw = await startAppwriteMock({
|
||||
// Datumsfelder wie in Appwrite: Unlesbares oder '' waere dort ein 400 (leeren geht nur mit null)
|
||||
datetimes: {
|
||||
...ZEITEN_DATETIMES,
|
||||
portalFeatures: ['orderedAt', 'activatedAt', 'disabledAt', 'consentAt', 'aboEndeMailAt', 'aboEndeAt', 'k24At'],
|
||||
portalFeatures: ['orderedAt', 'activatedAt', 'disabledAt', 'consentAt', 'aboEndeMailAt', 'aboEndeAt', 'einschaltMailAt'],
|
||||
},
|
||||
defaultLimit: 25,
|
||||
})
|
||||
@@ -123,7 +123,7 @@ afterEach(() => {
|
||||
|
||||
// ------------------------------------------------------------------------------------------------ Aktivieren
|
||||
|
||||
test('Team aktiviert zeiten: setup, unlockedBy team, Neubau, Ticket, kein K24', async () => {
|
||||
test('Team aktiviert zeiten: setup, unlockedBy team, Neubau, Ticket, kein K27', async () => {
|
||||
const res = await aktion('activate', { note: 'Pilot' })
|
||||
assert.equal(res.status, 200, JSON.stringify(res.body))
|
||||
assert.deepEqual(res.body.projects.map((p) => p.projectId), ['p1'])
|
||||
@@ -142,7 +142,7 @@ test('Team aktiviert zeiten: setup, unlockedBy team, Neubau, Ticket, kein K24',
|
||||
assert.match(doc.siteKey, /^[a-z2-7]{16}$/)
|
||||
assert.equal(doc.einbau, 'angestossen')
|
||||
assert.ok(doc.ticketId)
|
||||
assert.ok(!doc.k24At, 'keine K24 an den Kunden')
|
||||
assert.ok(!doc.einschaltMailAt, 'keine K27 an den Kunden')
|
||||
assert.equal(aw.docs('portalFeatures').size, 1, 'kein Dokument fuer News oder Terminplaner')
|
||||
assert.equal(aw.docs('featureConsents').size, 0, 'kein Zustimmungsnachweis fuer das Team')
|
||||
|
||||
@@ -202,7 +202,7 @@ test('Team „Freischalten (Abnahme)“ der Zeiten: ohne Zeiten 409 (bleibt setu
|
||||
})
|
||||
|
||||
// Review N8 / I1: „Ticket nachlegen“ lief für Abo und Team in den Zahlungsweg und scheiterte immer mit 409 „keine Zahlung vermerkt“
|
||||
test('Team „Ticket nachlegen“ der Zeiten (Team, setup, ohne Ticket): kein 409, Neubau und Einbau-Ticket kommen über das Nachholen, keine K24', async () => {
|
||||
test('Team „Ticket nachlegen“ der Zeiten (Team, setup, ohne Ticket): kein 409, Neubau und Einbau-Ticket kommen über das Nachholen, keine K27', async () => {
|
||||
aw.seed('portalFeatures', featureDoc('p1', { state: 'setup', unlockedBy: 'team', einbau: '' }))
|
||||
const res = await aktion('ticket')
|
||||
assert.equal(res.status, 200, JSON.stringify(res.body))
|
||||
@@ -213,7 +213,7 @@ test('Team „Ticket nachlegen“ der Zeiten (Team, setup, ohne Ticket): kein 40
|
||||
assert.equal(rebuilds.length, 1)
|
||||
assert.equal(res.body.projects[0].features.zeiten.ticketMissing, false)
|
||||
assert.match(doc.adminNote, / Andrej: ticket$/)
|
||||
assert.equal(sink.sent.length, 0, 'unlockedBy team: keine K24')
|
||||
assert.equal(sink.sent.length, 0, 'unlockedBy team: keine K27')
|
||||
|
||||
// zweiter Klick: das Ticket ist da, nichts entsteht neu
|
||||
assert.equal((await aktion('ticket')).status, 200)
|
||||
@@ -221,14 +221,14 @@ test('Team „Ticket nachlegen“ der Zeiten (Team, setup, ohne Ticket): kein 40
|
||||
assert.equal(rebuilds.length, 1)
|
||||
})
|
||||
|
||||
test('Team „Ticket nachlegen“ der Zeiten (Abo, setup, ohne Ticket): Ticket und K24 über das Nachholen, nicht über den Zahlungsweg', async () => {
|
||||
test('Team „Ticket nachlegen“ der Zeiten (Abo, setup, ohne Ticket): Ticket und K27 über das Nachholen, nicht über den Zahlungsweg', async () => {
|
||||
aw.seed('portalFeatures', featureDoc('p1', { state: 'setup', unlockedBy: 'abo', einbau: 'angestossen' }))
|
||||
const res = await aktion('ticket')
|
||||
assert.equal(res.status, 200, JSON.stringify(res.body))
|
||||
assert.ok(zeitenDoc().ticketId)
|
||||
assert.equal(tickets().length, 1)
|
||||
assert.equal(sink.sent.length, 1, 'K24 an den Kunden (unlockedBy abo)')
|
||||
assert.ok(zeitenDoc().k24At)
|
||||
assert.equal(sink.sent.length, 1, 'K27 an den Kunden (unlockedBy abo)')
|
||||
assert.ok(zeitenDoc().einschaltMailAt)
|
||||
})
|
||||
|
||||
test('Team „Ticket nachlegen“ der Zeiten (gekauft, ohne Zahlungsvermerk): bleibt der Zahlungsweg (409)', async () => {
|
||||
|
||||
Reference in new issue
Block a user