diff --git a/frontend/cypress/e2e/reviewAgreement.cy.js b/frontend/cypress/e2e/reviewAgreement.cy.js index a82eab21b6..9154cae877 100644 --- a/frontend/cypress/e2e/reviewAgreement.cy.js +++ b/frontend/cypress/e2e/reviewAgreement.cy.js @@ -31,8 +31,21 @@ describe("agreement change accordion", () => { cy.get('[data-cy="agreement-meta-procurement-shop"]').contains("GCS"); cy.get('[data-cy="agreement-meta-reason"]').contains("Recompete"); cy.get('[data-cy="agreement-meta-vendor"]').contains("Vendor 1"); - cy.get('[data-cy="agreement-meta-division-directors"]').should("contain", NO_DATA); - cy.get('[data-cy="agreement-meta-team-leaders"]').should("contain", NO_DATA); + cy.get('[data-cy="agreement-meta-division-directors"]').within(() => { + cy.get("dd").should("have.length", 1); + cy.get("dd").eq(0).should("contain", "Dave Director"); + }); + cy.get('[data-cy="agreement-meta-team-leaders"]').within(() => { + cy.get("dd").should("have.length", 1); + cy.get("dd").eq(0).should("contain", "Amy Madigan"); + }); + cy.get('[data-cy="agreement-meta-team-members"]').within(() => { + cy.get("span").should("have.length", 4); + cy.get("span").eq(0).should("contain", "Chris Fortunato"); + cy.get("span").eq(1).should("contain", "Amelia Popham"); + cy.get("span").eq(2).should("contain", "System Owner"); + cy.get("span").eq(3).should("contain", "Dave Director"); + }); cy.get('[data-cy="agreement-meta-Descriptive Study"]').contains("Descriptive Study"); cy.get('[data-cy="agreement-meta-Impact Study"]').contains("Impact Study"); cy.get('[data-cy="agreement-meta-Special Topic 1"]').contains("Special Topic 1"); diff --git a/frontend/src/components/Agreements/AgreementMetaAccordion/AgreementMetaAccordion.jsx b/frontend/src/components/Agreements/AgreementMetaAccordion/AgreementMetaAccordion.jsx index 963d8c2d73..e08be41faa 100644 --- a/frontend/src/components/Agreements/AgreementMetaAccordion/AgreementMetaAccordion.jsx +++ b/frontend/src/components/Agreements/AgreementMetaAccordion/AgreementMetaAccordion.jsx @@ -36,6 +36,9 @@ const AgreementMetaAccordion = ({ const MORE_THAN_THREE_RESEARCH_METHODS = agreement?.research_methodologies && agreement?.research_methodologies.length > 3; const MORE_THAN_THREE_SPECIAL_TOPICS = agreement?.special_topics && agreement?.special_topics.length > 3; + const MORE_THAN_THREE_DIVISION_DIRECTORS = + agreement?.division_directors && agreement?.division_directors.length > 3; + const MORE_THAN_THREE_TEAM_LEADERS = agreement?.team_leaders && agreement?.team_leaders.length > 3; /** * Renders a Term component. * @component @@ -171,10 +174,52 @@ const AgreementMetaAccordion = ({ )}
-
- {renderTerm("division-directors", "Division Director(s)", NO_DATA)} -
-
{renderTerm("team-leaders", "Team Leader(s)", NO_DATA)}
+ {agreement?.division_directors && agreement?.division_directors.length > 0 ? ( +
+
Division Director(s)
+ {agreement.division_directors.map((director, index) => ( +
+ {director} +
+ ))} +
+ ) : ( +
+ {renderTerm("division-directors", "Division Director(s)", NO_DATA)} +
+ )} + {agreement?.team_leaders && agreement?.team_leaders.length > 0 ? ( +
+
Team Leader(s)
+ {agreement.team_leaders.map((leader, index) => ( +
+ {leader} +
+ ))} +
+ ) : ( +
+ {renderTerm("team-leaders", "Team Leader(s)", NO_DATA)} +
+ )}
@@ -221,7 +266,10 @@ const TeamMembers = ({ teamMembers, renderTerm }) => { } return ( -
+
Team Members
{teamMemberRows.map((row, rowIndex) => (
{ // Single column layout for 3 or fewer team members return ( -
+
Team Members
{teamMembers.map((member) => (
{ expect(allTBDs.length).toBeGreaterThan(0); }); + describe("Division Directors and Team Leaders", () => { + it("should display division director names when present", () => { + render( + + ); + + expect(screen.getByText("Division Director(s)")).toBeInTheDocument(); + expect(screen.getByText("Jane Smith")).toBeInTheDocument(); + }); + + it("should display team leader names when present", () => { + render( + + ); + + expect(screen.getByText("Team Leader(s)")).toBeInTheDocument(); + expect(screen.getByText("Bob Johnson")).toBeInTheDocument(); + }); + + it("should show NO_DATA when division_directors is empty", () => { + const agreementWithoutDDs = { + ...agreement, + division_directors: [] + }; + + render( + + ); + + expect(screen.getByText("Division Director(s)")).toBeInTheDocument(); + expect(screen.getAllByText(NO_DATA).length).toBeGreaterThan(0); + }); + + it("should show NO_DATA when team_leaders is empty", () => { + const agreementWithoutTLs = { + ...agreement, + team_leaders: [] + }; + + render( + + ); + + expect(screen.getByText("Team Leader(s)")).toBeInTheDocument(); + expect(screen.getAllByText(NO_DATA).length).toBeGreaterThan(0); + }); + }); + describe("Contract Number conditional rendering", () => { it("should show contract number for awarded CONTRACT agreements", () => { const contractAgreement = { diff --git a/frontend/src/tests/data.js b/frontend/src/tests/data.js index 0fb9b37114..ca10ca0112 100644 --- a/frontend/src/tests/data.js +++ b/frontend/src/tests/data.js @@ -57,6 +57,8 @@ export const agreement = { agreement_reason: "RECOMPETE", agreement_type: "CONTRACT", nick_name: "AACFRC", + division_directors: ["Jane Smith"], + team_leaders: ["Bob Johnson"], budget_line_items: [ { agreement_id: 1,