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,