From 1cea719b8045c1aa0c040952c8d7659c6976d6ce Mon Sep 17 00:00:00 2001 From: riyadhafraa <49757212-riyadhafraa@users.noreply.replit.com> Date: Wed, 22 Apr 2026 06:38:13 +0000 Subject: [PATCH] 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. --- artifacts/api-server/tests/service-orders.test.mjs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/artifacts/api-server/tests/service-orders.test.mjs b/artifacts/api-server/tests/service-orders.test.mjs index 3a4a2fbd..9f8560b5 100644 --- a/artifacts/api-server/tests/service-orders.test.mjs +++ b/artifacts/api-server/tests/service-orders.test.mjs @@ -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();