@@ -15,15 +15,8 @@ const mockLineChart = jest.mocked(LineChart);
1515
1616const mockUseConfig = jest . mocked ( useConfig ) ;
1717
18+ // Make sure this respects the sort order of useObs
1819const mockObsData = [
19- {
20- code : { text : 'Height' } ,
21- conceptUuid : '5090AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ,
22- dataType : 'Number' ,
23- effectiveDateTime : '2021-01-01T00:00:00Z' ,
24- valueQuantity : { value : 180 } ,
25- encounter : { reference : 'Encounter/123' } ,
26- } ,
2720 {
2821 code : { text : 'Height' } ,
2922 conceptUuid : '5090AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ,
@@ -36,17 +29,25 @@ const mockObsData = [
3629 code : { text : 'Weight' } ,
3730 conceptUuid : '2154AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ,
3831 dataType : 'Number' ,
32+ effectiveDateTime : '2021-02-01T00:00:00Z' ,
33+ valueQuantity : { value : 72 } ,
34+ encounter : { reference : 'Encounter/234' } ,
35+ } ,
36+ {
37+ code : { text : 'Height' } ,
38+ conceptUuid : '5090AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ,
39+ dataType : 'Number' ,
3940 effectiveDateTime : '2021-01-01T00:00:00Z' ,
40- valueQuantity : { value : 70 } ,
41+ valueQuantity : { value : 180 } ,
4142 encounter : { reference : 'Encounter/123' } ,
4243 } ,
4344 {
4445 code : { text : 'Weight' } ,
4546 conceptUuid : '2154AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ,
4647 dataType : 'Number' ,
47- effectiveDateTime : '2021-02 -01T00:00:00Z' ,
48- valueQuantity : { value : 72 } ,
49- encounter : { reference : 'Encounter/234 ' } ,
48+ effectiveDateTime : '2021-01 -01T00:00:00Z' ,
49+ valueQuantity : { value : 70 } ,
50+ encounter : { reference : 'Encounter/123 ' } ,
5051 } ,
5152 {
5253 code : { text : 'Chief Complaint' } ,
@@ -66,12 +67,19 @@ const mockObsData = [
6667 } ,
6768] ;
6869
70+ const mockConceptData = [
71+ { uuid : '5090AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' , display : 'Height' } ,
72+ { uuid : '2154AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' , display : 'Weight' } ,
73+ { uuid : '164162AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' , display : 'Chief Complaint' } ,
74+ { uuid : '164163AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' , display : 'Power Level' } ,
75+ ] ;
76+
6977const mockUseObs = jest . mocked ( useObs ) ;
7078
7179describe ( 'ObsSwitchable' , ( ) => {
7280 it ( 'should render all obs in table and numeric obs in graph' , async ( ) => {
7381 mockUseObs . mockReturnValue ( {
74- data : mockObsData as Array < ObsResult > ,
82+ data : { observations : mockObsData as Array < ObsResult > , concepts : mockConceptData } ,
7583 error : null ,
7684 isLoading : false ,
7785 isValidating : false ,
@@ -102,11 +110,13 @@ describe('ObsSwitchable', () => {
102110 expect ( headerRow ) . toHaveTextContent ( 'Chief Complaint' ) ;
103111 expect ( headerRow ) . toHaveTextContent ( 'Power Level' ) ;
104112 const firstRow = screen . getAllByRole ( 'row' ) [ 1 ] ;
113+ expect ( firstRow ) . toHaveTextContent ( 'Jan' ) ;
105114 expect ( firstRow ) . toHaveTextContent ( '180' ) ;
106115 expect ( firstRow ) . toHaveTextContent ( '70' ) ;
107116 expect ( firstRow ) . toHaveTextContent ( 'Too strong' ) ;
108117 expect ( firstRow ) . toHaveTextContent ( '9001' ) ;
109118 const secondRow = screen . getAllByRole ( 'row' ) [ 2 ] ;
119+ expect ( secondRow ) . toHaveTextContent ( 'Feb' ) ;
110120 expect ( secondRow ) . toHaveTextContent ( '182' ) ;
111121 expect ( secondRow ) . toHaveTextContent ( '72' ) ;
112122 expect ( secondRow ) . toHaveTextContent ( '--' ) ;
@@ -122,13 +132,14 @@ describe('ObsSwitchable', () => {
122132 expect ( tabs ) . toHaveTextContent ( 'Weight' ) ;
123133 expect ( tabs ) . not . toHaveTextContent ( 'Chief Complaint' ) ;
124134 expect ( tabs ) . toHaveTextContent ( 'Power Level' ) ;
135+ expect ( tabs ) . not . toHaveTextContent ( 'Mystery Concept' ) ;
125136
126137 expect ( mockLineChart ) . toHaveBeenNthCalledWith (
127138 1 ,
128139 expect . objectContaining ( {
129140 data : [
130- { group : 'Tallitude' , key : new Date ( '2021-01-01T00:00:00.000Z' ) , value : 180 } ,
131141 { group : 'Tallitude' , key : new Date ( '2021-02-01T00:00:00.000Z' ) , value : 182 } ,
142+ { group : 'Tallitude' , key : new Date ( '2021-01-01T00:00:00.000Z' ) , value : 180 } ,
132143 ] ,
133144 options : expect . any ( Object ) ,
134145 } ) ,
@@ -139,8 +150,8 @@ describe('ObsSwitchable', () => {
139150 2 ,
140151 expect . objectContaining ( {
141152 data : [
142- { group : 'Weight' , key : new Date ( '2021-01-01T00:00:00.000Z' ) , value : 70 } ,
143153 { group : 'Weight' , key : new Date ( '2021-02-01T00:00:00.000Z' ) , value : 72 } ,
154+ { group : 'Weight' , key : new Date ( '2021-01-01T00:00:00.000Z' ) , value : 70 } ,
144155 ] ,
145156 options : expect . any ( Object ) ,
146157 } ) ,
@@ -167,7 +178,7 @@ describe('ObsSwitchable', () => {
167178
168179 it ( 'should support showing graph tab by default' , async ( ) => {
169180 mockUseObs . mockReturnValue ( {
170- data : mockObsData as Array < ObsResult > ,
181+ data : { observations : mockObsData as Array < ObsResult > , concepts : mockConceptData } ,
171182 error : null ,
172183 isLoading : false ,
173184 isValidating : false ,
@@ -189,8 +200,8 @@ describe('ObsSwitchable', () => {
189200 1 ,
190201 expect . objectContaining ( {
191202 data : [
192- { group : 'Height' , key : new Date ( '2021-01-01T00:00:00.000Z' ) , value : 180 } ,
193203 { group : 'Height' , key : new Date ( '2021-02-01T00:00:00.000Z' ) , value : 182 } ,
204+ { group : 'Height' , key : new Date ( '2021-01-01T00:00:00.000Z' ) , value : 180 } ,
194205 ] ,
195206 options : expect . any ( Object ) ,
196207 } ) ,
@@ -200,7 +211,7 @@ describe('ObsSwitchable', () => {
200211
201212 it ( 'should support grouping into multiline graphs' , async ( ) => {
202213 mockUseObs . mockReturnValue ( {
203- data : mockObsData as Array < ObsResult > ,
214+ data : { observations : mockObsData as Array < ObsResult > , concepts : mockConceptData } ,
204215 error : null ,
205216 isLoading : false ,
206217 isValidating : false ,
@@ -235,10 +246,10 @@ describe('ObsSwitchable', () => {
235246 2 ,
236247 expect . objectContaining ( {
237248 data : [
238- { group : 'Height' , key : new Date ( '2021-01-01T00:00:00.000Z' ) , value : 180 } ,
239249 { group : 'Height' , key : new Date ( '2021-02-01T00:00:00.000Z' ) , value : 182 } ,
240- { group : 'Weight ' , key : new Date ( '2021-01-01T00:00:00.000Z' ) , value : 70 } ,
250+ { group : 'Height ' , key : new Date ( '2021-01-01T00:00:00.000Z' ) , value : 180 } ,
241251 { group : 'Weight' , key : new Date ( '2021-02-01T00:00:00.000Z' ) , value : 72 } ,
252+ { group : 'Weight' , key : new Date ( '2021-01-01T00:00:00.000Z' ) , value : 70 } ,
242253 ] ,
243254 options : expect . any ( Object ) ,
244255 } ) ,
@@ -248,7 +259,12 @@ describe('ObsSwitchable', () => {
248259
249260 it ( 'should hide the graph tab selection if there is only one graph' , async ( ) => {
250261 mockUseObs . mockReturnValue ( {
251- data : mockObsData . filter ( ( o ) => o . conceptUuid === '164163AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ) as Array < ObsResult > ,
262+ data : {
263+ observations : mockObsData . filter (
264+ ( o ) => o . conceptUuid === '164163AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' ,
265+ ) as Array < ObsResult > ,
266+ concepts : mockConceptData ,
267+ } ,
252268 error : null ,
253269 isLoading : false ,
254270 isValidating : false ,
0 commit comments