@@ -347,5 +347,48 @@ describe("withLoader", () => {
347
347
expect ( screen . getByText ( / c h a r i z a r d / i) ) . toBeVisible ( ) ;
348
348
expect ( screen . getByText ( / p i k a c h u / i) ) . toBeVisible ( ) ;
349
349
} ) ;
350
+
351
+ test ( "Can extend deferred queries" , async ( ) => {
352
+ const Component = withLoader (
353
+ ( props , { charizard, delay } ) => {
354
+ return (
355
+ < >
356
+ < div > { charizard . name } </ div >
357
+ < div >
358
+ { delay ? "loaded-deferred" : "loading-deferred" }
359
+ </ div >
360
+ </ >
361
+ ) ;
362
+ } ,
363
+ createLoader ( {
364
+ queries : ( ) =>
365
+ [ useGetPokemonsQuery ( undefined ) ] as const ,
366
+ deferredQueries : ( ) =>
367
+ [ useGetPokemonByNameQuery ( "charizard" ) ] as const ,
368
+ } ) . extend ( {
369
+ queries : ( ) =>
370
+ [ useGetPokemonByNameQuery ( "charizard" ) ] as const ,
371
+ deferredQueries : ( ) => {
372
+ const delayQ = useGetPokemonByNameQuery ( "delay" ) ;
373
+ return [ delayQ ] as const ;
374
+ } ,
375
+ transform : ( queries , deferred ) => ( {
376
+ charizard : queries [ 0 ] . data ,
377
+ delay : deferred [ 0 ] . data ,
378
+ } ) ,
379
+ onLoading : ( ) => < div > Loading</ div > ,
380
+ onError : ( ) => < div > Error</ div > ,
381
+ } )
382
+ ) ;
383
+ render ( < Component /> ) ;
384
+ expect ( screen . getByText ( "Loading" ) ) . toBeVisible ( ) ;
385
+ await waitFor ( ( ) =>
386
+ expect ( screen . getByText ( "charizard" ) ) . toBeVisible ( )
387
+ ) ;
388
+ expect ( screen . getByText ( "loading-deferred" ) ) . toBeVisible ( ) ;
389
+ await waitFor ( ( ) =>
390
+ expect ( screen . getByText ( "loaded-deferred" ) ) . toBeVisible ( )
391
+ ) ;
392
+ } ) ;
350
393
} ) ;
351
394
} ) ;
0 commit comments