Skip to content

Commit 746f8ac

Browse files
committed
feat(query): add 'getObserversCount' util
1 parent 2e8f38c commit 746f8ac

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

src/core/query.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff 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' })

src/core/tests/query.test.tsx

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff 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
})

0 commit comments

Comments
 (0)