diff --git a/App/tests/unit/sidebar.test.tsx b/App/tests/unit/sidebar.test.tsx index 7b88292..5facd73 100644 --- a/App/tests/unit/sidebar.test.tsx +++ b/App/tests/unit/sidebar.test.tsx @@ -100,3 +100,37 @@ describe("Sidebar collapsible sections", () => { expect(within(adminVendors).queryByText("Vendors")).toBeTruthy(); }); }); + +describe("Purchase Order links under Purchasing", () => { + it("renders the renamed PO links inside the Purchasing section (not top-level)", () => { + render(); + + // Collapsed by default → PO links are not in the DOM until Purchasing opens. + expect(screen.queryByRole("link", { name: /New Purchase Order/i })).not.toBeInTheDocument(); + + fireEvent.click(headerButton("Purchasing")); + + expect(screen.getByRole("link", { name: /New Purchase Order/i })).toBeInTheDocument(); + expect(screen.getByRole("link", { name: /Closed Purchase Orders/i })).toBeInTheDocument(); + expect(screen.getByRole("link", { name: /Import Purchase Order/i })).toBeInTheDocument(); + expect(screen.getByRole("link", { name: /Purchase Order History/i })).toBeInTheDocument(); + }); + + it("auto-expands Purchasing when a PO route is active", () => { + mockPathname = "/po/new"; + render(); + + expect(headerButton("Purchasing")).toHaveAttribute("aria-expanded", "true"); + expect(screen.getByRole("link", { name: /New Purchase Order/i })).toBeInTheDocument(); + }); + + it("drops the old PO labels", () => { + render(); + fireEvent.click(headerButton("Purchasing")); + + // Old labels were "New PO" / "Import PO" / "History". + expect(screen.queryByRole("link", { name: /^New PO$/i })).not.toBeInTheDocument(); + expect(screen.queryByRole("link", { name: /^Import PO$/i })).not.toBeInTheDocument(); + expect(screen.queryByRole("link", { name: /^History$/i })).not.toBeInTheDocument(); + }); +});