Buchungskalender: Zustimmungs-Test streng, Online-Zahlung nur beim Einschalten prüfen

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
knsoandClaude Opus 5.5 committed 2026-10-07 14:32:20 +00:00
1 parent 32cffb3518
commit e3b399e003
3 files changed
+17 -5

No files matched your search

+16 -3
View File
@@ -581,9 +581,13 @@ test('Zustimmung: ohne rechnungAuftrag verweigern freigeben und bucheVerbindlich
assert.equal(r.body.fehler, 'zustimmung_fehlt')
assert.equal(aw.docs('ukAnfragen').get('a1').status, 'neu')
const ab = await import('../server/services/unterkunft/ablauf.js')
anfrage('a2', { status: 'freigegeben', tokenHash: 'x', fristAt: new Date(Date.now() + 86400000).toISOString(), posten: JSON.stringify(POSTEN), summen: JSON.stringify({ bruttoCent: 20000, nettoCent: 20000, ust: [] }) })
const ctx = { featureId: FEATURE, einstellungen: { ...EINST } }
await assert.rejects(ab.bucheVerbindlich(ctx, 'a2', 'x', { rechnungsadresse: {}, zahlart: 'vorort' }), (e) => e instanceof UkFehler && e.code === 'zustimmung_fehlt' || e.code === 'nicht_gefunden')
const { token, hash } = (await import('../server/services/unterkunft/token.js')).neuesToken()
anfrage('a2', { status: 'freigegeben', tokenHash: hash, fristAt: new Date(Date.now() + 86400000).toISOString(), posten: JSON.stringify(POSTEN), summen: JSON.stringify({ bruttoCent: 20000, nettoCent: 20000, ust: [] }) })
const ctx = { featureId: FEATURE, einstellungen: { ...EINST, rechnungAuftragAt: null } }
await assert.rejects(
ab.bucheVerbindlich(ctx, 'a2', token, { rechnungsadresse: { name: 'Eva', strasse: 'Weg 1', plz: '12345', ort: 'Berlin', land: 'DE' }, zahlart: 'vorort' }),
(e) => e instanceof UkFehler && e.status === 409 && e.code === 'zustimmung_fehlt',
)
assert.equal(aw.docs('ukAnfragen').get('a2').status, 'freigegeben')
assert.equal(aw.docs('ukRechnungen').size, 0)
})
@@ -597,4 +601,13 @@ test('Online-Zahlung: nur mit aktivem Stripe-Konto, sonst 409 mit felder.onlineZ
assert.equal(r.status, 409)
assert.ok(r.body.felder.onlineZahlung)
assert.notEqual(aw.docs('ukEinstellungen').get(FEATURE).onlineZahlung, true)
// ohne Konto ebenfalls 409
aw.seed('ukEinstellungen', { $id: FEATURE, featureId: FEATURE, ...EINST })
const ohne = await put('/einstellungen', { onlineZahlung: true })
assert.equal(ohne.status, 409)
assert.ok(ohne.body.felder.onlineZahlung)
// bereits eingeschaltet: andere Aenderungen scheitern nicht, auch wenn Stripe inaktiv ist
aw.seed('ukEinstellungen', { $id: FEATURE, featureId: FEATURE, ...EINST, onlineZahlung: true })
assert.equal((await put('/einstellungen', { telefon: '123' })).status, 200)
assert.equal((await put('/einstellungen', { onlineZahlung: true })).status, 200)
})