@kenyaemr/esm-service-queues-app 7.0.3-pre.88 → 7.0.3-pre.94

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (186) hide show
  1. package/.turbo/turbo-build.log +18 -17
  2. package/dist/130.js +1 -1
  3. package/dist/130.js.map +1 -1
  4. package/dist/199.js +1 -1
  5. package/dist/236.js +1 -0
  6. package/dist/236.js.map +1 -0
  7. package/dist/265.js +1 -0
  8. package/dist/265.js.map +1 -0
  9. package/dist/271.js +1 -1
  10. package/dist/282.js +1 -0
  11. package/dist/282.js.map +1 -0
  12. package/dist/319.js +1 -1
  13. package/dist/366.js +1 -0
  14. package/dist/366.js.map +1 -0
  15. package/dist/392.js +1 -0
  16. package/dist/392.js.map +1 -0
  17. package/dist/460.js +1 -1
  18. package/dist/484.js +2 -0
  19. package/dist/484.js.map +1 -0
  20. package/dist/574.js +1 -1
  21. package/dist/6.js +1 -1
  22. package/dist/604.js +1 -0
  23. package/dist/604.js.map +1 -0
  24. package/dist/644.js +1 -1
  25. package/dist/670.js +1 -0
  26. package/dist/670.js.map +1 -0
  27. package/dist/727.js +1 -0
  28. package/dist/727.js.map +1 -0
  29. package/dist/752.js +1 -1
  30. package/dist/757.js +1 -1
  31. package/dist/760.js +1 -0
  32. package/dist/760.js.map +1 -0
  33. package/dist/788.js +1 -1
  34. package/dist/800.js +1 -1
  35. package/dist/807.js +1 -1
  36. package/dist/818.js +1 -0
  37. package/dist/818.js.map +1 -0
  38. package/dist/828.js +1 -1
  39. package/dist/833.js +1 -1
  40. package/dist/911.js +1 -0
  41. package/dist/911.js.map +1 -0
  42. package/dist/kenyaemr-esm-service-queues-app.js +1 -1
  43. package/dist/kenyaemr-esm-service-queues-app.js.buildmanifest.json +160 -160
  44. package/dist/kenyaemr-esm-service-queues-app.js.map +1 -1
  45. package/dist/main.js +1 -1
  46. package/dist/main.js.map +1 -1
  47. package/dist/routes.json +1 -1
  48. package/package.json +1 -1
  49. package/src/active-visits/active-visits-table.resource.ts +1 -1
  50. package/src/active-visits/change-status-dialog.scss +11 -11
  51. package/src/active-visits/change-status-dialog.test.tsx +36 -31
  52. package/src/add-patient-toqueue/add-patient-toqueue-dialog.scss +10 -10
  53. package/src/add-provider-queue-room/add-provider-queue-room.component.tsx +4 -4
  54. package/src/add-provider-queue-room/add-provider-queue-room.resource.ts +2 -2
  55. package/src/add-provider-queue-room/add-provider-queue-room.scss +6 -6
  56. package/src/add-provider-queue-room/add-provider-queue-room.test.tsx +44 -38
  57. package/src/clear-queue-entries-dialog/clear-queue-entries-dialog.component.tsx +1 -1
  58. package/src/clear-queue-entries-dialog/clear-queue-entries-dialog.scss +2 -3
  59. package/src/clear-queue-entries-dialog/clear-queue-entries-dialog.test.tsx +15 -15
  60. package/src/config-schema.ts +84 -84
  61. package/src/current-visit/current-visit-summary.component.tsx +1 -1
  62. package/src/current-visit/current-visit-summary.test.tsx +12 -11
  63. package/src/current-visit/current-visit.resource.ts +1 -1
  64. package/src/current-visit/current-visit.scss +4 -4
  65. package/src/current-visit/hooks/useVitalsConceptMetadata.tsx +1 -1
  66. package/src/current-visit/visit-details/triage-note.scss +11 -11
  67. package/src/helpers/helpers.test.ts +24 -0
  68. package/src/helpers/helpers.ts +41 -14
  69. package/src/home.test.tsx +10 -12
  70. package/src/hooks/useQueueService.ts +16 -10
  71. package/src/past-visit/past-visit-details/past-visit-summary.scss +8 -8
  72. package/src/past-visit/past-visit.component.tsx +1 -1
  73. package/src/past-visit/past-visit.resource.ts +1 -1
  74. package/src/past-visit/past-visit.scss +17 -17
  75. package/src/past-visit/past-visit.test.tsx +8 -13
  76. package/src/patient-info/appointment-details.scss +7 -7
  77. package/src/patient-info/appointment-details.test.tsx +11 -6
  78. package/src/patient-info/appointments.resource.ts +1 -1
  79. package/src/patient-info/patient-info.scss +9 -9
  80. package/src/patient-info/patient-info.test.tsx +3 -14
  81. package/src/patient-queue-header/patient-queue-header.component.tsx +4 -1
  82. package/src/patient-queue-header/patient-queue-header.scss +11 -11
  83. package/src/patient-queue-metrics/clinic-metrics.component.tsx +1 -1
  84. package/src/patient-queue-metrics/clinic-metrics.resource.ts +2 -2
  85. package/src/patient-queue-metrics/clinic-metrics.scss +4 -4
  86. package/src/patient-queue-metrics/clinic-metrics.test.tsx +40 -45
  87. package/src/patient-queue-metrics/metrics-card.scss +11 -11
  88. package/src/patient-queue-metrics/metrics-header.scss +2 -2
  89. package/src/patient-search/advanced-search.scss +27 -27
  90. package/src/patient-search/advanced-search.test.tsx +6 -9
  91. package/src/patient-search/basic-search.scss +14 -14
  92. package/src/patient-search/basic-search.test.tsx +2 -7
  93. package/src/patient-search/hooks/useDefaultLocation.ts +1 -1
  94. package/src/patient-search/hooks/useQueueLocations.tsx +1 -0
  95. package/src/patient-search/hooks/useScheduledVisits.ts +1 -1
  96. package/src/patient-search/patient-scheduled-visits.component.tsx +4 -4
  97. package/src/patient-search/patient-scheduled-visits.scss +17 -17
  98. package/src/patient-search/patient-scheduled-visits.test.tsx +18 -23
  99. package/src/patient-search/patient-search.scss +7 -7
  100. package/src/patient-search/patient-search.workspace.tsx +4 -4
  101. package/src/patient-search/search-results.scss +11 -11
  102. package/src/patient-search/search-results.test.tsx +2 -10
  103. package/src/patient-search/visit-form/visit-form.scss +12 -13
  104. package/src/patient-search/visit-form/visit-type-selector.component.tsx +9 -11
  105. package/src/patient-search/visit-form/visit-type-selector.scss +13 -13
  106. package/src/patient-search/visit-form/visit-type-selector.test.tsx +4 -3
  107. package/src/patient-search/visit-form-queue-fields/visit-form-queue-fields.scss +1 -3
  108. package/src/patient-search/visit-form-queue-fields/visit-form-queue-fields.test.tsx +15 -9
  109. package/src/queue-entry-table-components/edit-entry.scss +1 -1
  110. package/src/queue-entry-table-components/queue-priority.scss +3 -4
  111. package/src/queue-entry-table-components/transition-entry.scss +1 -1
  112. package/src/queue-patient-linelists/queue-linelist-base-table.scss +16 -17
  113. package/src/queue-patient-linelists/queue-linelist-base-table.test.tsx +7 -8
  114. package/src/queue-patient-linelists/queue-linelist-filter.scss +13 -13
  115. package/src/queue-patient-linelists/queue-linelist-filter.test.tsx +9 -6
  116. package/src/queue-patient-linelists/queue-linelist.resource.ts +4 -4
  117. package/src/queue-patient-linelists/scheduled-appointments-table.test.tsx +10 -7
  118. package/src/queue-rooms/queue-room-form.scss +13 -13
  119. package/src/queue-rooms/queue-room-form.test.tsx +10 -8
  120. package/src/queue-screen/queue-screen.scss +6 -4
  121. package/src/queue-screen/queue-screen.test.tsx +6 -6
  122. package/src/queue-services/queue-service-form.scss +13 -13
  123. package/src/queue-services/queue-service-form.test.tsx +15 -8
  124. package/src/queue-table/cells/queue-table-action-cell.component.tsx +2 -2
  125. package/src/queue-table/cells/queue-table-coming-from-cell.component.tsx +1 -1
  126. package/src/queue-table/default-queue-table.component.tsx +63 -61
  127. package/src/queue-table/default-queue-table.test.tsx +61 -61
  128. package/src/queue-table/queue-entry-actions/queue-entry-actions-modal.scss +36 -0
  129. package/src/queue-table/queue-entry-actions/queue-entry-actions.modal.tsx +30 -10
  130. package/src/queue-table/queue-entry-actions/queue-entry-actions.test.tsx +34 -103
  131. package/src/queue-table/queue-entry-actions/queue-entry-confirm-action.test.tsx +42 -25
  132. package/src/queue-table/queue-entry-actions/queue-entry-undo-actions.test.tsx +19 -14
  133. package/src/queue-table/queue-table-by-status-skeleton.component.tsx +1 -5
  134. package/src/queue-table/queue-table-expanded-row.component.tsx +1 -2
  135. package/src/queue-table/queue-table-metrics-card.scss +7 -7
  136. package/src/queue-table/queue-table-metrics.scss +3 -3
  137. package/src/queue-table/queue-table.component.tsx +8 -11
  138. package/src/queue-table/queue-table.scss +32 -26
  139. package/src/queue-table/queue-table.test.tsx +46 -21
  140. package/src/remove-queue-entry-dialog/remove-queue-entry.resource.ts +1 -1
  141. package/src/remove-queue-entry-dialog/remove-queue-entry.scss +2 -2
  142. package/src/remove-queue-entry-dialog/remove-queue-entry.test.tsx +13 -12
  143. package/src/side-menu/side-menu.test.tsx +0 -1
  144. package/src/transition-queue-entry/transition-queue-entry-dialog.component.tsx +1 -1
  145. package/src/transition-queue-entry/transition-queue-entry-dialog.scss +5 -5
  146. package/src/transition-queue-entry/transition-queue-entry-dialog.test.tsx +33 -44
  147. package/src/views/queue-tables-for-all-statuses.component.tsx +14 -14
  148. package/src/visits-missing-inqueue/visits-missing-inqueue.component.tsx +1 -1
  149. package/src/visits-missing-inqueue/visits-missing-inqueue.resource.ts +1 -1
  150. package/src/visits-missing-inqueue/visits-missing-inqueue.scss +17 -14
  151. package/translations/am.json +4 -2
  152. package/translations/ar.json +4 -2
  153. package/translations/en.json +1 -0
  154. package/translations/es.json +4 -2
  155. package/translations/fr.json +39 -37
  156. package/translations/he.json +4 -2
  157. package/translations/km.json +4 -2
  158. package/translations/zh.json +4 -2
  159. package/translations/zh_CN.json +4 -2
  160. package/dist/276.js +0 -1
  161. package/dist/276.js.map +0 -1
  162. package/dist/384.js +0 -2
  163. package/dist/384.js.map +0 -1
  164. package/dist/401.js +0 -1
  165. package/dist/401.js.map +0 -1
  166. package/dist/430.js +0 -1
  167. package/dist/430.js.map +0 -1
  168. package/dist/60.js +0 -1
  169. package/dist/60.js.map +0 -1
  170. package/dist/600.js +0 -1
  171. package/dist/600.js.map +0 -1
  172. package/dist/647.js +0 -1
  173. package/dist/647.js.map +0 -1
  174. package/dist/650.js +0 -1
  175. package/dist/650.js.map +0 -1
  176. package/dist/669.js +0 -1
  177. package/dist/669.js.map +0 -1
  178. package/dist/764.js +0 -1
  179. package/dist/764.js.map +0 -1
  180. package/dist/877.js +0 -1
  181. package/dist/877.js.map +0 -1
  182. package/dist/917.js +0 -1
  183. package/dist/917.js.map +0 -1
  184. package/src/queue-table/queue-entry-actions/queue-entry-actons-modal.scss +0 -36
  185. package/src/root.scss +0 -15
  186. /package/dist/{384.js.LICENSE.txt → 484.js.LICENSE.txt} +0 -0
package/dist/routes.json CHANGED
@@ -1 +1 @@
1
- {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"webservices.rest":"^2.2.0","queue":"^2.4.0-0"},"extensions":[{"name":"outpatient-side-nav-ext","component":"outpatientSideNav","slot":"outpatient-sidebar-slot","online":true,"offline":true},{"name":"service-queues-dashboard-link","component":"serviceQueuesDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"service-queues","slot":"service-queues-dashboard-slot","title":"Service queues"},"online":true,"offline":true},{"name":"queue-table-by-status-menu-dashboard-link","component":"queueTableByStatusMenu","meta":{"name":"service-queues","slot":"service-queues-dashboard-slot","title":"Service queues"},"online":true,"offline":true},{"component":"root","name":"service-queues-dashboard","slot":"service-queues-dashboard-slot"},{"name":"edit-queue-entry-status-modal","component":"editQueueEntryStatusModal"},{"name":"patient-info-banner-slot","component":"patientInfoBannerSlot"},{"name":"remove-queue-entry","component":"removeQueueEntry"},{"name":"clear-all-queue-entries","component":"clearAllQueueEntries"},{"name":"add-visit-to-queue-modal","component":"addVisitToQueueModal"},{"name":"transition-queue-entry-status-modal","component":"transitionQueueEntryStatusModal"},{"name":"previous-visit-summary-widget","component":"pastVisitSummary","slot":"previous-visit-summary-slot"},{"name":"add-provider-to-room-modal","component":"addProviderToRoomModal"},{"name":"transition-queue-entry-modal","component":"transitionQueueEntryModal"},{"name":"edit-queue-entry-modal","component":"editQueueEntryModal"},{"name":"undo-transition-queue-entry-modal","component":"undoTransitionQueueEntryModal"},{"name":"void-queue-entry-modal","component":"voidQueueEntryModal"},{"name":"end-queue-entry-modal","component":"endQueueEntryModal"},{"name":"active-visits-row-actions","component":"activeVisitsRowActions","slot":"queue-table-serve-patient-slot"},{"name":"visit-form-queue-fields","component":"visitFormQueueFields","slot":"visit-form-queue-slot"}],"workspaces":[{"name":"service-queues-service-form","title":"addNewQueueService","component":"addNewQueueServiceWorkspace","type":"service-queues"},{"name":"service-queues-room-form","title":"addNewQueueServiceRoom","component":"addNewQueueServiceRoomWorkspace","type":"service-queues"},{"name":"service-queues-linelist-filter","title":"filter","component":"queueLinelistFilterWorkspace","type":"service-queues"},{"name":"service-queues-patient-search","title":"searchPatient","component":"patientSearchWorkspace","type":"service-queues"}],"version":"7.0.3-pre.88"}
1
+ {"$schema":"https://json.openmrs.org/routes.schema.json","backendDependencies":{"webservices.rest":"^2.2.0","queue":"^2.4.0-0"},"extensions":[{"name":"outpatient-side-nav-ext","component":"outpatientSideNav","slot":"outpatient-sidebar-slot","online":true,"offline":true},{"name":"service-queues-dashboard-link","component":"serviceQueuesDashboardLink","slot":"homepage-dashboard-slot","meta":{"name":"service-queues","slot":"service-queues-dashboard-slot","title":"Service queues"},"online":true,"offline":true},{"name":"queue-table-by-status-menu-dashboard-link","component":"queueTableByStatusMenu","meta":{"name":"service-queues","slot":"service-queues-dashboard-slot","title":"Service queues"},"online":true,"offline":true},{"component":"root","name":"service-queues-dashboard","slot":"service-queues-dashboard-slot"},{"name":"edit-queue-entry-status-modal","component":"editQueueEntryStatusModal"},{"name":"patient-info-banner-slot","component":"patientInfoBannerSlot"},{"name":"remove-queue-entry","component":"removeQueueEntry"},{"name":"clear-all-queue-entries","component":"clearAllQueueEntries"},{"name":"add-visit-to-queue-modal","component":"addVisitToQueueModal"},{"name":"transition-queue-entry-status-modal","component":"transitionQueueEntryStatusModal"},{"name":"previous-visit-summary-widget","component":"pastVisitSummary","slot":"previous-visit-summary-slot"},{"name":"add-provider-to-room-modal","component":"addProviderToRoomModal"},{"name":"transition-queue-entry-modal","component":"transitionQueueEntryModal"},{"name":"edit-queue-entry-modal","component":"editQueueEntryModal"},{"name":"undo-transition-queue-entry-modal","component":"undoTransitionQueueEntryModal"},{"name":"void-queue-entry-modal","component":"voidQueueEntryModal"},{"name":"end-queue-entry-modal","component":"endQueueEntryModal"},{"name":"active-visits-row-actions","component":"activeVisitsRowActions","slot":"queue-table-serve-patient-slot"},{"name":"visit-form-queue-fields","component":"visitFormQueueFields","slot":"visit-form-queue-slot"}],"workspaces":[{"name":"service-queues-service-form","title":"addNewQueueService","component":"addNewQueueServiceWorkspace","type":"service-queues"},{"name":"service-queues-room-form","title":"addNewQueueServiceRoom","component":"addNewQueueServiceRoomWorkspace","type":"service-queues"},{"name":"service-queues-linelist-filter","title":"filter","component":"queueLinelistFilterWorkspace","type":"service-queues"},{"name":"service-queues-patient-search","title":"searchPatient","component":"patientSearchWorkspace","type":"service-queues"}],"version":"7.0.3-pre.94"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kenyaemr/esm-service-queues-app",
3
- "version": "7.0.3-pre.88",
3
+ "version": "7.0.3-pre.94",
4
4
  "description": "Outpatient front-end module for the OpenMRS SPA",
5
5
  "browser": "dist/kenyaemr-esm-service-queues-app.js",
6
6
  "main": "src/index.ts",
@@ -188,7 +188,7 @@ export function useServiceQueueEntries(service: string, locationUuid: string) {
188
188
  return {
189
189
  serviceQueueEntries: mappedServiceQueueEntries ? mappedServiceQueueEntries : [],
190
190
  isLoading,
191
- isError: error,
191
+ error,
192
192
  isValidating,
193
193
  };
194
194
  }
@@ -1,34 +1,34 @@
1
- @use '@carbon/styles/scss/spacing';
2
- @use '@carbon/styles/scss/type';
1
+ @use '@carbon/layout';
2
+ @use '@carbon/type';
3
3
  @use '@carbon/colors';
4
4
 
5
5
  .radioButtonGroup {
6
6
  display: flex;
7
7
  flex-direction: column;
8
8
  align-items: flex-start;
9
- margin-top: spacing.$spacing-03;
10
- min-height: spacing.$spacing-10;
9
+ margin-top: layout.$spacing-03;
10
+ min-height: layout.$spacing-10;
11
11
  width: 100%;
12
12
  @include type.type-style('body-compact-01');
13
13
  }
14
14
 
15
15
  .radioButton {
16
- padding: spacing.$spacing-02 spacing.$spacing-02;
17
- margin: spacing.$spacing-03 0;
16
+ padding: layout.$spacing-02 layout.$spacing-02;
17
+ margin: layout.$spacing-03 0;
18
18
  }
19
19
 
20
20
  section {
21
- margin: spacing.$spacing-03;
21
+ margin: layout.$spacing-03;
22
22
  }
23
23
 
24
24
  .sectionTitle {
25
25
  @include type.type-style('heading-compact-02');
26
26
  color: colors.$gray-70;
27
- margin-bottom: spacing.$spacing-04;
27
+ margin-bottom: layout.$spacing-04;
28
28
  }
29
29
 
30
30
  .modalBody {
31
- padding-bottom: spacing.$spacing-05;
31
+ padding-bottom: layout.$spacing-05;
32
32
  }
33
33
 
34
34
  .inline {
@@ -37,11 +37,11 @@ section {
37
37
  }
38
38
 
39
39
  .loading {
40
- margin-right: spacing.$spacing-02;
40
+ margin-right: layout.$spacing-02;
41
41
  }
42
42
 
43
43
  .error {
44
- margin-top: spacing.$spacing-03;
44
+ margin-top: layout.$spacing-03;
45
45
  color: colors.$red-60;
46
46
  @include type.type-style('label-01');
47
47
  }
@@ -1,23 +1,29 @@
1
1
  import React from 'react';
2
2
  import userEvent from '@testing-library/user-event';
3
3
  import { screen, render, within } from '@testing-library/react';
4
- import { mockServices, mockPriorities, mockStatus, mockSession, mockLocations, mockMappedQueueEntry } from '__mocks__';
5
- import { type ConfigObject, showSnackbar, useConfig } from '@openmrs/esm-framework';
4
+ import { mockServices, mockSession, mockLocations, mockMappedQueueEntry } from '__mocks__';
5
+ import {
6
+ type FetchResponse,
7
+ getDefaultsFromConfigSchema,
8
+ showSnackbar,
9
+ useConfig,
10
+ useLocations,
11
+ useSession,
12
+ } from '@openmrs/esm-framework';
13
+ import { configSchema, type ConfigObject } from '../config-schema';
6
14
  import { updateQueueEntry } from './active-visits-table.resource';
7
15
  import ChangeStatus from './change-status-dialog.component';
8
16
 
9
- const mockedUseConfig = useConfig as jest.Mock;
10
- const mockShowSnackbar = showSnackbar as jest.Mock;
11
- const mockUpdateQueueEntry = updateQueueEntry as jest.Mock;
17
+ const mockUseConfig = jest.mocked(useConfig<ConfigObject>);
18
+ const mockShowSnackbar = jest.mocked(showSnackbar);
19
+ const mockUpdateQueueEntry = jest.mocked(updateQueueEntry);
20
+ const mockUseSession = jest.mocked(useSession);
21
+ const mockUseLocations = jest.mocked(useLocations);
12
22
 
13
- jest.mock('./active-visits-table.resource', () => {
14
- const originalModule = jest.requireActual('./active-visits-table.resource');
15
-
16
- return {
17
- ...originalModule,
18
- updateQueueEntry: jest.fn(),
19
- };
20
- });
23
+ jest.mock('./active-visits-table.resource', () => ({
24
+ ...jest.requireActual('./active-visits-table.resource'),
25
+ updateQueueEntry: jest.fn(),
26
+ }));
21
27
 
22
28
  jest.mock('../patient-search/hooks/useQueueLocations', () => {
23
29
  return {
@@ -33,29 +39,24 @@ jest.mock('../hooks/useQueues', () => {
33
39
  };
34
40
  });
35
41
 
36
- jest.mock('@openmrs/esm-framework', () => {
37
- const originalModule = jest.requireActual('@openmrs/esm-framework');
38
- return {
39
- ...originalModule,
40
- openmrsFetch: jest.fn(),
41
- toOmrsIsoString: jest.fn(),
42
- toDateObjectStrict: jest.fn(),
43
- useLocations: jest.fn().mockImplementation(() => mockLocations.data),
44
- useSession: jest.fn().mockImplementation(() => mockSession.data),
45
- };
46
- });
47
-
48
42
  describe('Queue entry details', () => {
49
- beforeEach(() =>
50
- mockedUseConfig.mockReturnValue({
43
+ beforeEach(() => {
44
+ mockUseConfig.mockReturnValue({
45
+ ...getDefaultsFromConfigSchema(configSchema),
51
46
  concepts: {},
52
- } as ConfigObject),
53
- );
47
+ } as ConfigObject);
48
+ mockUseLocations.mockReturnValue(mockLocations.data.results);
49
+ mockUseSession.mockReturnValue(mockSession.data);
50
+ });
54
51
 
55
52
  it('should update a queue entry and display toast message', async () => {
56
53
  const user = userEvent.setup();
57
54
 
58
- mockUpdateQueueEntry.mockResolvedValueOnce({ data: mockMappedQueueEntry, status: 201, statusText: 'Updated' });
55
+ mockUpdateQueueEntry.mockResolvedValueOnce({
56
+ data: mockMappedQueueEntry,
57
+ status: 201,
58
+ statusText: 'Updated',
59
+ } as FetchResponse);
59
60
 
60
61
  renderUpdateQueueEntryDialog();
61
62
  expect(screen.getByText(/queue service/i)).toBeInTheDocument();
@@ -138,7 +139,11 @@ describe('Queue entry details', () => {
138
139
 
139
140
  test('should show error message when user tries to update queue entry without selecting required fields', async () => {
140
141
  const user = userEvent.setup();
141
- mockUpdateQueueEntry.mockResolvedValueOnce({ data: mockMappedQueueEntry, status: 201, statusText: 'Updated' });
142
+ mockUpdateQueueEntry.mockResolvedValueOnce({
143
+ data: mockMappedQueueEntry,
144
+ status: 201,
145
+ statusText: 'Updated',
146
+ } as FetchResponse);
142
147
 
143
148
  renderUpdateQueueEntryDialog();
144
149
 
@@ -1,32 +1,32 @@
1
- @use '@carbon/styles/scss/spacing';
2
- @use '@carbon/styles/scss/type';
3
- @import '~@openmrs/esm-styleguide/src/vars';
1
+ @use '@carbon/layout';
2
+ @use '@carbon/type';
3
+ @use '@openmrs/esm-styleguide/src/vars' as *;
4
4
 
5
5
  .radioButtonGroup {
6
6
  display: flex;
7
7
  flex-direction: column;
8
8
  align-items: flex-start;
9
- margin-top: spacing.$spacing-03;
10
- min-height: spacing.$spacing-10;
9
+ margin-top: layout.$spacing-03;
10
+ min-height: layout.$spacing-10;
11
11
  width: 100%;
12
12
  @include type.type-style('body-compact-01');
13
13
  }
14
14
 
15
15
  .radioButton {
16
- padding: spacing.$spacing-02 spacing.$spacing-02;
17
- margin: spacing.$spacing-03 0;
16
+ padding: layout.$spacing-02 layout.$spacing-02;
17
+ margin: layout.$spacing-03 0;
18
18
  }
19
19
 
20
20
  section {
21
- margin: spacing.$spacing-03;
21
+ margin: layout.$spacing-03;
22
22
  }
23
23
 
24
24
  .sectionTitle {
25
25
  @include type.type-style('heading-compact-02');
26
26
  color: $text-02;
27
- margin-bottom: spacing.$spacing-04;
27
+ margin-bottom: layout.$spacing-04;
28
28
  }
29
29
 
30
30
  .modalBody {
31
- padding-bottom: spacing.$spacing-05;
31
+ padding-bottom: layout.$spacing-05;
32
32
  }
@@ -31,8 +31,8 @@ import {
31
31
  useSelectedQueueLocationUuid,
32
32
  useSelectedService,
33
33
  } from '../helpers/helpers';
34
- import styles from './add-provider-queue-room.scss';
35
34
  import useQueueServices from '../hooks/useQueueService';
35
+ import styles from './add-provider-queue-room.scss';
36
36
 
37
37
  interface AddProviderQueueRoomProps {
38
38
  providerUuid: string;
@@ -46,7 +46,7 @@ const AddProviderQueueRoom: React.FC<AddProviderQueueRoomProps> = ({ providerUui
46
46
  const currentLocationUuid = useSelectedQueueLocationUuid();
47
47
  const currentService = useSelectedService();
48
48
  const currentIsPermanentProviderQueueRoom = useIsPermanentProviderQueueRoom();
49
- const { providerRoom, isLoading: loading } = useProvidersQueueRoom(providerUuid);
49
+ const { providerRoom } = useProvidersQueueRoom(providerUuid);
50
50
  const [queueRoomUuid, setQueueRoomUuid] = useState('');
51
51
  const [queueProviderMapUuid, setQueueProviderMapUuid] = useState('');
52
52
 
@@ -148,11 +148,11 @@ const AddProviderQueueRoom: React.FC<AddProviderQueueRoomProps> = ({ providerUui
148
148
  <ModalBody>
149
149
  <Form onSubmit={onSubmit}>
150
150
  <section className={styles.section}>
151
- <div className={styles.sectionTitle}>{t('queueLocation', 'Queue location')}</div>
152
151
  <Dropdown
153
152
  id="queueLocation"
154
153
  aria-label={t('selectQueueLocation', 'Select a queue location')}
155
154
  label=""
155
+ titleText={t('queueLocation', 'Queue location')}
156
156
  type="default"
157
157
  items={queueLocations}
158
158
  itemToString={(item) => (item ? item.name : '')}
@@ -163,12 +163,12 @@ const AddProviderQueueRoom: React.FC<AddProviderQueueRoomProps> = ({ providerUui
163
163
  </section>
164
164
 
165
165
  <section className={styles.section}>
166
- <div className={styles.sectionTitle}>{t('queueService', 'Queue service')}</div>
167
166
  <Dropdown
168
167
  id="service"
169
168
  aria-label={t('selectService', 'Select a service')}
170
169
  type="default"
171
170
  label=""
171
+ titleText={t('queueService', 'Queue service')}
172
172
  items={services ?? []}
173
173
  itemToString={(item) => (item ? item.display : '')}
174
174
  onChange={handleServiceChange}
@@ -14,7 +14,7 @@ export function useQueueRooms(location: string, queueUuid: string) {
14
14
 
15
15
  return {
16
16
  rooms: data ? data?.data?.results : [],
17
- isError: error,
17
+ error,
18
18
  isLoading,
19
19
  };
20
20
  }
@@ -69,7 +69,7 @@ export function useProvidersQueueRoom(providerUuid: string) {
69
69
 
70
70
  return {
71
71
  providerRoom: data ? data?.data?.results : [],
72
- isError: error,
72
+ error,
73
73
  isLoading,
74
74
  mutate,
75
75
  };
@@ -1,17 +1,17 @@
1
- @use '@carbon/styles/scss/spacing';
2
- @use '@carbon/styles/scss/type';
3
- @import '~@openmrs/esm-styleguide/src/vars';
1
+ @use '@carbon/layout';
2
+ @use '@carbon/type';
3
+ @use '@openmrs/esm-styleguide/src/vars' as *;
4
4
 
5
5
  .section {
6
- margin: spacing.$spacing-03;
6
+ margin: layout.$spacing-03;
7
7
  }
8
8
 
9
9
  .sectionTitle {
10
10
  @include type.type-style('heading-compact-02');
11
11
  color: $text-02;
12
- margin-bottom: spacing.$spacing-04;
12
+ margin-bottom: layout.$spacing-04;
13
13
  }
14
14
 
15
15
  .checkbox {
16
- padding-top: spacing.$spacing-04;
16
+ padding-top: layout.$spacing-04;
17
17
  }
@@ -1,17 +1,16 @@
1
1
  import React from 'react';
2
2
  import userEvent from '@testing-library/user-event';
3
3
  import { render, screen } from '@testing-library/react';
4
+ import { showSnackbar } from '@openmrs/esm-framework';
4
5
  import AddProviderQueueRoom from './add-provider-queue-room.component';
5
6
 
6
- jest.mock('@openmrs/esm-framework', () => ({
7
- ...jest.requireActual('@openmrs/esm-framework'),
8
- useCurrentProvider: jest.fn(() => ({
9
- currentProvider: { uuid: 'provider-uuid-1' },
10
- })),
11
- showSnackbar: jest.fn(),
12
- }));
7
+ const mockCloseModal = jest.fn();
8
+ const mockShowSnackbar = jest.mocked(showSnackbar);
9
+
13
10
  jest.mock('./add-provider-queue-room.resource', () => ({
14
- useProvidersQueueRoom: jest.fn(() => ({
11
+ addProviderToQueueRoom: jest.fn(),
12
+ updateProviderToQueueRoom: jest.fn().mockResolvedValue({ status: 200 }),
13
+ useProvidersQueueRoom: jest.fn().mockReturnValue({
15
14
  providerRoom: [
16
15
  {
17
16
  queueRoom: { uuid: 'c187d78b-5c54-49bf-a0f8-b7fb6034d36d' },
@@ -20,15 +19,13 @@ jest.mock('./add-provider-queue-room.resource', () => ({
20
19
  ],
21
20
  isLoading: false,
22
21
  mutate: jest.fn(),
23
- })),
24
- updateProviderToQueueRoom: jest.fn().mockResolvedValue({ status: 200 }),
25
- addProviderToQueueRoom: jest.fn(),
26
- useQueueRooms: jest.fn(() => ({
22
+ }),
23
+ useQueueRooms: jest.fn().mockReturnValue({
27
24
  rooms: [
28
25
  { uuid: '6b3e233d-2b44-40ca-b0c8-c5a57a8c51b6', display: 'Room 1' },
29
26
  { uuid: 'e7786ac0-ab62-11ec-b909-0242ac120002', display: 'Room 2' },
30
27
  ],
31
- })),
28
+ }),
32
29
  }));
33
30
 
34
31
  jest.mock('../hooks/useQueues', () => {
@@ -43,19 +40,23 @@ jest.mock('../hooks/useQueues', () => {
43
40
  });
44
41
 
45
42
  jest.mock('../patient-search/hooks/useQueueLocations', () => ({
46
- useQueueLocations: jest.fn(() => ({
43
+ useQueueLocations: jest.fn().mockReturnValue({
47
44
  queueLocations: [
48
45
  { id: '1GHI12', name: 'Location 1' },
49
46
  { id: '1GHI45', name: 'Location 2' },
50
47
  ],
51
- })),
48
+ }),
52
49
  }));
53
50
 
54
51
  const providerUuid = 'cc75ad73-c24b-499c-8db9-a7ef4fc0b36d';
52
+ const defaultProps = {
53
+ providerUuid,
54
+ closeModal: mockCloseModal,
55
+ };
55
56
 
56
57
  describe('AddProviderQueueRoom', () => {
57
58
  it('renders the form fields', () => {
58
- render(<AddProviderQueueRoom providerUuid={providerUuid} closeModal={jest.fn()} />);
59
+ renderAddProviderQueueRoom();
59
60
 
60
61
  expect(screen.getByText('Select a room')).toBeInTheDocument();
61
62
  expect(screen.getByLabelText('Retain location')).toBeInTheDocument();
@@ -65,41 +66,46 @@ describe('AddProviderQueueRoom', () => {
65
66
 
66
67
  it('updates the queue room selection', async () => {
67
68
  const user = userEvent.setup();
68
- render(<AddProviderQueueRoom providerUuid={providerUuid} closeModal={jest.fn()} />);
69
-
70
- // TODO: Fix missing dropdown labels in the form
69
+ renderAddProviderQueueRoom();
71
70
 
72
- // const selectQueueRoom: HTMLInputElement = screen.getByRole('combobox');
73
- // await user.selectOptions(selectQueueRoom, 'Room 1');
71
+ const queueLocationDropdown = screen.getByRole('combobox', { name: /queue location/i });
72
+ await user.click(queueLocationDropdown);
73
+ await user.click(screen.getByText('Room 1'));
74
74
 
75
- // expect(selectQueueRoom.value).toBe('6b3e233d-2b44-40ca-b0c8-c5a57a8c51b6');
75
+ expect(screen.getByText('Room 1')).toBeInTheDocument();
76
76
  });
77
77
 
78
78
  it('should update the retain location checkbox', async () => {
79
79
  const user = userEvent.setup();
80
- render(<AddProviderQueueRoom providerUuid={providerUuid} closeModal={jest.fn()} />);
80
+ renderAddProviderQueueRoom();
81
81
 
82
82
  const retainLocationCheckbox: HTMLInputElement = screen.getByRole('checkbox');
83
83
  await user.click(retainLocationCheckbox);
84
84
 
85
- expect(retainLocationCheckbox.checked).toBe(true);
85
+ expect(retainLocationCheckbox).toBeChecked();
86
86
  });
87
87
 
88
88
  it('should submit the form and add provider to queue room when all fields are filled', async () => {
89
89
  const user = userEvent.setup();
90
- const mockCloseModal = jest.fn();
91
-
92
- render(<AddProviderQueueRoom providerUuid={providerUuid} closeModal={mockCloseModal} />);
93
-
94
- // TODO: Fix missing dropdown labels in the form
95
-
96
- // const queueRoomSelect = screen.getByRole('combobox');
97
- // const submitButton = screen.getByText('Save');
98
-
99
- // await user.selectOptions(queueRoomSelect, '6b3e233d-2b44-40ca-b0c8-c5a57a8c51b6');
100
- // await user.click(submitButton);
101
-
102
- // expect(mockCloseModal).toHaveBeenCalled();
103
- // expect(showSnackbar).toHaveBeenCalled();
90
+ renderAddProviderQueueRoom();
91
+
92
+ const submitButton = screen.getByText('Save');
93
+ const queueLocationDropdown = screen.getByRole('combobox', { name: /queue location/i });
94
+ await user.click(queueLocationDropdown);
95
+ await user.click(screen.getByText('Room 1'));
96
+ await user.click(submitButton);
97
+
98
+ expect(mockCloseModal).toHaveBeenCalledTimes(1);
99
+ expect(mockShowSnackbar).toHaveBeenCalledTimes(1);
100
+ expect(mockShowSnackbar).toHaveBeenCalledWith({
101
+ isLowContrast: true,
102
+ kind: 'success',
103
+ subtitle: 'Queue room updated successfully',
104
+ title: 'Update room',
105
+ });
104
106
  });
105
107
  });
108
+
109
+ function renderAddProviderQueueRoom(props = {}) {
110
+ render(<AddProviderQueueRoom {...defaultProps} {...props} />);
111
+ }
@@ -20,7 +20,7 @@ const ClearQueueEntriesDialog: React.FC<ClearQueueEntriesDialogProps> = ({ queue
20
20
  const handleClearQueueBatchRequest = useCallback(() => {
21
21
  setIsSubmitting(true);
22
22
  batchClearQueueEntries(queueEntries).then(
23
- (response) => {
23
+ () => {
24
24
  closeModal();
25
25
  showSnackbar({
26
26
  isLowContrast: true,
@@ -1,6 +1,5 @@
1
- @use '@carbon/styles/scss/type';
2
- @use '@carbon/styles/scss/spacing';
3
- @import '~@openmrs/esm-styleguide/src/vars';
1
+ @use '@carbon/type';
2
+ @use '@openmrs/esm-styleguide/src/vars' as *;
4
3
 
5
4
  #subHeading {
6
5
  @include type.type-style('heading-compact-01');
@@ -4,24 +4,22 @@ import { render, screen } from '@testing-library/react';
4
4
  import { batchClearQueueEntries } from './clear-queue-entries-dialog.resource';
5
5
  import ClearQueueEntriesDialog from './clear-queue-entries-dialog.component';
6
6
 
7
- const mockBatchClearQueueEntries = batchClearQueueEntries as jest.Mock;
7
+ const mockBatchClearQueueEntries = jest.mocked(batchClearQueueEntries);
8
+ const mockCloseModal = jest.fn();
8
9
 
9
- jest.mock('@openmrs/esm-framework', () => ({
10
- ...jest.requireActual('@openmrs/esm-framework'),
11
- showSnackbar: jest.fn(),
12
- }));
10
+ const defaultProps = {
11
+ queueEntries: [],
12
+ closeModal: mockCloseModal,
13
+ };
13
14
 
14
15
  jest.mock('./clear-queue-entries-dialog.resource');
15
-
16
16
  jest.mock('../hooks/useQueueEntries', () => ({
17
17
  useMutateQueueEntries: () => ({ mutateQueueEntries: jest.fn() }),
18
18
  }));
19
19
 
20
20
  describe('ClearQueueEntriesDialog Component', () => {
21
- const visitQueueEntriesMock = [];
22
-
23
21
  it('renders the component with warning message', () => {
24
- render(<ClearQueueEntriesDialog visitQueueEntries={visitQueueEntriesMock} closeModal={() => {}} />);
22
+ renderClearQueueEntriesDialog();
25
23
 
26
24
  expect(screen.getByRole('heading', { name: 'Service queue' })).toBeInTheDocument();
27
25
  expect(screen.getByText('Clear all queue entries?')).toBeInTheDocument();
@@ -29,15 +27,17 @@ describe('ClearQueueEntriesDialog Component', () => {
29
27
  expect(screen.getByText('Clear queue')).toBeInTheDocument();
30
28
  });
31
29
 
32
- it('should close modal when clicked on cancel', async () => {
30
+ it('should close modal when the cancel button is clicked', async () => {
33
31
  const user = userEvent.setup();
34
- const closeModalMock = jest.fn();
35
32
 
36
- mockBatchClearQueueEntries.mockImplementationOnce(() => Promise.resolve());
37
- render(<ClearQueueEntriesDialog visitQueueEntries={visitQueueEntriesMock} closeModal={closeModalMock} />);
33
+ mockBatchClearQueueEntries.mockResolvedValue(undefined);
34
+ renderClearQueueEntriesDialog();
38
35
 
39
36
  await user.click(screen.getByText('Cancel'));
40
-
41
- expect(closeModalMock).toHaveBeenCalled();
37
+ expect(mockCloseModal).toHaveBeenCalledTimes(1);
42
38
  });
43
39
  });
40
+
41
+ function renderClearQueueEntriesDialog(props = {}) {
42
+ render(<ClearQueueEntriesDialog {...defaultProps} {...props} />);
43
+ }