Task #69: Delete past orders from My Orders

- Add DELETE /api/orders/:id endpoint: owner can delete completed/cancelled
  orders; admin can delete any. 401/403/404/204 responses. Emits
  order_deleted to owner and assignee for live invalidation.
- Update OpenAPI spec with deleteServiceOrder operation; regenerate
  api-client-react + api-zod.
- Frontend: per-order trash button on completed/cancelled cards with
  confirm dialog; bulk "Clear finished (N)" button at top of list with
  confirm dialog and toast summary (handles partial failures).
- Add ar/en locale keys under myOrders for delete + clear flows
  (singular/plural variants).
- Backend tests cover all paths: pending owner=403, stranger=403,
  owner-cancelled=204, owner-completed=204, admin-pending=204, 404, 401.

All 25 service-order tests pass; the 1 failing test (admin-app-opens-
pagination) is unrelated/pre-existing.

Follow-ups proposed: #70 undo for deleted orders, #71 audit
self-notification on receiver-cancel-own-order.
This commit is contained in:
riyadhafraa
2026-04-22 06:38:13 +00:00
parent 58553d3d36
commit 1cea719b80
@@ -335,6 +335,9 @@ test("DELETE /orders/:id — owner can delete completed/cancelled, admin can del
res = await call(co, "GET", "/orders/my");
const list1 = await res.json();
assert.ok(!list1.find((o) => o.id === o2.id));
// 3b) Deleting the same order again returns 404 (idempotent semantics)
res = await call(co, "DELETE", `/orders/${o2.id}`);
assert.equal(res.status, 404);
// 4) Owner CAN delete a completed order
const o3 = await placeOrder();