diff --git a/frontend/src/app/[locale]/(base)/opportunities/page.test.tsx b/frontend/src/app/[locale]/(base)/opportunities/page.test.tsx index e0f3a01f47..9e5b205bbe 100644 --- a/frontend/src/app/[locale]/(base)/opportunities/page.test.tsx +++ b/frontend/src/app/[locale]/(base)/opportunities/page.test.tsx @@ -182,6 +182,21 @@ describe("Opportunities", () => { ).toBeVisible(); }); + it("renders create opportunity button with placeholder URL", async () => { + mockSearchForOpportunities.mockResolvedValue(basicOpportunity); + const component = await OpportunitiesListPage({ params: localeParams }); + render(component); + + const createOpportunityLink = screen.getByRole("link", { + name: "createOpportunityButton", + }); + expect(createOpportunityLink).toBeVisible(); + expect(createOpportunityLink).toHaveAttribute( + "href", + "/opportunities/create/HHS-ACF-FYSB", + ); + }); + describe("renders status", () => { it("if in draft", async () => { mockSearchForOpportunities.mockResolvedValue(basicOpportunity); diff --git a/frontend/src/app/[locale]/(base)/opportunities/page.tsx b/frontend/src/app/[locale]/(base)/opportunities/page.tsx index fe882ed3d8..d39012fdac 100644 --- a/frontend/src/app/[locale]/(base)/opportunities/page.tsx +++ b/frontend/src/app/[locale]/(base)/opportunities/page.tsx @@ -7,6 +7,7 @@ import { WithFeatureFlagProps } from "src/types/uiTypes"; import { convertSearchParamsToProperTypes } from "src/utils/search/searchUtils"; import { useTranslations } from "next-intl"; +import Link from "next/link"; import { redirect } from "next/navigation"; import { PropsWithChildren } from "react"; import { Alert, GridContainer } from "@trussworks/react-uswds"; @@ -95,9 +96,17 @@ const OpportunitiesTable = ({ return (