@@ -649,9 +649,85 @@ describe('queryClient', () => {
649649 expect ( queryFn1 ) . toHaveBeenCalledTimes ( 2 )
650650 expect ( queryFn2 ) . toHaveBeenCalledTimes ( 2 )
651651 } )
652+
653+ test ( 'should be able to refetch only active queries' , async ( ) => {
654+ const key1 = queryKey ( )
655+ const key2 = queryKey ( )
656+ const queryFn1 = jest . fn ( )
657+ const queryFn2 = jest . fn ( )
658+ await queryClient . fetchQuery ( key1 , queryFn1 )
659+ await queryClient . fetchQuery ( key2 , queryFn2 )
660+ const observer = new QueryObserver ( queryClient , {
661+ queryKey : key1 ,
662+ queryFn : queryFn1 ,
663+ staleTime : Infinity ,
664+ } )
665+ const unsubscribe = observer . subscribe ( )
666+ await queryClient . refetchQueries ( { active : true } )
667+ unsubscribe ( )
668+ expect ( queryFn1 ) . toHaveBeenCalledTimes ( 2 )
669+ expect ( queryFn2 ) . toHaveBeenCalledTimes ( 1 )
670+ } )
671+
672+ test ( 'should be able to refetch only inactive queries' , async ( ) => {
673+ const key1 = queryKey ( )
674+ const key2 = queryKey ( )
675+ const queryFn1 = jest . fn ( )
676+ const queryFn2 = jest . fn ( )
677+ await queryClient . fetchQuery ( key1 , queryFn1 )
678+ await queryClient . fetchQuery ( key2 , queryFn2 )
679+ const observer = new QueryObserver ( queryClient , {
680+ queryKey : key1 ,
681+ queryFn : queryFn1 ,
682+ staleTime : Infinity ,
683+ } )
684+ const unsubscribe = observer . subscribe ( )
685+ await queryClient . refetchQueries ( { inactive : true } )
686+ unsubscribe ( )
687+ expect ( queryFn1 ) . toHaveBeenCalledTimes ( 1 )
688+ expect ( queryFn2 ) . toHaveBeenCalledTimes ( 2 )
689+ } )
690+
691+ test ( 'should skip refetch for all active and inactive queries' , async ( ) => {
692+ const key1 = queryKey ( )
693+ const key2 = queryKey ( )
694+ const queryFn1 = jest . fn ( )
695+ const queryFn2 = jest . fn ( )
696+ await queryClient . fetchQuery ( key1 , queryFn1 )
697+ await queryClient . fetchQuery ( key2 , queryFn2 )
698+ const observer = new QueryObserver ( queryClient , {
699+ queryKey : key1 ,
700+ queryFn : queryFn1 ,
701+ staleTime : Infinity ,
702+ } )
703+ const unsubscribe = observer . subscribe ( )
704+ await queryClient . refetchQueries ( { active : false , inactive : false } )
705+ unsubscribe ( )
706+ expect ( queryFn1 ) . toHaveBeenCalledTimes ( 1 )
707+ expect ( queryFn2 ) . toHaveBeenCalledTimes ( 1 )
708+ } )
652709 } )
653710
654711 describe ( 'invalidateQueries' , ( ) => {
712+ test ( 'should refetch active queries by default' , async ( ) => {
713+ const key1 = queryKey ( )
714+ const key2 = queryKey ( )
715+ const queryFn1 = jest . fn ( )
716+ const queryFn2 = jest . fn ( )
717+ await queryClient . fetchQuery ( key1 , queryFn1 )
718+ await queryClient . fetchQuery ( key2 , queryFn2 )
719+ const observer = new QueryObserver ( queryClient , {
720+ queryKey : key1 ,
721+ queryFn : queryFn1 ,
722+ staleTime : Infinity ,
723+ } )
724+ const unsubscribe = observer . subscribe ( )
725+ queryClient . invalidateQueries ( key1 )
726+ unsubscribe ( )
727+ expect ( queryFn1 ) . toHaveBeenCalledTimes ( 2 )
728+ expect ( queryFn2 ) . toHaveBeenCalledTimes ( 1 )
729+ } )
730+
655731 test ( 'should not refetch inactive queries by default' , async ( ) => {
656732 const key1 = queryKey ( )
657733 const key2 = queryKey ( )
@@ -673,10 +749,14 @@ describe('queryClient', () => {
673749
674750 test ( 'should not refetch active queries when "refetchActive" is false' , async ( ) => {
675751 const key1 = queryKey ( )
752+ const key2 = queryKey ( )
676753 const queryFn1 = jest . fn ( )
754+ const queryFn2 = jest . fn ( )
677755 await queryClient . fetchQuery ( key1 , queryFn1 )
756+ await queryClient . fetchQuery ( key2 , queryFn2 )
678757 const observer = new QueryObserver ( queryClient , {
679758 queryKey : key1 ,
759+ queryFn : queryFn1 ,
680760 staleTime : Infinity ,
681761 } )
682762 const unsubscribe = observer . subscribe ( )
@@ -685,6 +765,50 @@ describe('queryClient', () => {
685765 } )
686766 unsubscribe ( )
687767 expect ( queryFn1 ) . toHaveBeenCalledTimes ( 1 )
768+ expect ( queryFn2 ) . toHaveBeenCalledTimes ( 1 )
769+ } )
770+
771+ test ( 'should refetch inactive queries when "refetchInactive" is true' , async ( ) => {
772+ const key1 = queryKey ( )
773+ const key2 = queryKey ( )
774+ const queryFn1 = jest . fn ( )
775+ const queryFn2 = jest . fn ( )
776+ await queryClient . fetchQuery ( key1 , queryFn1 )
777+ await queryClient . fetchQuery ( key2 , queryFn2 )
778+ const observer = new QueryObserver ( queryClient , {
779+ queryKey : key1 ,
780+ queryFn : queryFn1 ,
781+ staleTime : Infinity ,
782+ enabled : false ,
783+ } )
784+ const unsubscribe = observer . subscribe ( )
785+ queryClient . invalidateQueries ( key1 , {
786+ refetchInactive : true ,
787+ } )
788+ unsubscribe ( )
789+ expect ( queryFn1 ) . toHaveBeenCalledTimes ( 2 )
790+ expect ( queryFn2 ) . toHaveBeenCalledTimes ( 1 )
791+ } )
792+
793+ test ( 'should not refetch active queries when "refetchActive" is not provided and "active" is false' , async ( ) => {
794+ const key1 = queryKey ( )
795+ const key2 = queryKey ( )
796+ const queryFn1 = jest . fn ( )
797+ const queryFn2 = jest . fn ( )
798+ await queryClient . fetchQuery ( key1 , queryFn1 )
799+ await queryClient . fetchQuery ( key2 , queryFn2 )
800+ const observer = new QueryObserver ( queryClient , {
801+ queryKey : key1 ,
802+ queryFn : queryFn1 ,
803+ staleTime : Infinity ,
804+ } )
805+ const unsubscribe = observer . subscribe ( )
806+ queryClient . invalidateQueries ( key1 , {
807+ active : false ,
808+ } )
809+ unsubscribe ( )
810+ expect ( queryFn1 ) . toHaveBeenCalledTimes ( 1 )
811+ expect ( queryFn2 ) . toHaveBeenCalledTimes ( 1 )
688812 } )
689813 } )
690814
0 commit comments