File tree Expand file tree Collapse file tree 2 files changed +29
-0
lines changed
Expand file tree Collapse file tree 2 files changed +29
-0
lines changed Original file line number Diff line number Diff line change @@ -342,6 +342,10 @@ export class Query<
342342 }
343343 }
344344
345+ getObserversCount ( ) : number {
346+ return this . observers . length
347+ }
348+
345349 invalidate ( ) : void {
346350 if ( ! this . state . isInvalidated ) {
347351 this . dispatch ( { type : 'invalidate' } )
Original file line number Diff line number Diff line change @@ -447,4 +447,29 @@ describe('query', () => {
447447 await sleep ( 100 )
448448 expect ( queryCache . find ( key ) ) . toBeDefined ( )
449449 } )
450+
451+ test ( 'should return proper count of observers' , async ( ) => {
452+ const key = queryKey ( )
453+ const options = { queryKey : key , queryFn : async ( ) => 'data' }
454+ const observer = new QueryObserver ( queryClient , options )
455+ const observer2 = new QueryObserver ( queryClient , options )
456+ const observer3 = new QueryObserver ( queryClient , options )
457+ const query = queryCache . find ( key )
458+
459+ expect ( query ?. getObserversCount ( ) ) . toEqual ( 0 )
460+
461+ const unsubscribe1 = observer . subscribe ( )
462+ const unsubscribe2 = observer2 . subscribe ( )
463+ const unsubscribe3 = observer3 . subscribe ( )
464+ expect ( query ?. getObserversCount ( ) ) . toEqual ( 3 )
465+
466+ unsubscribe3 ( )
467+ expect ( query ?. getObserversCount ( ) ) . toEqual ( 2 )
468+
469+ unsubscribe2 ( )
470+ expect ( query ?. getObserversCount ( ) ) . toEqual ( 1 )
471+
472+ unsubscribe1 ( )
473+ expect ( query ?. getObserversCount ( ) ) . toEqual ( 0 )
474+ } )
450475} )
You can’t perform that action at this time.
0 commit comments