Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions packages/query-core/src/__tests__/onlineManager.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -157,6 +157,20 @@ describe('onlineManager', () => {
unsubscribe2()
})

it('should update online status from window online and offline events', () => {
const unsubscribe = onlineManager.subscribe(() => undefined)

expect(onlineManager.isOnline()).toBe(true)

window.dispatchEvent(new Event('offline'))
expect(onlineManager.isOnline()).toBe(false)

window.dispatchEvent(new Event('online'))
expect(onlineManager.isOnline()).toBe(true)

unsubscribe()
})

it('should call listeners when setOnline is called', () => {
const listener = vi.fn()

Expand Down
16 changes: 16 additions & 0 deletions packages/query-core/src/__tests__/queryCache.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -380,6 +380,22 @@ describe('queryCache', () => {
})
})

describe('QueryCache.remove', () => {
it('should only delete the instance currently stored under its queryHash', () => {
const key = queryKey()

const staleQuery = queryCache.build(queryClient, { queryKey: key })
queryCache.remove(staleQuery)

const currentQuery = queryCache.build(queryClient, { queryKey: key })
expect(currentQuery).not.toBe(staleQuery)

queryCache.remove(staleQuery)

expect(queryCache.get(hashKey(key))).toBe(currentQuery)
})
})

describe('QueryCache.add', () => {
it('should not try to add a query already added to the cache', async () => {
const key = queryKey()
Expand Down
34 changes: 29 additions & 5 deletions packages/query-core/src/__tests__/queryObserver.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -1294,22 +1294,28 @@ describe('queryObserver', () => {
unsubscribe()
})

it('shouldFetchOnWindowFocus should respect refetchOnWindowFocus option', () => {
it('shouldFetchOnWindowFocus should return true when refetchOnWindowFocus is true', () => {
const key = queryKey()

const observer1 = new QueryObserver(queryClient, {
const observer = new QueryObserver(queryClient, {
queryKey: key,
queryFn: () => 'data',
refetchOnWindowFocus: true,
})
expect(observer1.shouldFetchOnWindowFocus()).toBe(true)

const observer2 = new QueryObserver(queryClient, {
expect(observer.shouldFetchOnWindowFocus()).toBe(true)
})

it('shouldFetchOnWindowFocus should return false when refetchOnWindowFocus is false', () => {
const key = queryKey()

const observer = new QueryObserver(queryClient, {
queryKey: key,
queryFn: () => 'data',
refetchOnWindowFocus: false,
})
expect(observer2.shouldFetchOnWindowFocus()).toBe(false)

expect(observer.shouldFetchOnWindowFocus()).toBe(false)
})

it('fetchOptimistic should fetch and return optimistic result', async () => {
Expand Down Expand Up @@ -1462,6 +1468,24 @@ describe('queryObserver', () => {
queryClient2.clear()
})

it('should not reject promise when experimental_prefetchInRender is enabled', async () => {
const key = queryKey()
const observer = new QueryObserver(queryClient, {
queryKey: key,
queryFn: () => sleep(10).then(() => 'data'),
})

const unsubscribe = observer.subscribe(() => undefined)
const tracked = observer.trackResult(observer.getCurrentResult())
const promise = tracked.promise

await vi.advanceTimersByTimeAsync(10)

await expect(promise).resolves.toBe('data')

unsubscribe()
})

it('should not refetchOnMount when set to "always" when staleTime is Static', async () => {
const key = queryKey()
const queryFn = vi.fn(() => 'data')
Expand Down
Loading