Shop Review A M2: Bestellaktionen, Erstattung und Widerruf erledigt auch bei abgeschaltetem Shop
Die Routen aktion, erstatten und widerrufe/erledigt akzeptieren jetzt auch den Zustand disabled; Einstellungen, Artikel und Oeffnen bleiben gesperrt. Die Oberflaeche laesst Bestellungen und Widerrufe bei abgeschaltetem Shop bearbeitbar (ctx.abwickeln), der Hinweis nennt es. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
21805c9a93
commit
c6706f88ff
6 files changed
+42
-15
No files matched your search
@@ -565,19 +565,32 @@ test('Routen: CSV als Download mit BOM, Dateiname und Zeitraum; ungültiges Datu
|
||||
assert.equal((await send('GET', `/api/shop/bestellungen.csv?projectId=${PROJEKT}`)).status, 401)
|
||||
})
|
||||
|
||||
test('Routen: deaktivierter Shop - Lesen und CSV gehen, Schreiben 409', async () => {
|
||||
test('Routen M2: deaktivierter Shop - Lesen, CSV, Status ändern, Erstatten und „Widerruf erledigt“ gehen weiter; Einstellungen und Artikel bleiben gesperrt', async () => {
|
||||
const id = bestellung()
|
||||
aw.seed('shopWiderrufe', { $id: 'w1', shopId, customerId: KUNDE, bestellnummer: '26-A', name: 'Alt', email: 'alt@example.com', nachricht: '', eingangAt: nach(1).toISOString() })
|
||||
await updateDocument(config.collections.portalFeatures, feature.$id, sf.stateFields('disabled'))
|
||||
assert.equal((await lesen('bestellungen')).status, 200)
|
||||
assert.equal((await lesen(`bestellungen/${id}`)).status, 200)
|
||||
assert.equal((await lesen('bestellungen.csv')).status, 200)
|
||||
assert.equal((await lesen('widerrufe')).status, 200)
|
||||
for (const [pfad, body] of [[`bestellungen/${id}/aktion`, { aktion: 'abgeschlossen' }], [`bestellungen/${id}/erstatten`, {}], ['widerrufe/w1/erledigt', {}]]) {
|
||||
const res = await schreiben(pfad, body)
|
||||
|
||||
const versand = await schreiben(`bestellungen/${id}/aktion`, { aktion: 'versendet' })
|
||||
assert.equal(versand.status, 200)
|
||||
assert.equal(order(id).status, 'versendet')
|
||||
const teil = await schreiben(`bestellungen/${id}/erstatten`, { betragCent: 300 })
|
||||
assert.deepEqual([teil.status, teil.body.voll], [200, false])
|
||||
assert.equal(refunds().length, 1)
|
||||
const rest = await schreiben(`bestellungen/${id}/erstatten`, {})
|
||||
assert.deepEqual([rest.status, rest.body.voll], [200, true])
|
||||
const erledigt = await schreiben('widerrufe/w1/erledigt')
|
||||
assert.equal(erledigt.status, 200)
|
||||
assert.ok(erledigt.body.widerruf.bearbeitetAt)
|
||||
|
||||
// Alles andere, was verwaltet oder geoeffnet wird, bleibt gesperrt
|
||||
for (const [methode, pfad, body] of [['POST', 'produkte', { produkt: { name: 'X', preisCent: 100 } }], ['PUT', 'einstellungen', { einstellungen: {} }], ['POST', 'oeffnen', { offen: true }]]) {
|
||||
const res = await send(methode, `/api/shop/${pfad}`, { cookie, body: { projectId: PROJEKT, ...body } })
|
||||
assert.deepEqual([res.status, res.body.code], [409, 'nicht_eingerichtet'], pfad)
|
||||
}
|
||||
assert.equal(order(id).status, 'bezahlt')
|
||||
assert.equal(refunds().length, 0)
|
||||
})
|
||||
|
||||
test('Routen: Widerrufe - Liste (neueste zuerst, nur eigener Shop) und als erledigt markieren', async () => {
|
||||
|
||||
Reference in new issue
Block a user