@@ -149,6 +149,82 @@ describe('mutationOptions', () => {
149149 expect ( isMutatingArray ) . toEqual ( [ 0 , 1 , 0 ] )
150150 } )
151151
152+ it ( 'should return the number of fetching mutations when used with useIsMutating (getter without mutationKey in mutationOptions)' , async ( ) => {
153+ const isMutatingArray : Array < number > = [ ]
154+ const mutationOpts = mutationOptions ( ( ) => ( {
155+ mutationFn : ( ) => sleep ( 50 ) . then ( ( ) => 'data' ) ,
156+ } ) )
157+
158+ const { mutate } = useMutation ( mutationOpts )
159+ const isMutating = useIsMutating ( )
160+
161+ isMutatingArray . push ( isMutating . value )
162+
163+ mutate ( )
164+ await vi . advanceTimersByTimeAsync ( 0 )
165+ isMutatingArray . push ( isMutating . value )
166+ await vi . advanceTimersByTimeAsync ( 50 )
167+ isMutatingArray . push ( isMutating . value )
168+
169+ expect ( isMutatingArray ) . toEqual ( [ 0 , 1 , 0 ] )
170+ } )
171+
172+ it ( 'should return the number of fetching mutations when used with useIsMutating (getter)' , async ( ) => {
173+ const isMutatingArray : Array < number > = [ ]
174+ const mutationOpts1 = mutationOptions ( ( ) => ( {
175+ mutationKey : [ 'key' ] ,
176+ mutationFn : ( ) => sleep ( 50 ) . then ( ( ) => 'data1' ) ,
177+ } ) )
178+ const mutationOpts2 = mutationOptions ( ( ) => ( {
179+ mutationFn : ( ) => sleep ( 50 ) . then ( ( ) => 'data2' ) ,
180+ } ) )
181+
182+ const { mutate : mutate1 } = useMutation ( mutationOpts1 )
183+ const { mutate : mutate2 } = useMutation ( mutationOpts2 )
184+ const isMutating = useIsMutating ( )
185+
186+ isMutatingArray . push ( isMutating . value )
187+
188+ mutate1 ( )
189+ mutate2 ( )
190+ await vi . advanceTimersByTimeAsync ( 0 )
191+ isMutatingArray . push ( isMutating . value )
192+ await vi . advanceTimersByTimeAsync ( 50 )
193+ isMutatingArray . push ( isMutating . value )
194+
195+ expect ( isMutatingArray ) . toEqual ( [ 0 , 2 , 0 ] )
196+ } )
197+
198+ it ( 'should return the number of fetching mutations when used with useIsMutating (getter, filter mutationOpts1.mutationKey)' , async ( ) => {
199+ const isMutatingArray : Array < number > = [ ]
200+ const mutationOpts1 = mutationOptions ( ( ) => ( {
201+ mutationKey : [ 'key' ] ,
202+ mutationFn : ( ) => sleep ( 50 ) . then ( ( ) => 'data1' ) ,
203+ } ) )
204+ const mutationOpts2 = mutationOptions ( ( ) => ( {
205+ mutationFn : ( ) => sleep ( 50 ) . then ( ( ) => 'data2' ) ,
206+ } ) )
207+
208+ const resolvedOpts1 = mutationOpts1 ( )
209+
210+ const { mutate : mutate1 } = useMutation ( mutationOpts1 )
211+ const { mutate : mutate2 } = useMutation ( mutationOpts2 )
212+ const isMutating = useIsMutating ( {
213+ mutationKey : resolvedOpts1 . mutationKey ,
214+ } )
215+
216+ isMutatingArray . push ( isMutating . value )
217+
218+ mutate1 ( )
219+ mutate2 ( )
220+ await vi . advanceTimersByTimeAsync ( 0 )
221+ isMutatingArray . push ( isMutating . value )
222+ await vi . advanceTimersByTimeAsync ( 50 )
223+ isMutatingArray . push ( isMutating . value )
224+
225+ expect ( isMutatingArray ) . toEqual ( [ 0 , 1 , 0 ] )
226+ } )
227+
152228 it ( 'should return the number of fetching mutations when used with queryClient.isMutating (with mutationKey in mutationOptions)' , async ( ) => {
153229 const isMutatingArray : Array < number > = [ ]
154230 const queryClient = useQueryClient ( )
0 commit comments