diff --git a/src/app/api/v1/buyer-tasks/route.test.ts b/src/app/api/v1/buyer-tasks/route.test.ts index 678d568..393a21e 100644 --- a/src/app/api/v1/buyer-tasks/route.test.ts +++ b/src/app/api/v1/buyer-tasks/route.test.ts @@ -46,6 +46,36 @@ describe("GET /api/v1/buyer-tasks", () => { expect(body.groups[0].supplierName).toBe("Steel Co"); }); + it("returns mail_failed groups when tab=po_draft (operator can retry from buyer-tasks)", async () => { + vi.mocked(listBuyerTasks).mockResolvedValue([ + { + groupId: "order-1::sup-1", + orderId: "order-1", + orderNumber: "ORD-001", + supplierId: "sup-1", + supplierName: "Steel Co", + customerName: "J. Smith", + companyName: "Acme", + items: [], + itemCount: 1, + totalCost: 50, + purchaseOrderId: "po-1", + poStatus: "mail_failed", + poNumber: "PO-26080301", + supplierEmail: "orders@steelco.example", + emailError: "[webhook] Webhook returned HTTP 502", + step: "po_draft", + }, + ]); + + const res = await GET(makeRequest("po_draft") as never); + expect(res.status).toBe(200); + const body = await res.json(); + expect(body.groups).toHaveLength(1); + expect(body.groups[0].poStatus).toBe("mail_failed"); + expect(body.groups[0].emailError).toMatch(/webhook/i); + }); + it("returns 400 on invalid tab", async () => { const res = await GET(makeRequest("invalid") as never); expect(res.status).toBe(400);