|
1 | 1 | import { waitFor } from '@testing-library/react' |
2 | 2 | import '@testing-library/jest-dom' |
3 | 3 |
|
4 | | -import { sleep, queryKey, createQueryClient } from './utils' |
| 4 | +import { |
| 5 | + sleep, |
| 6 | + queryKey, |
| 7 | + createQueryClient, |
| 8 | + mockNavigatorOnLine, |
| 9 | +} from './utils' |
5 | 10 | import type { |
6 | 11 | QueryCache, |
7 | 12 | QueryClient, |
@@ -1020,6 +1025,33 @@ describe('queryClient', () => { |
1020 | 1025 | } |
1021 | 1026 | expect(error).toEqual('error') |
1022 | 1027 | }) |
| 1028 | + |
| 1029 | + test('should resolve Promise immediately if query is paused', async () => { |
| 1030 | + const key1 = queryKey() |
| 1031 | + const queryFn1 = vi.fn<unknown[], string>().mockReturnValue('data1') |
| 1032 | + await queryClient.fetchQuery({ queryKey: key1, queryFn: queryFn1 }) |
| 1033 | + const onlineMock = mockNavigatorOnLine(false) |
| 1034 | + |
| 1035 | + await queryClient.refetchQueries({ queryKey: key1 }) |
| 1036 | + |
| 1037 | + // if we reach this point, the test succeeds because the Promise was resolved immediately |
| 1038 | + expect(queryFn1).toHaveBeenCalledTimes(1) |
| 1039 | + onlineMock.mockRestore() |
| 1040 | + }) |
| 1041 | + |
| 1042 | + test('should refetch if query we are offline but query networkMode is always', async () => { |
| 1043 | + const key1 = queryKey() |
| 1044 | + queryClient.setQueryDefaults(key1, { networkMode: 'always' }) |
| 1045 | + const queryFn1 = vi.fn<unknown[], string>().mockReturnValue('data1') |
| 1046 | + await queryClient.fetchQuery({ queryKey: key1, queryFn: queryFn1 }) |
| 1047 | + const onlineMock = mockNavigatorOnLine(false) |
| 1048 | + |
| 1049 | + await queryClient.refetchQueries({ queryKey: key1 }) |
| 1050 | + |
| 1051 | + // initial fetch + refetch (even though we are offline) |
| 1052 | + expect(queryFn1).toHaveBeenCalledTimes(2) |
| 1053 | + onlineMock.mockRestore() |
| 1054 | + }) |
1023 | 1055 | }) |
1024 | 1056 |
|
1025 | 1057 | describe('invalidateQueries', () => { |
|
0 commit comments