@@ -69,11 +69,11 @@ class TestDatafileManager extends HttpPollingDatafileManager {
6969}
7070
7171const testCache : PersistentKeyValueCache = {
72- get ( key : string ) : Promise < any | null > {
73- let val = null ;
72+ get ( key : string ) : Promise < string > {
73+ let val = '' ;
7474 switch ( key ) {
7575 case 'opt-datafile-keyThatExists' :
76- val = { name : 'keyThatExists' } ;
76+ val = JSON . stringify ( { name : 'keyThatExists' } ) ;
7777 break ;
7878 }
7979 return Promise . resolve ( val ) ;
@@ -109,11 +109,11 @@ describe('httpPollingDatafileManager', () => {
109109
110110 describe ( 'when constructed with sdkKey and datafile and autoUpdate: true,' , ( ) => {
111111 beforeEach ( ( ) => {
112- manager = new TestDatafileManager ( { datafile : { foo : 'abcd' } , sdkKey : '123' , autoUpdate : true } ) ;
112+ manager = new TestDatafileManager ( { datafile : JSON . stringify ( { foo : 'abcd' } ) , sdkKey : '123' , autoUpdate : true } ) ;
113113 } ) ;
114114
115115 it ( 'returns the passed datafile from get' , ( ) => {
116- expect ( manager . get ( ) ) . toEqual ( { foo : 'abcd' } ) ;
116+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo : 'abcd' } ) ;
117117 } ) ;
118118
119119 it ( 'after being started, fetches the datafile, updates itself, and updates itself again after a timeout' , async ( ) => {
@@ -134,28 +134,30 @@ describe('httpPollingDatafileManager', () => {
134134 manager . start ( ) ;
135135 expect ( manager . responsePromises . length ) . toBe ( 1 ) ;
136136 await manager . responsePromises [ 0 ] ;
137- expect ( manager . get ( ) ) . toEqual ( { foo : 'bar' } ) ;
137+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo : 'bar' } ) ;
138138 updateFn . mockReset ( ) ;
139139
140140 await advanceTimersByTime ( 300000 ) ;
141141
142142 expect ( manager . responsePromises . length ) . toBe ( 2 ) ;
143143 await manager . responsePromises [ 1 ] ;
144144 expect ( updateFn ) . toBeCalledTimes ( 1 ) ;
145- expect ( updateFn ) . toBeCalledWith ( {
146- datafile : { fooz : 'barz' } ,
147- } ) ;
148- expect ( manager . get ( ) ) . toEqual ( { fooz : 'barz' } ) ;
145+ expect ( updateFn . mock . calls [ 0 ] [ 0 ] ) . toEqual ( { datafile : '{"fooz": "barz"}' } ) ;
146+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { fooz : 'barz' } ) ;
149147 } ) ;
150148 } ) ;
151149
152150 describe ( 'when constructed with sdkKey and datafile and autoUpdate: false,' , ( ) => {
153151 beforeEach ( ( ) => {
154- manager = new TestDatafileManager ( { datafile : { foo : 'abcd' } , sdkKey : '123' , autoUpdate : false } ) ;
152+ manager = new TestDatafileManager ( {
153+ datafile : JSON . stringify ( { foo : 'abcd' } ) ,
154+ sdkKey : '123' ,
155+ autoUpdate : false ,
156+ } ) ;
155157 } ) ;
156158
157159 it ( 'returns the passed datafile from get' , ( ) => {
158- expect ( manager . get ( ) ) . toEqual ( { foo : 'abcd' } ) ;
160+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo : 'abcd' } ) ;
159161 } ) ;
160162
161163 it ( 'after being started, fetches the datafile, updates itself once, but does not schedule a future update' , async ( ) => {
@@ -167,7 +169,7 @@ describe('httpPollingDatafileManager', () => {
167169 manager . start ( ) ;
168170 expect ( manager . responsePromises . length ) . toBe ( 1 ) ;
169171 await manager . responsePromises [ 0 ] ;
170- expect ( manager . get ( ) ) . toEqual ( { foo : 'bar' } ) ;
172+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo : 'bar' } ) ;
171173 expect ( getTimerCount ( ) ) . toBe ( 0 ) ;
172174 } ) ;
173175 } ) ;
@@ -179,7 +181,7 @@ describe('httpPollingDatafileManager', () => {
179181
180182 describe ( 'initial state' , ( ) => {
181183 it ( 'returns null from get before becoming ready' , ( ) => {
182- expect ( manager . get ( ) ) . toBeNull ( ) ;
184+ expect ( manager . get ( ) ) . toEqual ( '' ) ;
183185 } ) ;
184186 } ) ;
185187
@@ -205,28 +207,7 @@ describe('httpPollingDatafileManager', () => {
205207 } ) ;
206208 manager . start ( ) ;
207209 await manager . onReady ( ) ;
208- expect ( manager . get ( ) ) . toEqual ( { foo : 'bar' } ) ;
209- } ) ;
210-
211- it ( 'does not update if the response body is not valid json' , async ( ) => {
212- manager . queuedResponses . push (
213- {
214- statusCode : 200 ,
215- body : '{"foo" "' ,
216- headers : { } ,
217- } ,
218- {
219- statusCode : 200 ,
220- body : '{"foo": "bar"}' ,
221- headers : { } ,
222- }
223- ) ;
224- manager . start ( ) ;
225- await manager . onReady ( ) ;
226- await advanceTimersByTime ( 1000 ) ;
227- expect ( manager . responsePromises . length ) . toBe ( 2 ) ;
228- await manager . responsePromises [ 1 ] ;
229- expect ( manager . get ( ) ) . toEqual ( { foo : 'bar' } ) ;
210+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo : 'bar' } ) ;
230211 } ) ;
231212
232213 describe ( 'live updates' , ( ) => {
@@ -275,22 +256,22 @@ describe('httpPollingDatafileManager', () => {
275256
276257 manager . start ( ) ;
277258 await manager . onReady ( ) ;
278- expect ( manager . get ( ) ) . toEqual ( { foo : 'bar' } ) ;
259+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo : 'bar' } ) ;
279260 expect ( updateFn ) . toBeCalledTimes ( 0 ) ;
280261
281262 await advanceTimersByTime ( 1000 ) ;
282263 await manager . responsePromises [ 1 ] ;
283264 expect ( updateFn ) . toBeCalledTimes ( 1 ) ;
284- expect ( updateFn . mock . calls [ 0 ] [ 0 ] ) . toEqual ( { datafile : { foo2 : ' bar2' } } ) ;
285- expect ( manager . get ( ) ) . toEqual ( { foo2 : 'bar2' } ) ;
265+ expect ( updateFn . mock . calls [ 0 ] [ 0 ] ) . toEqual ( { datafile : '{" foo2": " bar2"}' } ) ;
266+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo2 : 'bar2' } ) ;
286267
287268 updateFn . mockReset ( ) ;
288269
289270 await advanceTimersByTime ( 1000 ) ;
290271 await manager . responsePromises [ 2 ] ;
291272 expect ( updateFn ) . toBeCalledTimes ( 1 ) ;
292- expect ( updateFn . mock . calls [ 0 ] [ 0 ] ) . toEqual ( { datafile : { foo3 : ' bar3' } } ) ;
293- expect ( manager . get ( ) ) . toEqual ( { foo3 : 'bar3' } ) ;
273+ expect ( updateFn . mock . calls [ 0 ] [ 0 ] ) . toEqual ( { datafile : '{" foo3": " bar3"}' } ) ;
274+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo3 : 'bar3' } ) ;
294275 } ) ;
295276
296277 describe ( 'when the update interval time fires before the request is complete' , ( ) => {
@@ -351,15 +332,15 @@ describe('httpPollingDatafileManager', () => {
351332
352333 manager . start ( ) ;
353334 await manager . onReady ( ) ;
354- expect ( manager . get ( ) ) . toEqual ( { foo : 'bar' } ) ;
335+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo : 'bar' } ) ;
355336
356337 advanceTimersByTime ( 1000 ) ;
357338
358339 expect ( manager . responsePromises . length ) . toBe ( 2 ) ;
359340 manager . stop ( ) ;
360341 await manager . responsePromises [ 1 ] ;
361342 // Should not have updated datafile since manager was stopped
362- expect ( manager . get ( ) ) . toEqual ( { foo : 'bar' } ) ;
343+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo : 'bar' } ) ;
363344 } ) ;
364345
365346 it ( 'calls abort on the current request if there is a current request when stop is called' , async ( ) => {
@@ -399,7 +380,7 @@ describe('httpPollingDatafileManager', () => {
399380 // Trigger the update, should fetch the next response which should succeed, then we get ready
400381 advanceTimersByTime ( 1000 ) ;
401382 await manager . onReady ( ) ;
402- expect ( manager . get ( ) ) . toEqual ( { foo : 'bar' } ) ;
383+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo : 'bar' } ) ;
403384 } ) ;
404385
405386 describe ( 'newness checking' , ( ) => {
@@ -424,7 +405,7 @@ describe('httpPollingDatafileManager', () => {
424405
425406 manager . start ( ) ;
426407 await manager . onReady ( ) ;
427- expect ( manager . get ( ) ) . toEqual ( { foo : 'bar' } ) ;
408+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo : 'bar' } ) ;
428409 // First response promise was for the initial 200 response
429410 expect ( manager . responsePromises . length ) . toBe ( 1 ) ;
430411 // Trigger the queued update
@@ -434,7 +415,7 @@ describe('httpPollingDatafileManager', () => {
434415 await manager . responsePromises [ 1 ] ;
435416 // Since the response was 304, updateFn should not have been called
436417 expect ( updateFn ) . toBeCalledTimes ( 0 ) ;
437- expect ( manager . get ( ) ) . toEqual ( { foo : 'bar' } ) ;
418+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo : 'bar' } ) ;
438419 } ) ;
439420
440421 it ( 'sends if-modified-since using the last observed response last-modified' , async ( ) => {
@@ -559,7 +540,7 @@ describe('httpPollingDatafileManager', () => {
559540 } ) ;
560541 manager . start ( ) ;
561542 await manager . onReady ( ) ;
562- expect ( manager . get ( ) ) . toEqual ( { foo : 'bar' } ) ;
543+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo : 'bar' } ) ;
563544 } ) ;
564545
565546 it ( 'does not schedule a live update after ready' , async ( ) => {
@@ -659,9 +640,9 @@ describe('httpPollingDatafileManager', () => {
659640 manager . on ( 'update' , updateFn ) ;
660641 manager . start ( ) ;
661642 await manager . onReady ( ) ;
662- expect ( manager . get ( ) ) . toEqual ( { name : 'keyThatExists' } ) ;
643+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { name : 'keyThatExists' } ) ;
663644 await advanceTimersByTime ( 50 ) ;
664- expect ( manager . get ( ) ) . toEqual ( { name : 'keyThatExists' } ) ;
645+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { name : 'keyThatExists' } ) ;
665646 expect ( updateFn ) . toBeCalledTimes ( 0 ) ;
666647 } ) ;
667648
@@ -676,10 +657,10 @@ describe('httpPollingDatafileManager', () => {
676657 manager . on ( 'update' , updateFn ) ;
677658 manager . start ( ) ;
678659 await manager . onReady ( ) ;
679- expect ( manager . get ( ) ) . toEqual ( { name : 'keyThatExists' } ) ;
660+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { name : 'keyThatExists' } ) ;
680661 expect ( updateFn ) . toBeCalledTimes ( 0 ) ;
681662 await advanceTimersByTime ( 50 ) ;
682- expect ( manager . get ( ) ) . toEqual ( { foo : 'bar' } ) ;
663+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo : 'bar' } ) ;
683664 expect ( updateFn ) . toBeCalledTimes ( 1 ) ;
684665 } ) ;
685666
@@ -693,8 +674,9 @@ describe('httpPollingDatafileManager', () => {
693674 manager . start ( ) ;
694675 await manager . onReady ( ) ;
695676 await advanceTimersByTime ( 50 ) ;
696- expect ( manager . get ( ) ) . toEqual ( { foo : 'bar' } ) ;
697- expect ( cacheSetSpy ) . toBeCalledWith ( 'opt-datafile-keyThatExists' , { foo : 'bar' } ) ;
677+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo : 'bar' } ) ;
678+ expect ( cacheSetSpy . mock . calls [ 0 ] [ 0 ] ) . toEqual ( 'opt-datafile-keyThatExists' ) ;
679+ expect ( JSON . parse ( cacheSetSpy . mock . calls [ 0 ] [ 1 ] ) ) . toEqual ( { foo : 'bar' } ) ;
698680 } ) ;
699681 } ) ;
700682
@@ -721,7 +703,7 @@ describe('httpPollingDatafileManager', () => {
721703 manager . start ( ) ;
722704 await advanceTimersByTime ( 50 ) ;
723705 await manager . onReady ( ) ;
724- expect ( manager . get ( ) ) . toEqual ( { foo : 'bar' } ) ;
706+ expect ( JSON . parse ( manager . get ( ) ) ) . toEqual ( { foo : 'bar' } ) ;
725707 expect ( updateFn ) . toBeCalledTimes ( 0 ) ;
726708 } ) ;
727709 } ) ;
0 commit comments