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();
+ });
+});