Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ const mutationSpy = jest.fn();

interface ComponentProps {
userType?: UserTypeEnum;
staffAccountId?: string;
staffAccountId?: string | null;
}

const Components: React.FC<ComponentProps> = ({
Expand Down Expand Up @@ -76,36 +76,28 @@ describe('Partner Reminders Report Page', () => {
});

it('renders even though there is no staff account', async () => {
const mockNoStaffAccount = {
GetUser: {
user: {
staffAccountId: null,
},
},
};

const { findByRole } = render(
<ThemeProvider theme={theme}>
<SnackbarProvider>
<TestRouter>
<GqlMockedProvider<{
GetUser: GetUserQuery;
}>
mocks={mockNoStaffAccount}
onCall={mutationSpy}
>
<PartnerRemindersReportPage />
</GqlMockedProvider>
</TestRouter>
</SnackbarProvider>
</ThemeProvider>,
<Components userType={UserTypeEnum.UsStaff} staffAccountId={null} />,
);

expect(
await findByRole('heading', { name: /online reminder system/i }),
).toBeInTheDocument();
});

it('renders limited access page when user group is not US or hybrid staff', async () => {
const { findByText, getByText } = render(
<Components userType={UserTypeEnum.GlobalStaff} staffAccountId={null} />,
);

expect(
await findByText(/access to this feature is limited/i),
).toBeInTheDocument();
expect(
getByText(/our records show that you are not part of the user group/i),
).toBeInTheDocument();
});

it('uses blockImpersonatingNonDevelopers for server-side props', () => {
expect(getServerSideProps).toBe(blockImpersonatingNonDevelopers);
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import {
MultiPageMenu,
NavTypeEnum,
} from 'src/components/Shared/MultiPageLayout/MultiPageMenu/MultiPageMenu';
import { UserTypeAccess } from 'src/components/Shared/UserTypeAccess/UserTypeAccess';
import { getAppName } from 'src/lib/getAppName';

const PartnerRemindersReportPageWrapper = styled(Box)(({ theme }) => ({
Expand All @@ -31,28 +32,30 @@ const PartnerRemindersReportPage: React.FC = () => {
<Head>
<title>{`${appName} | ${t('HR Tools | Ministry Partner Reminders')}`}</title>
</Head>
<PartnerRemindersReportPageWrapper>
<SidePanelsLayout
isScrollBox={false}
leftPanel={
<MultiPageMenu
isOpen={isNavListOpen}
selectedId="partnerReminders"
onClose={handleNavListToggle}
navType={NavTypeEnum.HrTools}
/>
}
leftOpen={isNavListOpen}
leftWidth="290px"
mainContent={
<PartnerRemindersReport
isNavListOpen={isNavListOpen}
onNavListToggle={handleNavListToggle}
title={t('Ministry Partner Reminders')}
/>
}
/>
</PartnerRemindersReportPageWrapper>
<UserTypeAccess>
<PartnerRemindersReportPageWrapper>
<SidePanelsLayout
isScrollBox={false}
leftPanel={
<MultiPageMenu
isOpen={isNavListOpen}
selectedId="partnerReminders"
onClose={handleNavListToggle}
navType={NavTypeEnum.HrTools}
/>
}
leftOpen={isNavListOpen}
leftWidth="290px"
mainContent={
<PartnerRemindersReport
isNavListOpen={isNavListOpen}
onNavListToggle={handleNavListToggle}
title={t('Ministry Partner Reminders')}
/>
}
/>
</PartnerRemindersReportPageWrapper>
</UserTypeAccess>
</>
);
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ describe('NavMenu', () => {
});

it('renders HR Tools submenu items', async () => {
const { findByRole, getByRole, getByTestId, queryByRole } = render(
const { findByRole, getByRole, getByTestId } = render(
<TestComponent
mocks={{
...defaultMocks,
Expand Down Expand Up @@ -154,8 +154,8 @@ describe('NavMenu', () => {
getByRole('menuitem', { name: 'Additional Salary Request' }),
).toBeInTheDocument();
expect(
queryByRole('menuitem', { name: 'Ministry Partner Reminders' }),
).not.toBeInTheDocument();
getByRole('menuitem', { name: 'Ministry Partner Reminders' }),
).toBeInTheDocument();
});

it('renders MPDX Tools submenu items', async () => {
Expand Down Expand Up @@ -196,11 +196,17 @@ describe('NavMenu', () => {
expect(getByTestId('appeals-false')).toBeInTheDocument();
});

it('does not render new reports when user type not verified', async () => {
const { queryByRole } = render(
it('shows only Partner Reminders in HR Tools when user type not verified', async () => {
const { findByRole, getByRole, getByTestId, queryByRole } = render(
<TestComponent
mocks={{
...defaultMocks,
GetUser: {
user: {
userType: UserTypeEnum.UsStaff,
usStaffGroup: UsStaffGroupEnum.SeniorStaff,
},
},
UserOption: {
userOption: {
value: '',
Expand All @@ -210,11 +216,20 @@ describe('NavMenu', () => {
/>,
);

await waitFor(() => {
expect(
queryByRole('menuitem', { name: 'HR Tools' }),
).not.toBeInTheDocument();
});
await findByRole('menuitem', { name: 'HR Tools' });
userEvent.click(getByTestId('HrToolsMenuToggle'));

// Partner Reminders is live regardless of verification, so the tab still shows
expect(
getByRole('menuitem', { name: 'Ministry Partner Reminders' }),
).toBeInTheDocument();

expect(
queryByRole('menuitem', { name: 'Salary Calculation Form' }),
).not.toBeInTheDocument();
expect(
queryByRole('menuitem', { name: 'MPD Goal Calculator' }),
).not.toBeInTheDocument();
});

it('does not show coaching link if there are no coaching accounts', async () => {
Expand Down
Loading
Loading