From baf068dab2b2dc022853a64dad38053e2ca35494 Mon Sep 17 00:00:00 2001 From: CynthiaKamau Date: Thu, 21 Sep 2023 15:15:20 +0300 Subject: [PATCH 1/3] O3-2383 Add column to denote patient previous queue in queue table (#815) --- .../src/active-visits/active-visits-table.component.tsx | 8 ++++---- .../src/active-visits/active-visits-table.resource.ts | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/packages/esm-service-queues-app/src/active-visits/active-visits-table.component.tsx b/packages/esm-service-queues-app/src/active-visits/active-visits-table.component.tsx index f35f707f0..749249131 100644 --- a/packages/esm-service-queues-app/src/active-visits/active-visits-table.component.tsx +++ b/packages/esm-service-queues-app/src/active-visits/active-visits-table.component.tsx @@ -161,8 +161,8 @@ function ActiveVisitsTable() { }, { id: 3, - header: t('locationComingFrom', 'Coming from'), - key: 'locationComingFrom', + header: t('queueComingFrom', 'Coming from'), + key: 'queueComingFrom', }, { id: 4, @@ -218,8 +218,8 @@ function ActiveVisitsTable() { ), }, - locationComingFrom: { - content: {entry?.locationComingFrom}, + queueComingFrom: { + content: {entry?.queueComingFrom}, }, status: { content: ( diff --git a/packages/esm-service-queues-app/src/active-visits/active-visits-table.resource.ts b/packages/esm-service-queues-app/src/active-visits/active-visits-table.resource.ts index 9b59ff351..22e6e6138 100644 --- a/packages/esm-service-queues-app/src/active-visits/active-visits-table.resource.ts +++ b/packages/esm-service-queues-app/src/active-visits/active-visits-table.resource.ts @@ -71,7 +71,7 @@ export interface VisitQueueEntry { uuid: string; visit: Visit; sortWeight: number; - locationComingFrom: { + queueComingFrom: { name: string; }; } @@ -102,7 +102,7 @@ export interface MappedVisitQueueEntry { sortWeight: number; visitQueueNumber: string; identifiers: Array; - locationComingFrom: string; + queueComingFrom: string; } interface UseVisitQueueEntries { @@ -248,7 +248,7 @@ export function useVisitQueueEntries(currServiceName: string, locationUuid: stri (e) => e.attributeType.uuid === visitQueueNumberAttributeUuid, )?.value, identifiers: visitQueueEntry.queueEntry.patient?.identifiers, - locationComingFrom: visitQueueEntry.queueEntry?.locationComingFrom?.name, + queueComingFrom: visitQueueEntry.queueEntry?.queueComingFrom?.name, }); let mappedVisitQueueEntries; @@ -315,7 +315,7 @@ export async function updateQueueEntry( }, startedAt: toDateObjectStrict(toOmrsIsoString(new Date())), sortWeight: sortWeight, - locationComingFrom: previousQueueUuid, + queueComingFrom: previousQueueUuid, }, }, }); From 3a6ebc17a0fbb63d6fedebbdd9ffad1940eb4578 Mon Sep 17 00:00:00 2001 From: CynthiaKamau Date: Thu, 21 Sep 2023 15:15:48 +0300 Subject: [PATCH 2/3] (fix) Move visit queue number attribute from concepts to uuid (#816) --- packages/esm-service-queues-app/src/config-schema.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/esm-service-queues-app/src/config-schema.ts b/packages/esm-service-queues-app/src/config-schema.ts index f0026d9ea..282003b54 100644 --- a/packages/esm-service-queues-app/src/config-schema.ts +++ b/packages/esm-service-queues-app/src/config-schema.ts @@ -36,11 +36,6 @@ export const configSchema = { _description: 'The UUID of the default status for attending a service in the queues eg In Service.', _default: 'ca7494ae-437f-4fd0-8aae-b88b9a2ba47d', }, - visitQueueNumberAttributeUuid: { - _type: Type.ConceptUuid, - _description: 'The UUID of the visit attribute that contains the visit queue number.', - _default: 'c61ce16f-272a-41e7-9924-4c555d0932c5', - }, systolicBloodPressureUuid: { _type: Type.ConceptUuid, _default: '5085AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA', @@ -93,6 +88,11 @@ export const configSchema = { 'The Uuids of person attribute-type that captures contact information `e.g Next of kin contact details`', _default: [], }, + visitQueueNumberAttributeUuid: { + _type: Type.UUID, + _description: 'The UUID of the visit attribute that contains the visit queue number.', + _default: 'c61ce16f-272a-41e7-9924-4c555d0932c5', + }, vitals: vitalsConfigSchema, biometrics: biometricsConfigSchema, showQueueTableTab: { From 0eb6147ca8c8c1dd5ec848296ffe77ea18ef49af Mon Sep 17 00:00:00 2001 From: Ayush <54752747+ayush-AI@users.noreply.github.com> Date: Thu, 21 Sep 2023 17:53:14 +0530 Subject: [PATCH 3/3] Add tests for pagination.component.tsx (#804) Co-authored-by: Anjula Shanaka --- .../pagination/pagination.test.tsx | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 packages/esm-patient-search-app/src/ui-components/pagination/pagination.test.tsx diff --git a/packages/esm-patient-search-app/src/ui-components/pagination/pagination.test.tsx b/packages/esm-patient-search-app/src/ui-components/pagination/pagination.test.tsx new file mode 100644 index 000000000..bcb0ec5ac --- /dev/null +++ b/packages/esm-patient-search-app/src/ui-components/pagination/pagination.test.tsx @@ -0,0 +1,60 @@ +import React from 'react'; +import { render, fireEvent, screen } from '@testing-library/react'; +import '@testing-library/jest-dom/extend-expect'; +import Pagination from './pagination.component'; + +describe('Pagination', () => { + it('should render correctly with page numbers', () => { + render( {}} hasMore={true} />); + + for (let i = 1; i <= 5; i++) { + const pageButtons = screen.getByRole('button', { name: `${i}` }); + expect(pageButtons).toBeInTheDocument(); + } + }); + + it('should disable previous button on first page', () => { + render( {}} hasMore={true} />); + const previousButton = screen.getByLabelText(/previous page/i); + expect(previousButton).toBeDisabled(); + }); + + it('should disable next button on last page when hasMore is false', () => { + render( {}} hasMore={false} />); + const nextButton = screen.getByLabelText(/next page/i); + expect(nextButton).toBeDisabled(); + }); + + it('should increment the page when next button is clicked', () => { + const setCurrentPageMock = jest.fn(); + render(); + + const nextButton = screen.getByLabelText(/next page/i); + fireEvent.click(nextButton); + expect(setCurrentPageMock).toHaveBeenCalledWith(2); + }); + + it('should decrement the page when previous button is clicked', () => { + const setCurrentPageMock = jest.fn(); + render(); + + const previousButton = screen.getByLabelText(/previous page/i); + fireEvent.click(previousButton); + expect(setCurrentPageMock).toHaveBeenCalledWith(2); + }); + + it('should call setCurrentPage when page button is clicked', () => { + const setCurrentPageMock = jest.fn(); + render(); + + const pageButton = screen.getByRole('button', { name: '4' }); + fireEvent.click(pageButton); + expect(setCurrentPageMock).toHaveBeenCalledWith(4); + }); + + it('should render empty component when totalPages is 1', () => { + render( {}} hasMore={true} />); + const pagination = screen.queryByRole('button', { name: 'next page' }); + expect(pagination).not.toBeInTheDocument(); + }); +});