From b7977ccf10b491b0fcdfd6a39396f84bf047ad3c Mon Sep 17 00:00:00 2001 From: Alfred Rosenthal Date: Thu, 31 Aug 2023 09:15:39 -0700 Subject: [PATCH] added survey test --- .../components/SurveyUserForm.test.tsx | 171 ++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 app/src/features/surveys/components/SurveyUserForm.test.tsx diff --git a/app/src/features/surveys/components/SurveyUserForm.test.tsx b/app/src/features/surveys/components/SurveyUserForm.test.tsx new file mode 100644 index 0000000000..1879bc9f99 --- /dev/null +++ b/app/src/features/surveys/components/SurveyUserForm.test.tsx @@ -0,0 +1,171 @@ +import { AuthStateContext } from 'contexts/authStateContext'; +import { Formik } from 'formik'; +import { useBiohubApi } from 'hooks/useBioHubApi'; +import { ICode } from 'interfaces/useCodesApi.interface'; +import { ISystemUser } from 'interfaces/useUserApi.interface'; +import { getMockAuthState, SystemAdminAuthState } from 'test-helpers/auth-helpers'; +import { fireEvent, render, waitFor, within } from 'test-helpers/test-utils'; +import SurveyUserForm, { SurveyUserJobFormInitialValues, SurveyUserJobYupSchema } from './SurveyUserForm'; + +const roles: ICode[] = [ + { + id: 1, + name: 'Pilot' + }, + { + id: 2, + name: 'Biologist' + } +]; + +jest.mock('../../../hooks/useBioHubApi'); +const mockBiohubApi = useBiohubApi as jest.Mock; + +const mockUseApi = { + user: { + searchSystemUser: jest.fn, []>() + } +}; + +describe('SurveyUserForm', () => { + beforeEach(() => { + mockBiohubApi.mockImplementation(() => mockUseApi); + mockUseApi.user.searchSystemUser.mockClear(); + + mockUseApi.user.searchSystemUser.mockResolvedValue([ + { + system_user_id: 1, + user_identifier: 'identifier', + user_guid: '', + identity_source: 'IDIR', + record_end_date: '', + role_ids: [], + role_names: [], + email: 'user@email.com', + display_name: 'Test User', + agency: 'Business' + }, + { + system_user_id: 2, + user_identifier: 'identifier', + user_guid: '', + identity_source: 'IDIR', + record_end_date: '', + role_ids: [], + role_names: [], + email: 'user@email.com', + display_name: 'Jim Testy', + agency: 'Business' + } + ]); + }); + + it('renders correctly with default values', async () => { + const authState = getMockAuthState({ base: SystemAdminAuthState }); + const { getByTestId, getByText } = render( + + {}}> + + + + ); + + await waitFor(async () => { + expect(getByTestId('autocomplete-user-role-search')).toBeVisible(); + expect(getByText('Test User', { exact: false })).toBeVisible(); + }); + }); + + it('renders newly added users properly', async () => { + const authState = getMockAuthState({ base: SystemAdminAuthState }); + const { getByTestId, getByText } = render( + + {}}> + + + + ); + + await waitFor(async () => { + const autocomplete = getByTestId('autocomplete-user-role-search'); + const input = within(autocomplete).getByPlaceholderText('Find people'); + + // Search for a user + fireEvent.change(input, { target: { value: 'Test User' } }); + // Arrow down to user in field + fireEvent.keyDown(autocomplete, { key: 'ArrowDown' }); + // select the first item + fireEvent.keyDown(autocomplete, { key: 'Enter' }); + + expect(getByTestId('autocomplete-user-role-search')).toBeVisible(); + expect(getByText('Test User')).toBeVisible(); + }); + }); + + it('renders removing a user', async () => { + const authState = getMockAuthState({ base: SystemAdminAuthState }); + const { getByTestId } = render( + + {}}> + + + + ); + + await waitFor(async () => { + expect(getByTestId('autocomplete-user-role-search')).toBeVisible(); + expect(getByTestId('remove-user-role-button-0')).toBeVisible(); + }); + }); +});