Skip to content
101 changes: 38 additions & 63 deletions packages/query-core/src/__tests__/queryClient.test.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -699,9 +699,8 @@ describe('queryClient', () => {
})
await vi.advanceTimersByTimeAsync(10)
await expect(promise).resolves.toEqual(1)
await vi.waitFor(() =>
expect(queryClient.getQueryData(key1)).toEqual(undefined),
)
await vi.advanceTimersByTimeAsync(1)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

expect(queryClient.getQueryData(key1)).toEqual(undefined)
})

test('should keep a query in cache if garbage collection time is Infinity', async () => {
Expand Down Expand Up @@ -1725,9 +1724,8 @@ describe('queryClient', () => {
expect(mutationCacheResumePausedMutationsSpy).not.toHaveBeenCalled()

focusManager.setFocused(true)
await vi.waitFor(() =>
expect(queryCacheOnFocusSpy).toHaveBeenCalledTimes(1),
)
await vi.advanceTimersByTimeAsync(0)
expect(queryCacheOnFocusSpy).toHaveBeenCalledTimes(1)
expect(mutationCacheResumePausedMutationsSpy).toHaveBeenCalledTimes(1)

expect(queryCacheOnOnlineSpy).not.toHaveBeenCalled()
Expand Down Expand Up @@ -1759,9 +1757,8 @@ describe('queryClient', () => {
expect(mutationCacheResumePausedMutationsSpy).not.toHaveBeenCalled()

onlineManager.setOnline(true)
await vi.waitFor(() =>
expect(queryCacheOnOnlineSpy).toHaveBeenCalledTimes(1),
)
await vi.advanceTimersByTimeAsync(0)
expect(queryCacheOnOnlineSpy).toHaveBeenCalledTimes(1)

expect(mutationCacheResumePausedMutationsSpy).toHaveBeenCalledTimes(1)

Expand All @@ -1787,17 +1784,14 @@ describe('queryClient', () => {
void observer1.mutate()
void observer2.mutate()

await vi.waitFor(() => {
expect(observer1.getCurrentResult().isPaused).toBeTruthy()
expect(observer2.getCurrentResult().isPaused).toBeTruthy()
})
expect(observer1.getCurrentResult().isPaused).toBeTruthy()
expect(observer2.getCurrentResult().isPaused).toBeTruthy()

onlineManager.setOnline(true)

await vi.waitFor(() => {
expect(observer1.getCurrentResult().status).toBe('success')
expect(observer2.getCurrentResult().status).toBe('success')
})
await vi.advanceTimersByTimeAsync(0)
expect(observer1.getCurrentResult().status).toBe('success')
expect(observer2.getCurrentResult().status).toBe('success')
})

test('should resume paused mutations in parallel', async () => {
Expand Down Expand Up @@ -1825,17 +1819,14 @@ describe('queryClient', () => {
void observer1.mutate()
void observer2.mutate()

await vi.waitFor(() => {
expect(observer1.getCurrentResult().isPaused).toBeTruthy()
expect(observer2.getCurrentResult().isPaused).toBeTruthy()
})
expect(observer1.getCurrentResult().isPaused).toBeTruthy()
expect(observer2.getCurrentResult().isPaused).toBeTruthy()

onlineManager.setOnline(true)

await vi.waitFor(() => {
expect(observer1.getCurrentResult().status).toBe('success')
expect(observer2.getCurrentResult().status).toBe('success')
})
await vi.advanceTimersByTimeAsync(50)
expect(observer1.getCurrentResult().status).toBe('success')
expect(observer2.getCurrentResult().status).toBe('success')

expect(orders).toEqual(['1start', '2start', '2end', '1end'])
})
Expand Down Expand Up @@ -1873,18 +1864,15 @@ describe('queryClient', () => {
void observer1.mutate()
void observer2.mutate()

await vi.waitFor(() => {
expect(observer1.getCurrentResult().isPaused).toBeTruthy()
expect(observer2.getCurrentResult().isPaused).toBeTruthy()
})
expect(observer1.getCurrentResult().isPaused).toBeTruthy()
expect(observer2.getCurrentResult().isPaused).toBeTruthy()

onlineManager.setOnline(true)
void queryClient.resumePausedMutations()

await vi.waitFor(() => {
expect(observer1.getCurrentResult().status).toBe('success')
expect(observer2.getCurrentResult().status).toBe('success')
})
await vi.advanceTimersByTimeAsync(70)
expect(observer1.getCurrentResult().status).toBe('success')
expect(observer2.getCurrentResult().status).toBe('success')

expect(orders).toEqual(['1start', '1end', '2start', '2end'])
})
Expand All @@ -1909,9 +1897,8 @@ describe('queryClient', () => {

onlineManager.setOnline(true)

await vi.waitFor(() => {
expect(observer.getCurrentResult().status).toBe('success')
})
await vi.advanceTimersByTimeAsync(0)
expect(observer.getCurrentResult().status).toBe('success')
})

test('should resumePausedMutations when coming online after having restored cache (and resumed) while offline', async () => {
Expand Down Expand Up @@ -1950,11 +1937,10 @@ describe('queryClient', () => {

onlineManager.setOnline(true)

await vi.waitFor(() => {
expect(
newQueryClient.getMutationCache().getAll()[0]?.state.status,
).toBe('success')
})
await vi.advanceTimersByTimeAsync(0)
expect(newQueryClient.getMutationCache().getAll()[0]?.state.status).toBe(
'success',
)

newQueryClient.unmount()
})
Expand All @@ -1977,9 +1963,8 @@ describe('queryClient', () => {

const unsubscribe = queryObserver.subscribe(() => undefined)

await vi.waitFor(() => {
expect(queryClient.getQueryData(key)).toBe('data1')
})
await vi.advanceTimersByTimeAsync(10)
expect(queryClient.getQueryData(key)).toBe('data1')

onlineManager.setOnline(false)

Expand Down Expand Up @@ -2022,21 +2007,13 @@ describe('queryClient', () => {

void observer3.mutate()

await vi.waitFor(() =>
expect(observer.getCurrentResult().isPaused).toBeTruthy(),
)
await vi.waitFor(() =>
expect(observer2.getCurrentResult().isPaused).toBeTruthy(),
)
await vi.waitFor(() =>
expect(observer3.getCurrentResult().isPaused).toBeTruthy(),
)

expect(observer.getCurrentResult().isPaused).toBeTruthy()
expect(observer2.getCurrentResult().isPaused).toBeTruthy()
expect(observer3.getCurrentResult().isPaused).toBeTruthy()
onlineManager.setOnline(true)

await vi.waitFor(() => {
expect(queryClient.getQueryData(key)).toBe('data2')
})
await vi.advanceTimersByTimeAsync(110)
expect(queryClient.getQueryData(key)).toBe('data2')

// refetch from coming online should happen after mutations have finished
expect(results).toStrictEqual([
Expand Down Expand Up @@ -2074,15 +2051,13 @@ describe('queryClient', () => {

onlineManager.setOnline(false)
onlineManager.setOnline(true)
await vi.waitFor(() =>
expect(queryCacheOnOnlineSpy).toHaveBeenCalledTimes(1),
)
await vi.advanceTimersByTimeAsync(0)
expect(queryCacheOnOnlineSpy).toHaveBeenCalledTimes(1)
expect(mutationCacheResumePausedMutationsSpy).toHaveBeenCalledTimes(1)

focusManager.setFocused(true)
await vi.waitFor(() =>
expect(queryCacheOnFocusSpy).toHaveBeenCalledTimes(1),
)
await vi.advanceTimersByTimeAsync(0)
expect(queryCacheOnFocusSpy).toHaveBeenCalledTimes(1)
expect(mutationCacheResumePausedMutationsSpy).toHaveBeenCalledTimes(2)

queryCacheOnFocusSpy.mockRestore()
Expand Down
Loading