@@ -347,5 +347,48 @@ describe("withLoader", () => {
347347 expect ( screen . getByText ( / c h a r i z a r d / i) ) . toBeVisible ( ) ;
348348 expect ( screen . getByText ( / p i k a c h u / i) ) . toBeVisible ( ) ;
349349 } ) ;
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+ } ) ;
350393 } ) ;
351394} ) ;
0 commit comments