@@ -349,4 +349,129 @@ describe('streamedQuery', () => {
349349
350350 unsubscribe ( )
351351 } )
352+
353+ test ( 'should support maxChunks' , async ( ) => {
354+ const key = queryKey ( )
355+ const observer = new QueryObserver ( queryClient , {
356+ queryKey : key ,
357+ queryFn : streamedQuery ( {
358+ queryFn : ( ) => createAsyncNumberGenerator ( 3 ) ,
359+ maxChunks : 2 ,
360+ } ) ,
361+ } )
362+
363+ const unsubscribe = observer . subscribe ( vi . fn ( ) )
364+
365+ expect ( observer . getCurrentResult ( ) ) . toMatchObject ( {
366+ status : 'pending' ,
367+ fetchStatus : 'fetching' ,
368+ data : undefined ,
369+ } )
370+
371+ await vi . advanceTimersByTimeAsync ( 50 )
372+
373+ expect ( observer . getCurrentResult ( ) ) . toMatchObject ( {
374+ status : 'success' ,
375+ fetchStatus : 'fetching' ,
376+ data : [ 0 ] ,
377+ } )
378+
379+ await vi . advanceTimersByTimeAsync ( 50 )
380+
381+ expect ( observer . getCurrentResult ( ) ) . toMatchObject ( {
382+ status : 'success' ,
383+ fetchStatus : 'fetching' ,
384+ data : [ 0 , 1 ] ,
385+ } )
386+
387+ await vi . advanceTimersByTimeAsync ( 50 )
388+
389+ expect ( observer . getCurrentResult ( ) ) . toMatchObject ( {
390+ status : 'success' ,
391+ fetchStatus : 'idle' ,
392+ data : [ 1 , 2 ] ,
393+ } )
394+
395+ unsubscribe ( )
396+ } )
397+
398+ test ( 'maxChunks with append refetch' , async ( ) => {
399+ const key = queryKey ( )
400+ const observer = new QueryObserver ( queryClient , {
401+ queryKey : key ,
402+ queryFn : streamedQuery ( {
403+ queryFn : ( ) => createAsyncNumberGenerator ( 3 ) ,
404+ maxChunks : 2 ,
405+ refetchMode : 'append' ,
406+ } ) ,
407+ } )
408+
409+ const unsubscribe = observer . subscribe ( vi . fn ( ) )
410+
411+ expect ( observer . getCurrentResult ( ) ) . toMatchObject ( {
412+ status : 'pending' ,
413+ fetchStatus : 'fetching' ,
414+ data : undefined ,
415+ } )
416+
417+ await vi . advanceTimersByTimeAsync ( 50 )
418+
419+ expect ( observer . getCurrentResult ( ) ) . toMatchObject ( {
420+ status : 'success' ,
421+ fetchStatus : 'fetching' ,
422+ data : [ 0 ] ,
423+ } )
424+
425+ await vi . advanceTimersByTimeAsync ( 50 )
426+
427+ expect ( observer . getCurrentResult ( ) ) . toMatchObject ( {
428+ status : 'success' ,
429+ fetchStatus : 'fetching' ,
430+ data : [ 0 , 1 ] ,
431+ } )
432+
433+ await vi . advanceTimersByTimeAsync ( 50 )
434+
435+ expect ( observer . getCurrentResult ( ) ) . toMatchObject ( {
436+ status : 'success' ,
437+ fetchStatus : 'idle' ,
438+ data : [ 1 , 2 ] ,
439+ } )
440+
441+ void observer . refetch ( )
442+
443+ await vi . advanceTimersByTimeAsync ( 10 )
444+
445+ expect ( observer . getCurrentResult ( ) ) . toMatchObject ( {
446+ status : 'success' ,
447+ fetchStatus : 'fetching' ,
448+ data : [ 1 , 2 ] ,
449+ } )
450+
451+ await vi . advanceTimersByTimeAsync ( 40 )
452+
453+ expect ( observer . getCurrentResult ( ) ) . toMatchObject ( {
454+ status : 'success' ,
455+ fetchStatus : 'fetching' ,
456+ data : [ 2 , 0 ] ,
457+ } )
458+
459+ await vi . advanceTimersByTimeAsync ( 50 )
460+
461+ expect ( observer . getCurrentResult ( ) ) . toMatchObject ( {
462+ status : 'success' ,
463+ fetchStatus : 'fetching' ,
464+ data : [ 0 , 1 ] ,
465+ } )
466+
467+ await vi . advanceTimersByTimeAsync ( 50 )
468+
469+ expect ( observer . getCurrentResult ( ) ) . toMatchObject ( {
470+ status : 'success' ,
471+ fetchStatus : 'idle' ,
472+ data : [ 1 , 2 ] ,
473+ } )
474+
475+ unsubscribe ( )
476+ } )
352477} )
0 commit comments