diff --git a/src/__tests__/patients/related-persons/RelatedPersons.test.tsx b/src/__tests__/patients/related-persons/RelatedPersons.test.tsx
index aa162492e9..ada03c753c 100644
--- a/src/__tests__/patients/related-persons/RelatedPersons.test.tsx
+++ b/src/__tests__/patients/related-persons/RelatedPersons.test.tsx
@@ -1,5 +1,7 @@
import '../../../__mocks__/matchMediaMock'
import React from 'react'
+import { Router } from 'react-router'
+import { createMemoryHistory } from 'history'
import { mount, ReactWrapper } from 'enzyme'
import RelatedPersonTab from 'patients/related-persons/RelatedPersonTab'
import { Button, List, ListItem } from '@hospitalrun/components'
@@ -18,6 +20,8 @@ const mockStore = createMockStore([thunk])
describe('Related Persons Tab', () => {
let wrapper: ReactWrapper
+ let history = createMemoryHistory()
+ history = createMemoryHistory()
describe('Add New Related Person', () => {
let patient: any
@@ -32,11 +36,15 @@ describe('Related Persons Tab', () => {
user = {
permissions: [Permissions.WritePatients, Permissions.ReadPatients],
}
- wrapper = mount(
-
-
- ,
- )
+ act(() => {
+ wrapper = mount(
+
+
+
+
+ ,
+ )
+ })
})
it('should render a New Related Person button', () => {
@@ -48,12 +56,15 @@ describe('Related Persons Tab', () => {
it('should not render a New Related Person button if the user does not have write privileges for a patient', () => {
user = { permissions: [Permissions.ReadPatients] }
- wrapper = mount(
-
-
- ,
- )
-
+ act(() => {
+ wrapper = mount(
+
+
+
+
+ ,
+ )
+ })
const newRelatedPersonButton = wrapper.find(Button)
expect(newRelatedPersonButton).toHaveLength(0)
})
@@ -86,22 +97,27 @@ describe('Related Persons Tab', () => {
...patient,
relatedPersons: [expectedRelatedPerson],
}
-
+ act(() => {
+ wrapper = mount(
+
+
+
+
+ ,
+ )
+ })
act(() => {
const newRelatedPersonButton = wrapper.find(Button)
const onClick = newRelatedPersonButton.prop('onClick') as any
onClick()
})
-
wrapper.update()
act(() => {
const newRelatedPersonModal = wrapper.find(NewRelatedPersonModal)
-
const onSave = newRelatedPersonModal.prop('onSave') as any
onSave(expectedRelatedPerson)
})
-
wrapper.update()
expect(patientSlice.updatePatient).toHaveBeenCalledTimes(1)
@@ -143,26 +159,39 @@ describe('Related Persons Tab', () => {
beforeEach(async () => {
jest.spyOn(PatientRepository, 'find')
- mocked(PatientRepository.find).mockResolvedValue({ fullName: 'test test' } as Patient)
+ mocked(PatientRepository.find).mockResolvedValue({
+ fullName: 'test test',
+ id: '123001',
+ } as Patient)
await act(async () => {
wrapper = await mount(
-
-
- ,
+
+
+
+
+ ,
)
})
-
wrapper.update()
})
- it('should render a list of of related persons with their full name being displayed', () => {
+ it('should render a list of related persons with their full name being displayed', () => {
const list = wrapper.find(List)
const listItems = wrapper.find(ListItem)
-
expect(list).toHaveLength(1)
expect(listItems).toHaveLength(1)
expect(listItems.at(0).text()).toEqual('test test')
})
+ it('should navigate to related person patient profile on related person click', () => {
+ const list = wrapper.find(List)
+ const listItems = wrapper.find(ListItem)
+ act(() => {
+ ;(listItems.at(0).prop('onClick') as any)()
+ })
+ expect(list).toHaveLength(1)
+ expect(listItems).toHaveLength(1)
+ expect(history.location.pathname).toEqual('/patients/123001')
+ })
})
})
diff --git a/src/patients/list/Patients.tsx b/src/patients/list/Patients.tsx
index a3153b6fb6..307727e6ab 100644
--- a/src/patients/list/Patients.tsx
+++ b/src/patients/list/Patients.tsx
@@ -1,6 +1,6 @@
import React, { useEffect, useState } from 'react'
import { useSelector, useDispatch } from 'react-redux'
-import { useHistory } from 'react-router-dom'
+import { useHistory } from 'react-router'
import { useTranslation } from 'react-i18next'
import { Spinner, TextInput, Button, List, ListItem, Container, Row } from '@hospitalrun/components'
import { RootState } from '../../store'
diff --git a/src/patients/related-persons/RelatedPersonTab.tsx b/src/patients/related-persons/RelatedPersonTab.tsx
index 2069429d0a..54399bad89 100644
--- a/src/patients/related-persons/RelatedPersonTab.tsx
+++ b/src/patients/related-persons/RelatedPersonTab.tsx
@@ -3,6 +3,7 @@ import { Button, Panel, List, ListItem } from '@hospitalrun/components'
import NewRelatedPersonModal from 'patients/related-persons/NewRelatedPersonModal'
import RelatedPerson from 'model/RelatedPerson'
import { useTranslation } from 'react-i18next'
+import { useHistory } from 'react-router'
import Patient from 'model/Patient'
import { updatePatient } from 'patients/patient-slice'
import { useDispatch, useSelector } from 'react-redux'
@@ -16,6 +17,11 @@ interface Props {
const RelatedPersonTab = (props: Props) => {
const dispatch = useDispatch()
+ const history = useHistory()
+
+ const navigateTo = (location: string) => {
+ history.push(location)
+ }
const { patient } = props
const { t } = useTranslation()
const { permissions } = useSelector((state: RootState) => state.user)
@@ -44,6 +50,9 @@ const RelatedPersonTab = (props: Props) => {
setShowRelatedPersonModal(true)
}
+ const onRelatedPersonClick = (id: string) => {
+ navigateTo(`/patients/${id}`)
+ }
const closeNewRelatedPersonModal = () => {
setShowRelatedPersonModal(false)
}
@@ -90,7 +99,9 @@ const RelatedPersonTab = (props: Props) => {
{relatedPersons ? (
{relatedPersons.map((r) => (
- {r.fullName}
+ onRelatedPersonClick(r.id)}>
+ {r.fullName}
+
))}
) : (