Wechsel Hosting → Wartung: neuer Abbuchungstag, Gutschrift, 12 neue Monate

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-09-28 11:30:21 +00:00
1 parent 379cc26dcd
commit 188db4b3c1
15 files changed
+2035 -12

No files matched your search

+18
View File
@@ -19,6 +19,7 @@ const {
completeContractEvent,
updateContractEvent,
eventIdFor,
getContractEvent,
} = await import('../server/services/contractEvents.js')
test('Ereignis speichern und lesen (details als JSON)', async () => {
@@ -124,6 +125,23 @@ test('Ereignis aktualisieren: Status setzen, details zusammenfuehren', async ()
assert.deepEqual(JSON.parse(updated.details), { von: 'wartung', zu: 'hosting', grund: 'Zahlung fehlgeschlagen' })
})
// Task 9: ein einzelnes Ereignis lesen (markSwitchFailed, Skript fuers Team), details geparst wie in der Liste
test('Einzelnes Ereignis lesen: details geparst, unbekannte id 404', async () => {
const created = await recordContractEvent({
customerId: 'c5',
subscriptionId: 'sub_5',
type: 'wechsel',
productKey: 'wartung',
details: { from: 'hosting', paymentUrl: 'https://pay.example/inv' },
status: 'offen',
})
const event = await getContractEvent(created.$id)
assert.equal(event.$id, created.$id)
assert.equal(event.status, 'offen')
assert.deepEqual(event.details, { from: 'hosting', paymentUrl: 'https://pay.example/inv' })
await assert.rejects(getContractEvent('gibt-es-nicht'), (e) => e.status === 404)
})
// F05: dieselbe id zweimal speichern (z. B. Webhook-Wiederholung) ist kein Fehler, sondern liefert
// das schon vorhandene Dokument zurueck, ohne ein zweites anzulegen
test('Ereignis mit vorhandener id (409): liefert das schon gespeicherte Dokument', async () => {