diff --git a/src/components/Reports/MinisterHousingAllowance/MinisterHousingAllowance.tsx b/src/components/Reports/MinisterHousingAllowance/MinisterHousingAllowance.tsx index d74a4f67be..bdb0b1b1e9 100644 --- a/src/components/Reports/MinisterHousingAllowance/MinisterHousingAllowance.tsx +++ b/src/components/Reports/MinisterHousingAllowance/MinisterHousingAllowance.tsx @@ -181,7 +181,10 @@ export const MinisterHousingAllowanceReport = () => { )} {showPreviousRequests && ( - + )} diff --git a/src/components/Reports/MinisterHousingAllowance/SharedComponents/CurrentBoardApproved.test.tsx b/src/components/Reports/MinisterHousingAllowance/SharedComponents/CurrentBoardApproved.test.tsx index 83ba1791c4..43d080d64b 100644 --- a/src/components/Reports/MinisterHousingAllowance/SharedComponents/CurrentBoardApproved.test.tsx +++ b/src/components/Reports/MinisterHousingAllowance/SharedComponents/CurrentBoardApproved.test.tsx @@ -2,6 +2,7 @@ import React from 'react'; import { ThemeProvider } from '@mui/material/styles'; import { render, waitFor } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; +import { DeepPartial } from 'ts-essentials'; import TestRouter from '__tests__/util/TestRouter'; import { GqlMockedProvider } from '__tests__/util/graphqlMocking'; import theme from 'src/theme'; @@ -17,19 +18,40 @@ import { CurrentBoardApproved } from './CurrentBoardApproved'; const newRequestId = 'new-request-id'; const mutationSpy = jest.fn(); const mockPush = jest.fn(); + +const singleContext: Partial = { + isMarried: false, + preferredName: 'John', + spousePreferredName: '', + userHcmData: { + staffInfo: { + personNumber: '000123456', + }, + } as unknown as HcmData, + spouseHcmData: null, +}; + interface TestComponentProps { - contextValue: Partial; + contextValue?: Partial; + request?: typeof mockMHARequest; router?: { push?: jest.Mock; query?: { accountListId?: string }; }; + mocks?: DeepPartial<{ + DuplicateMinistryHousingAllowanceRequest: DuplicateMinistryHousingAllowanceRequestMutation; + }>; + hasOpenRequest?: boolean; } const TestComponent: React.FC = ({ - contextValue, + contextValue = singleContext, + request, router = {}, + mocks, + hasOpenRequest, }) => { - const approvedMHARequest = { + const approvedMHARequest = request ?? { ...mockMHARequest, updatedAt: '2022-12-01', requestAttributes: { @@ -47,12 +69,16 @@ const TestComponent: React.FC = ({ + mocks={mocks} onCall={mutationSpy} > - + @@ -105,19 +131,7 @@ describe('CurrentBoardApproved Component', () => { it('should render correctly for single person', () => { const { queryByText, queryByRole, getAllByText } = render( - , + , ); expect(queryByText('Current Board Approved MHA')).toBeInTheDocument(); @@ -141,42 +155,19 @@ describe('CurrentBoardApproved Component', () => { it('should navigate to edit page with new requestId after duplicate mutation', async () => { const { getByText } = render( - - - - mocks={{ - DuplicateMinistryHousingAllowanceRequest: { - duplicateMinistryHousingAllowanceRequest: { - ministryHousingAllowanceRequest: { - id: newRequestId, - }, - }, + - - - - - - , + }, + }, + }} + />, ); const updateButton = getByText('Update Current MHA'); @@ -199,4 +190,11 @@ describe('CurrentBoardApproved Component', () => { ); }); }); + + it('should hide Update Current MHA button when there is an open request', () => { + const { queryByText, getByText } = render(); + + expect(getByText('View Current MHA')).toBeInTheDocument(); + expect(queryByText('Update Current MHA')).not.toBeInTheDocument(); + }); }); diff --git a/src/components/Reports/MinisterHousingAllowance/SharedComponents/CurrentBoardApproved.tsx b/src/components/Reports/MinisterHousingAllowance/SharedComponents/CurrentBoardApproved.tsx index a3e8f1a730..4623dc5e7d 100644 --- a/src/components/Reports/MinisterHousingAllowance/SharedComponents/CurrentBoardApproved.tsx +++ b/src/components/Reports/MinisterHousingAllowance/SharedComponents/CurrentBoardApproved.tsx @@ -24,10 +24,12 @@ import { MHARequest } from './types'; interface CurrentBoardApprovedProps { request: MHARequest | null; + hasOpenRequest?: boolean; } export const CurrentBoardApproved: React.FC = ({ request, + hasOpenRequest = false, }) => { const { t } = useTranslation(); const locale = useLocale(); @@ -90,6 +92,7 @@ export const CurrentBoardApproved: React.FC = ({ linkOne={viewLink} linkTwoText={t('Update Current MHA')} handleLinkTwo={handleDuplicateRequest} + hideLinkTwoButton={hasOpenRequest} isRequest={false} handlePrint={handlePrint} handleConfirmCancel={() => {}}