From e3a663ecf9131944f3216f9d4f921bf2430275a3 Mon Sep 17 00:00:00 2001 From: narayanangourav-sutara Date: Fri, 17 Jul 2026 14:03:53 +0530 Subject: [PATCH] fix: Once loaded, only campaign Grades and Subjects are shown. --- .../pages/CampaignAssignmentTab.test.tsx | 16 ++++++++++++++++ src/ops-console/pages/CampaignAssignmentTab.tsx | 14 +++++++++----- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/src/ops-console/pages/CampaignAssignmentTab.test.tsx b/src/ops-console/pages/CampaignAssignmentTab.test.tsx index 22b3c9e92..531df69bc 100644 --- a/src/ops-console/pages/CampaignAssignmentTab.test.tsx +++ b/src/ops-console/pages/CampaignAssignmentTab.test.tsx @@ -273,6 +273,22 @@ describe('CampaignAssignmentTab', () => { expect(screen.getByRole('progressbar')).toBeInTheDocument(); }); + it('keeps filters disabled until campaign grade metadata is loaded', async () => { + api.getAllGrades.mockResolvedValue(defaultGrades); + api.getCampaignAssignments.mockImplementation( + () => new Promise(() => undefined), + ); + + renderTab('campaign-1'); + + await waitFor(() => expect(api.getAllGrades).toHaveBeenCalled()); + screen + .getAllByRole('combobox') + .forEach((combobox) => + expect(combobox).toHaveAttribute('aria-disabled', 'true'), + ); + }); + it('renders the default grade filter value', async () => { primeApi(); diff --git a/src/ops-console/pages/CampaignAssignmentTab.tsx b/src/ops-console/pages/CampaignAssignmentTab.tsx index 8f3e000d1..8cb5b67b1 100644 --- a/src/ops-console/pages/CampaignAssignmentTab.tsx +++ b/src/ops-console/pages/CampaignAssignmentTab.tsx @@ -180,9 +180,7 @@ const CampaignAssignmentTab: React.FC = ({ subjects.flatMap((subject) => subject.gradeIds), ); - return relevantGradeIds.size === 0 - ? grades - : grades.filter((grade) => relevantGradeIds.has(grade.id)); + return grades.filter((grade) => relevantGradeIds.has(grade.id)); }, [grades, subjects]); useEffect(() => { @@ -302,7 +300,10 @@ const CampaignAssignmentTab: React.FC = ({