@tanstack/solid-query 4.24.10 → 5.0.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/build/cjs/index.js +298 -0
- package/build/cjs/index.js.map +1 -0
- package/build/esm/index.js +283 -0
- package/build/esm/index.js.map +1 -0
- package/build/source/QueryClientProvider.jsx +21 -0
- package/build/source/__tests__/QueryClientProvider.test.jsx +120 -0
- package/build/{solid → source}/__tests__/createInfiniteQuery.test.jsx +228 -372
- package/build/{solid → source}/__tests__/createMutation.test.jsx +174 -165
- package/build/{solid → source}/__tests__/createQueries.test.jsx +86 -367
- package/build/{solid → source}/__tests__/createQuery.test.jsx +991 -943
- package/build/{solid → source}/__tests__/createQuery.types.test.jsx +35 -24
- package/build/{solid → source}/__tests__/suspense.test.jsx +177 -148
- package/build/{solid → source}/__tests__/transition.test.jsx +7 -4
- package/build/{solid → source}/__tests__/useIsFetching.test.jsx +68 -85
- package/build/{solid → source}/__tests__/useIsMutating.test.jsx +78 -93
- package/build/{solid → source}/__tests__/utils.jsx +3 -9
- package/build/source/createBaseQuery.js +147 -0
- package/build/source/createInfiniteQuery.js +6 -0
- package/build/{solid → source}/createMutation.js +7 -9
- package/build/source/createQueries.js +32 -0
- package/build/source/createQuery.js +6 -0
- package/build/{solid → source}/index.js +5 -3
- package/build/source/setBatchUpdatesFn.js +3 -0
- package/build/source/useIsFetching.js +12 -0
- package/build/source/useIsMutating.js +12 -0
- package/build/source/utils.js +7 -0
- package/build/types/QueryClientProvider.d.ts +9 -0
- package/build/{lib → types}/__tests__/utils.d.ts +3 -8
- package/build/types/createBaseQuery.d.ts +4 -0
- package/build/types/createInfiniteQuery.d.ts +3 -0
- package/build/types/createMutation.d.ts +3 -0
- package/build/{lib → types}/createQueries.d.ts +10 -8
- package/build/types/createQuery.d.ts +11 -0
- package/build/{lib → types}/index.d.ts +4 -3
- package/build/types/setBatchUpdatesFn.d.ts +1 -0
- package/build/types/types.d.ts +33 -0
- package/build/types/useIsFetching.d.ts +8 -0
- package/build/types/useIsMutating.d.ts +8 -0
- package/build/types/utils.d.ts +1 -0
- package/build/umd/index.js +2 -0
- package/build/umd/index.js.map +1 -0
- package/package.json +25 -17
- package/src/QueryClientProvider.tsx +17 -86
- package/src/__tests__/QueryClientProvider.test.tsx +37 -140
- package/src/__tests__/createInfiniteQuery.test.tsx +277 -508
- package/src/__tests__/createMutation.test.tsx +177 -225
- package/src/__tests__/createQueries.test.tsx +180 -528
- package/src/__tests__/createQuery.test.tsx +970 -1200
- package/src/__tests__/createQuery.types.test.tsx +30 -25
- package/src/__tests__/suspense.test.tsx +141 -178
- package/src/__tests__/transition.test.tsx +7 -4
- package/src/__tests__/useIsFetching.test.tsx +77 -122
- package/src/__tests__/useIsMutating.test.tsx +83 -128
- package/src/__tests__/utils.tsx +4 -11
- package/src/createBaseQuery.ts +148 -60
- package/src/createInfiniteQuery.ts +15 -94
- package/src/createMutation.ts +9 -63
- package/src/createQueries.ts +44 -55
- package/src/createQuery.ts +42 -127
- package/src/index.ts +6 -3
- package/src/setBatchUpdatesFn.ts +4 -0
- package/src/types.ts +81 -75
- package/src/useIsFetching.ts +12 -44
- package/src/useIsMutating.ts +13 -29
- package/src/utils.ts +5 -79
- package/build/lib/QueryClientProvider.d.ts +0 -24
- package/build/lib/QueryClientProvider.esm.js +0 -74
- package/build/lib/QueryClientProvider.esm.js.map +0 -1
- package/build/lib/QueryClientProvider.js +0 -80
- package/build/lib/QueryClientProvider.js.map +0 -1
- package/build/lib/QueryClientProvider.mjs +0 -74
- package/build/lib/QueryClientProvider.mjs.map +0 -1
- package/build/lib/createBaseQuery.d.ts +0 -4
- package/build/lib/createBaseQuery.esm.js +0 -93
- package/build/lib/createBaseQuery.esm.js.map +0 -1
- package/build/lib/createBaseQuery.js +0 -97
- package/build/lib/createBaseQuery.js.map +0 -1
- package/build/lib/createBaseQuery.mjs +0 -93
- package/build/lib/createBaseQuery.mjs.map +0 -1
- package/build/lib/createInfiniteQuery.d.ts +0 -5
- package/build/lib/createInfiniteQuery.esm.js +0 -20
- package/build/lib/createInfiniteQuery.esm.js.map +0 -1
- package/build/lib/createInfiniteQuery.js +0 -24
- package/build/lib/createInfiniteQuery.js.map +0 -1
- package/build/lib/createInfiniteQuery.mjs +0 -20
- package/build/lib/createInfiniteQuery.mjs.map +0 -1
- package/build/lib/createMutation.d.ts +0 -6
- package/build/lib/createMutation.esm.js +0 -45
- package/build/lib/createMutation.esm.js.map +0 -1
- package/build/lib/createMutation.js +0 -49
- package/build/lib/createMutation.js.map +0 -1
- package/build/lib/createMutation.mjs +0 -45
- package/build/lib/createMutation.mjs.map +0 -1
- package/build/lib/createQueries.esm.js +0 -54
- package/build/lib/createQueries.esm.js.map +0 -1
- package/build/lib/createQueries.js +0 -58
- package/build/lib/createQueries.js.map +0 -1
- package/build/lib/createQueries.mjs +0 -54
- package/build/lib/createQueries.mjs.map +0 -1
- package/build/lib/createQuery.d.ts +0 -23
- package/build/lib/createQuery.esm.js +0 -25
- package/build/lib/createQuery.esm.js.map +0 -1
- package/build/lib/createQuery.js +0 -29
- package/build/lib/createQuery.js.map +0 -1
- package/build/lib/createQuery.mjs +0 -25
- package/build/lib/createQuery.mjs.map +0 -1
- package/build/lib/index.esm.js +0 -9
- package/build/lib/index.esm.js.map +0 -1
- package/build/lib/index.js +0 -31
- package/build/lib/index.js.map +0 -1
- package/build/lib/index.mjs +0 -9
- package/build/lib/index.mjs.map +0 -1
- package/build/lib/types.d.ts +0 -47
- package/build/lib/useIsFetching.d.ts +0 -7
- package/build/lib/useIsFetching.esm.js +0 -29
- package/build/lib/useIsFetching.esm.js.map +0 -1
- package/build/lib/useIsFetching.js +0 -33
- package/build/lib/useIsFetching.js.map +0 -1
- package/build/lib/useIsFetching.mjs +0 -29
- package/build/lib/useIsFetching.mjs.map +0 -1
- package/build/lib/useIsMutating.d.ts +0 -8
- package/build/lib/useIsMutating.esm.js +0 -22
- package/build/lib/useIsMutating.esm.js.map +0 -1
- package/build/lib/useIsMutating.js +0 -26
- package/build/lib/useIsMutating.js.map +0 -1
- package/build/lib/useIsMutating.mjs +0 -22
- package/build/lib/useIsMutating.mjs.map +0 -1
- package/build/lib/utils.d.ts +0 -14
- package/build/lib/utils.esm.js +0 -63
- package/build/lib/utils.esm.js.map +0 -1
- package/build/lib/utils.js +0 -72
- package/build/lib/utils.js.map +0 -1
- package/build/lib/utils.mjs +0 -63
- package/build/lib/utils.mjs.map +0 -1
- package/build/solid/QueryClientProvider.jsx +0 -49
- package/build/solid/__tests__/QueryClientProvider.test.jsx +0 -185
- package/build/solid/createBaseQuery.js +0 -81
- package/build/solid/createInfiniteQuery.js +0 -16
- package/build/solid/createQueries.js +0 -39
- package/build/solid/createQuery.js +0 -16
- package/build/solid/useIsFetching.js +0 -23
- package/build/solid/useIsMutating.js +0 -16
- package/build/solid/utils.js +0 -45
- package/build/umd/index.development.js +0 -3577
- package/build/umd/index.development.js.map +0 -1
- package/build/umd/index.production.js +0 -2
- package/build/umd/index.production.js.map +0 -1
- /package/build/{solid → source}/types.js +0 -0
- /package/build/{lib → types}/__tests__/QueryClientProvider.test.d.ts +0 -0
- /package/build/{lib → types}/__tests__/createInfiniteQuery.test.d.ts +0 -0
- /package/build/{lib → types}/__tests__/createMutation.test.d.ts +0 -0
- /package/build/{lib → types}/__tests__/createQueries.test.d.ts +0 -0
- /package/build/{lib → types}/__tests__/createQuery.test.d.ts +0 -0
- /package/build/{lib → types}/__tests__/createQuery.types.test.d.ts +0 -0
- /package/build/{lib → types}/__tests__/suspense.test.d.ts +0 -0
- /package/build/{lib → types}/__tests__/transition.test.d.ts +0 -0
- /package/build/{lib → types}/__tests__/useIsFetching.test.d.ts +0 -0
- /package/build/{lib → types}/__tests__/useIsMutating.test.d.ts +0 -0
|
@@ -16,7 +16,12 @@ import type {
|
|
|
16
16
|
InfiniteData,
|
|
17
17
|
QueryFunctionContext,
|
|
18
18
|
} from '..'
|
|
19
|
-
import {
|
|
19
|
+
import {
|
|
20
|
+
createInfiniteQuery,
|
|
21
|
+
QueryCache,
|
|
22
|
+
QueryClientProvider,
|
|
23
|
+
keepPreviousData,
|
|
24
|
+
} from '..'
|
|
20
25
|
import { Blink, queryKey, setActTimeout } from './utils'
|
|
21
26
|
|
|
22
27
|
interface Result {
|
|
@@ -49,16 +54,15 @@ describe('useInfiniteQuery', () => {
|
|
|
49
54
|
|
|
50
55
|
it('should return the correct states for a successful query', async () => {
|
|
51
56
|
const key = queryKey()
|
|
52
|
-
const states: CreateInfiniteQueryResult<number
|
|
57
|
+
const states: CreateInfiniteQueryResult<InfiniteData<number>>[] = []
|
|
53
58
|
|
|
54
59
|
function Page() {
|
|
55
|
-
const state = createInfiniteQuery(
|
|
56
|
-
key,
|
|
57
|
-
({ pageParam
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
)
|
|
60
|
+
const state = createInfiniteQuery(() => ({
|
|
61
|
+
queryKey: key,
|
|
62
|
+
queryFn: ({ pageParam }) => Number(pageParam),
|
|
63
|
+
getNextPageParam: (lastPage) => lastPage + 1,
|
|
64
|
+
defaultPageParam: 0,
|
|
65
|
+
}))
|
|
62
66
|
createRenderEffect(() => {
|
|
63
67
|
states.push({ ...state })
|
|
64
68
|
})
|
|
@@ -84,8 +88,8 @@ describe('useInfiniteQuery', () => {
|
|
|
84
88
|
errorUpdateCount: 0,
|
|
85
89
|
fetchNextPage: expect.any(Function),
|
|
86
90
|
fetchPreviousPage: expect.any(Function),
|
|
87
|
-
hasNextPage:
|
|
88
|
-
hasPreviousPage:
|
|
91
|
+
hasNextPage: false,
|
|
92
|
+
hasPreviousPage: false,
|
|
89
93
|
isError: false,
|
|
90
94
|
isFetched: false,
|
|
91
95
|
isFetchedAfterMount: false,
|
|
@@ -93,23 +97,22 @@ describe('useInfiniteQuery', () => {
|
|
|
93
97
|
isPaused: false,
|
|
94
98
|
isFetchingNextPage: false,
|
|
95
99
|
isFetchingPreviousPage: false,
|
|
100
|
+
isPending: true,
|
|
96
101
|
isLoading: true,
|
|
97
102
|
isInitialLoading: true,
|
|
98
103
|
isLoadingError: false,
|
|
99
104
|
isPlaceholderData: false,
|
|
100
|
-
isPreviousData: false,
|
|
101
105
|
isRefetchError: false,
|
|
102
106
|
isRefetching: false,
|
|
103
107
|
isStale: true,
|
|
104
108
|
isSuccess: false,
|
|
105
109
|
refetch: expect.any(Function),
|
|
106
|
-
|
|
107
|
-
status: 'loading',
|
|
110
|
+
status: 'pending',
|
|
108
111
|
fetchStatus: 'fetching',
|
|
109
112
|
})
|
|
110
113
|
|
|
111
114
|
expect(states[1]).toEqual({
|
|
112
|
-
data: { pages: [0], pageParams: [
|
|
115
|
+
data: { pages: [0], pageParams: [0] },
|
|
113
116
|
dataUpdatedAt: expect.any(Number),
|
|
114
117
|
error: null,
|
|
115
118
|
errorUpdatedAt: 0,
|
|
@@ -119,7 +122,7 @@ describe('useInfiniteQuery', () => {
|
|
|
119
122
|
fetchNextPage: expect.any(Function),
|
|
120
123
|
fetchPreviousPage: expect.any(Function),
|
|
121
124
|
hasNextPage: true,
|
|
122
|
-
hasPreviousPage:
|
|
125
|
+
hasPreviousPage: false,
|
|
123
126
|
isError: false,
|
|
124
127
|
isFetched: true,
|
|
125
128
|
isFetchedAfterMount: true,
|
|
@@ -127,17 +130,16 @@ describe('useInfiniteQuery', () => {
|
|
|
127
130
|
isPaused: false,
|
|
128
131
|
isFetchingNextPage: false,
|
|
129
132
|
isFetchingPreviousPage: false,
|
|
133
|
+
isPending: false,
|
|
130
134
|
isLoading: false,
|
|
131
135
|
isInitialLoading: false,
|
|
132
136
|
isLoadingError: false,
|
|
133
137
|
isPlaceholderData: false,
|
|
134
|
-
isPreviousData: false,
|
|
135
138
|
isRefetchError: false,
|
|
136
139
|
isRefetching: false,
|
|
137
140
|
isStale: true,
|
|
138
141
|
isSuccess: true,
|
|
139
142
|
refetch: expect.any(Function),
|
|
140
|
-
remove: expect.any(Function),
|
|
141
143
|
status: 'success',
|
|
142
144
|
fetchStatus: 'idle',
|
|
143
145
|
})
|
|
@@ -149,20 +151,20 @@ describe('useInfiniteQuery', () => {
|
|
|
149
151
|
|
|
150
152
|
function Page() {
|
|
151
153
|
const start = 1
|
|
152
|
-
const state = createInfiniteQuery(
|
|
153
|
-
key,
|
|
154
|
-
async ({ pageParam
|
|
154
|
+
const state = createInfiniteQuery(() => ({
|
|
155
|
+
queryKey: key,
|
|
156
|
+
queryFn: async ({ pageParam }) => {
|
|
155
157
|
if (pageParam === 2) {
|
|
156
158
|
throw new Error('error')
|
|
157
159
|
}
|
|
158
160
|
return Number(pageParam)
|
|
159
161
|
},
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
)
|
|
162
|
+
|
|
163
|
+
retry: 1,
|
|
164
|
+
retryDelay: 10,
|
|
165
|
+
defaultPageParam: start,
|
|
166
|
+
getNextPageParam: (lastPage) => lastPage + 1,
|
|
167
|
+
}))
|
|
166
168
|
|
|
167
169
|
createEffect(() => {
|
|
168
170
|
const fetchNextPage = state.fetchNextPage
|
|
@@ -187,25 +189,25 @@ describe('useInfiniteQuery', () => {
|
|
|
187
189
|
await waitFor(() => expect(noThrow).toBe(true))
|
|
188
190
|
})
|
|
189
191
|
|
|
190
|
-
it('should keep the previous data when
|
|
192
|
+
it('should keep the previous data when placeholderData is set', async () => {
|
|
191
193
|
const key = queryKey()
|
|
192
|
-
const states: CreateInfiniteQueryResult<string
|
|
194
|
+
const states: CreateInfiniteQueryResult<InfiniteData<string>>[] = []
|
|
193
195
|
|
|
194
196
|
function Page() {
|
|
195
197
|
const [order, setOrder] = createSignal('desc')
|
|
196
198
|
|
|
197
|
-
const state = createInfiniteQuery(
|
|
198
|
-
|
|
199
|
-
async ({ pageParam
|
|
199
|
+
const state = createInfiniteQuery(() => ({
|
|
200
|
+
queryKey: [key, order()],
|
|
201
|
+
queryFn: async ({ pageParam }) => {
|
|
200
202
|
await sleep(10)
|
|
201
203
|
return `${pageParam}-${order()}`
|
|
202
204
|
},
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
)
|
|
205
|
+
|
|
206
|
+
getNextPageParam: () => 1,
|
|
207
|
+
defaultPageParam: 0,
|
|
208
|
+
placeholderData: keepPreviousData,
|
|
209
|
+
notifyOnChangeProps: 'all',
|
|
210
|
+
}))
|
|
209
211
|
|
|
210
212
|
createRenderEffect(() => {
|
|
211
213
|
states.push({ ...state })
|
|
@@ -242,28 +244,28 @@ describe('useInfiniteQuery', () => {
|
|
|
242
244
|
isFetching: true,
|
|
243
245
|
isFetchingNextPage: false,
|
|
244
246
|
isSuccess: false,
|
|
245
|
-
|
|
247
|
+
isPlaceholderData: false,
|
|
246
248
|
})
|
|
247
249
|
expect(states[1]).toMatchObject({
|
|
248
250
|
data: { pages: ['0-desc'] },
|
|
249
251
|
isFetching: false,
|
|
250
252
|
isFetchingNextPage: false,
|
|
251
253
|
isSuccess: true,
|
|
252
|
-
|
|
254
|
+
isPlaceholderData: false,
|
|
253
255
|
})
|
|
254
256
|
expect(states[2]).toMatchObject({
|
|
255
257
|
data: { pages: ['0-desc'] },
|
|
256
258
|
isFetching: true,
|
|
257
259
|
isFetchingNextPage: true,
|
|
258
260
|
isSuccess: true,
|
|
259
|
-
|
|
261
|
+
isPlaceholderData: false,
|
|
260
262
|
})
|
|
261
263
|
expect(states[3]).toMatchObject({
|
|
262
264
|
data: { pages: ['0-desc', '1-desc'] },
|
|
263
265
|
isFetching: false,
|
|
264
266
|
isFetchingNextPage: false,
|
|
265
267
|
isSuccess: true,
|
|
266
|
-
|
|
268
|
+
isPlaceholderData: false,
|
|
267
269
|
})
|
|
268
270
|
// Set state
|
|
269
271
|
expect(states[4]).toMatchObject({
|
|
@@ -271,28 +273,32 @@ describe('useInfiniteQuery', () => {
|
|
|
271
273
|
isFetching: true,
|
|
272
274
|
isFetchingNextPage: false,
|
|
273
275
|
isSuccess: true,
|
|
274
|
-
|
|
276
|
+
isPlaceholderData: true,
|
|
275
277
|
})
|
|
276
278
|
expect(states[5]).toMatchObject({
|
|
277
279
|
data: { pages: ['0-asc'] },
|
|
278
280
|
isFetching: false,
|
|
279
281
|
isFetchingNextPage: false,
|
|
280
282
|
isSuccess: true,
|
|
281
|
-
|
|
283
|
+
isPlaceholderData: false,
|
|
282
284
|
})
|
|
283
285
|
})
|
|
284
286
|
|
|
285
287
|
it('should be able to select a part of the data', async () => {
|
|
286
288
|
const key = queryKey()
|
|
287
|
-
const states: CreateInfiniteQueryResult<string
|
|
289
|
+
const states: CreateInfiniteQueryResult<InfiniteData<string>>[] = []
|
|
288
290
|
|
|
289
291
|
function Page() {
|
|
290
|
-
const state = createInfiniteQuery(
|
|
292
|
+
const state = createInfiniteQuery(() => ({
|
|
293
|
+
queryKey: key,
|
|
294
|
+
queryFn: () => ({ count: 1 }),
|
|
291
295
|
select: (data) => ({
|
|
292
296
|
pages: data.pages.map((x) => `count: ${x.count}`),
|
|
293
297
|
pageParams: data.pageParams,
|
|
294
298
|
}),
|
|
295
|
-
|
|
299
|
+
getNextPageParam: () => undefined,
|
|
300
|
+
defaultPageParam: 0,
|
|
301
|
+
}))
|
|
296
302
|
createRenderEffect(() => {
|
|
297
303
|
states.push({ ...state })
|
|
298
304
|
})
|
|
@@ -320,12 +326,15 @@ describe('useInfiniteQuery', () => {
|
|
|
320
326
|
|
|
321
327
|
it('should be able to select a new result and not cause infinite renders', async () => {
|
|
322
328
|
const key = queryKey()
|
|
323
|
-
const states: CreateInfiniteQueryResult<
|
|
324
|
-
|
|
329
|
+
const states: CreateInfiniteQueryResult<
|
|
330
|
+
InfiniteData<{ count: number; id: number }>
|
|
331
|
+
>[] = []
|
|
325
332
|
let selectCalled = 0
|
|
326
333
|
|
|
327
334
|
function Page() {
|
|
328
|
-
const state = createInfiniteQuery(
|
|
335
|
+
const state = createInfiniteQuery(() => ({
|
|
336
|
+
queryKey: key,
|
|
337
|
+
queryFn: () => ({ count: 1 }),
|
|
329
338
|
select: (data: InfiniteData<{ count: number }>) => {
|
|
330
339
|
selectCalled++
|
|
331
340
|
return {
|
|
@@ -333,7 +342,9 @@ describe('useInfiniteQuery', () => {
|
|
|
333
342
|
pageParams: data.pageParams,
|
|
334
343
|
}
|
|
335
344
|
},
|
|
336
|
-
|
|
345
|
+
getNextPageParam: () => undefined,
|
|
346
|
+
defaultPageParam: 0,
|
|
347
|
+
}))
|
|
337
348
|
createRenderEffect(() => {
|
|
338
349
|
states.push({ ...state })
|
|
339
350
|
})
|
|
@@ -362,23 +373,24 @@ describe('useInfiniteQuery', () => {
|
|
|
362
373
|
|
|
363
374
|
it('should be able to reverse the data', async () => {
|
|
364
375
|
const key = queryKey()
|
|
365
|
-
const states: CreateInfiniteQueryResult<number
|
|
376
|
+
const states: CreateInfiniteQueryResult<InfiniteData<number>>[] = []
|
|
366
377
|
|
|
367
378
|
function Page() {
|
|
368
|
-
const state = createInfiniteQuery(
|
|
369
|
-
key,
|
|
370
|
-
async ({ pageParam
|
|
379
|
+
const state = createInfiniteQuery(() => ({
|
|
380
|
+
queryKey: key,
|
|
381
|
+
queryFn: async ({ pageParam }) => {
|
|
371
382
|
await sleep(10)
|
|
372
383
|
return Number(pageParam)
|
|
373
384
|
},
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
385
|
+
|
|
386
|
+
select: (data) => ({
|
|
387
|
+
pages: [...data.pages].reverse(),
|
|
388
|
+
pageParams: [...data.pageParams].reverse(),
|
|
389
|
+
}),
|
|
390
|
+
notifyOnChangeProps: 'all',
|
|
391
|
+
getNextPageParam: () => 1,
|
|
392
|
+
defaultPageParam: 0,
|
|
393
|
+
}))
|
|
382
394
|
|
|
383
395
|
createRenderEffect(() => {
|
|
384
396
|
states.push({ ...state })
|
|
@@ -386,9 +398,7 @@ describe('useInfiniteQuery', () => {
|
|
|
386
398
|
|
|
387
399
|
return (
|
|
388
400
|
<div>
|
|
389
|
-
<button onClick={() => state.fetchNextPage(
|
|
390
|
-
fetchNextPage
|
|
391
|
-
</button>
|
|
401
|
+
<button onClick={() => state.fetchNextPage()}>fetchNextPage</button>
|
|
392
402
|
<div>data: {state.data?.pages.join(',') ?? 'null'}</div>
|
|
393
403
|
<div>isFetching: {state.isFetching}</div>
|
|
394
404
|
</div>
|
|
@@ -427,21 +437,21 @@ describe('useInfiniteQuery', () => {
|
|
|
427
437
|
|
|
428
438
|
it('should be able to fetch a previous page', async () => {
|
|
429
439
|
const key = queryKey()
|
|
430
|
-
const states: CreateInfiniteQueryResult<number
|
|
440
|
+
const states: CreateInfiniteQueryResult<InfiniteData<number>>[] = []
|
|
431
441
|
|
|
432
442
|
function Page() {
|
|
433
443
|
const start = 10
|
|
434
|
-
const state = createInfiniteQuery(
|
|
435
|
-
key,
|
|
436
|
-
async ({ pageParam
|
|
444
|
+
const state = createInfiniteQuery(() => ({
|
|
445
|
+
queryKey: key,
|
|
446
|
+
queryFn: async ({ pageParam }) => {
|
|
437
447
|
await sleep(10)
|
|
438
448
|
return Number(pageParam)
|
|
439
449
|
},
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
)
|
|
450
|
+
getNextPageParam: (lastPage) => lastPage + 1,
|
|
451
|
+
getPreviousPageParam: (firstPage) => firstPage - 1,
|
|
452
|
+
defaultPageParam: start,
|
|
453
|
+
notifyOnChangeProps: 'all',
|
|
454
|
+
}))
|
|
445
455
|
|
|
446
456
|
createRenderEffect(() => {
|
|
447
457
|
states.push({ ...state })
|
|
@@ -468,8 +478,8 @@ describe('useInfiniteQuery', () => {
|
|
|
468
478
|
expect(states.length).toBe(4)
|
|
469
479
|
expect(states[0]).toMatchObject({
|
|
470
480
|
data: undefined,
|
|
471
|
-
hasNextPage:
|
|
472
|
-
hasPreviousPage:
|
|
481
|
+
hasNextPage: false,
|
|
482
|
+
hasPreviousPage: false,
|
|
473
483
|
isFetching: true,
|
|
474
484
|
isFetchingNextPage: false,
|
|
475
485
|
isFetchingPreviousPage: false,
|
|
@@ -477,7 +487,7 @@ describe('useInfiniteQuery', () => {
|
|
|
477
487
|
})
|
|
478
488
|
expect(states[1]).toMatchObject({
|
|
479
489
|
data: { pages: [10] },
|
|
480
|
-
hasNextPage:
|
|
490
|
+
hasNextPage: true,
|
|
481
491
|
hasPreviousPage: true,
|
|
482
492
|
isFetching: false,
|
|
483
493
|
isFetchingNextPage: false,
|
|
@@ -486,7 +496,7 @@ describe('useInfiniteQuery', () => {
|
|
|
486
496
|
})
|
|
487
497
|
expect(states[2]).toMatchObject({
|
|
488
498
|
data: { pages: [10] },
|
|
489
|
-
hasNextPage:
|
|
499
|
+
hasNextPage: true,
|
|
490
500
|
hasPreviousPage: true,
|
|
491
501
|
isFetching: true,
|
|
492
502
|
isFetchingNextPage: false,
|
|
@@ -495,7 +505,7 @@ describe('useInfiniteQuery', () => {
|
|
|
495
505
|
})
|
|
496
506
|
expect(states[3]).toMatchObject({
|
|
497
507
|
data: { pages: [9, 10] },
|
|
498
|
-
hasNextPage:
|
|
508
|
+
hasNextPage: true,
|
|
499
509
|
hasPreviousPage: true,
|
|
500
510
|
isFetching: false,
|
|
501
511
|
isFetchingNextPage: false,
|
|
@@ -504,131 +514,23 @@ describe('useInfiniteQuery', () => {
|
|
|
504
514
|
})
|
|
505
515
|
})
|
|
506
516
|
|
|
507
|
-
it('should be able to refetch when providing page params manually', async () => {
|
|
508
|
-
const key = queryKey()
|
|
509
|
-
const states: CreateInfiniteQueryResult<number>[] = []
|
|
510
|
-
|
|
511
|
-
function Page() {
|
|
512
|
-
const state = createInfiniteQuery(key, async ({ pageParam = 10 }) => {
|
|
513
|
-
await sleep(10)
|
|
514
|
-
return Number(pageParam)
|
|
515
|
-
})
|
|
516
|
-
|
|
517
|
-
createRenderEffect(() => {
|
|
518
|
-
states.push({ ...state })
|
|
519
|
-
})
|
|
520
|
-
|
|
521
|
-
return (
|
|
522
|
-
<div>
|
|
523
|
-
<button onClick={() => state.fetchNextPage({ pageParam: 11 })}>
|
|
524
|
-
fetchNextPage
|
|
525
|
-
</button>
|
|
526
|
-
<button onClick={() => state.fetchPreviousPage({ pageParam: 9 })}>
|
|
527
|
-
fetchPreviousPage
|
|
528
|
-
</button>
|
|
529
|
-
<button onClick={() => state.refetch()}>refetch</button>
|
|
530
|
-
<div>data: {state.data?.pages.join(',') ?? 'null'}</div>
|
|
531
|
-
<div>isFetching: {String(state.isFetching)}</div>
|
|
532
|
-
</div>
|
|
533
|
-
)
|
|
534
|
-
}
|
|
535
|
-
|
|
536
|
-
render(() => (
|
|
537
|
-
<QueryClientProvider client={queryClient}>
|
|
538
|
-
<Page />
|
|
539
|
-
</QueryClientProvider>
|
|
540
|
-
))
|
|
541
|
-
|
|
542
|
-
await waitFor(() => screen.getByText('data: 10'))
|
|
543
|
-
fireEvent.click(screen.getByRole('button', { name: /fetchNextPage/i }))
|
|
544
|
-
|
|
545
|
-
await waitFor(() => screen.getByText('data: 10,11'))
|
|
546
|
-
fireEvent.click(screen.getByRole('button', { name: /fetchPreviousPage/i }))
|
|
547
|
-
await waitFor(() => screen.getByText('data: 9,10,11'))
|
|
548
|
-
fireEvent.click(screen.getByRole('button', { name: /refetch/i }))
|
|
549
|
-
|
|
550
|
-
await waitFor(() => screen.getByText('isFetching: false'))
|
|
551
|
-
await waitFor(() => expect(states.length).toBe(8))
|
|
552
|
-
|
|
553
|
-
// Initial fetch
|
|
554
|
-
expect(states[0]).toMatchObject({
|
|
555
|
-
data: undefined,
|
|
556
|
-
isFetching: true,
|
|
557
|
-
isFetchingNextPage: false,
|
|
558
|
-
isRefetching: false,
|
|
559
|
-
})
|
|
560
|
-
// Initial fetch done
|
|
561
|
-
expect(states[1]).toMatchObject({
|
|
562
|
-
data: { pages: [10] },
|
|
563
|
-
isFetching: false,
|
|
564
|
-
isFetchingNextPage: false,
|
|
565
|
-
isRefetching: false,
|
|
566
|
-
})
|
|
567
|
-
// Fetch next page
|
|
568
|
-
expect(states[2]).toMatchObject({
|
|
569
|
-
data: { pages: [10] },
|
|
570
|
-
isFetching: true,
|
|
571
|
-
isFetchingNextPage: true,
|
|
572
|
-
isRefetching: false,
|
|
573
|
-
})
|
|
574
|
-
// Fetch next page done
|
|
575
|
-
expect(states[3]).toMatchObject({
|
|
576
|
-
data: { pages: [10, 11] },
|
|
577
|
-
isFetching: false,
|
|
578
|
-
isFetchingNextPage: false,
|
|
579
|
-
isRefetching: false,
|
|
580
|
-
})
|
|
581
|
-
// Fetch previous page
|
|
582
|
-
expect(states[4]).toMatchObject({
|
|
583
|
-
data: { pages: [10, 11] },
|
|
584
|
-
isFetching: true,
|
|
585
|
-
isFetchingNextPage: false,
|
|
586
|
-
isFetchingPreviousPage: true,
|
|
587
|
-
isRefetching: false,
|
|
588
|
-
})
|
|
589
|
-
// Fetch previous page done
|
|
590
|
-
expect(states[5]).toMatchObject({
|
|
591
|
-
data: { pages: [9, 10, 11] },
|
|
592
|
-
isFetching: false,
|
|
593
|
-
isFetchingNextPage: false,
|
|
594
|
-
isFetchingPreviousPage: false,
|
|
595
|
-
isRefetching: false,
|
|
596
|
-
})
|
|
597
|
-
// Refetch
|
|
598
|
-
expect(states[6]).toMatchObject({
|
|
599
|
-
data: { pages: [9, 10, 11] },
|
|
600
|
-
isFetching: true,
|
|
601
|
-
isFetchingNextPage: false,
|
|
602
|
-
isFetchingPreviousPage: false,
|
|
603
|
-
isRefetching: true,
|
|
604
|
-
})
|
|
605
|
-
// Refetch done
|
|
606
|
-
expect(states[7]).toMatchObject({
|
|
607
|
-
data: { pages: [9, 10, 11] },
|
|
608
|
-
isFetching: false,
|
|
609
|
-
isFetchingNextPage: false,
|
|
610
|
-
isFetchingPreviousPage: false,
|
|
611
|
-
isRefetching: false,
|
|
612
|
-
})
|
|
613
|
-
})
|
|
614
|
-
|
|
615
517
|
it('should be able to refetch when providing page params automatically', async () => {
|
|
616
518
|
const key = queryKey()
|
|
617
|
-
const states: CreateInfiniteQueryResult<number
|
|
519
|
+
const states: CreateInfiniteQueryResult<InfiniteData<number>>[] = []
|
|
618
520
|
|
|
619
521
|
function Page() {
|
|
620
|
-
const state = createInfiniteQuery(
|
|
621
|
-
key,
|
|
622
|
-
async ({ pageParam
|
|
522
|
+
const state = createInfiniteQuery(() => ({
|
|
523
|
+
queryKey: key,
|
|
524
|
+
queryFn: async ({ pageParam }) => {
|
|
623
525
|
await sleep(10)
|
|
624
526
|
return Number(pageParam)
|
|
625
527
|
},
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
)
|
|
528
|
+
|
|
529
|
+
getPreviousPageParam: (firstPage) => firstPage - 1,
|
|
530
|
+
getNextPageParam: (lastPage) => lastPage + 1,
|
|
531
|
+
defaultPageParam: 10,
|
|
532
|
+
notifyOnChangeProps: 'all',
|
|
533
|
+
}))
|
|
632
534
|
|
|
633
535
|
createRenderEffect(() => {
|
|
634
536
|
states.push({ ...state })
|
|
@@ -726,118 +628,23 @@ describe('useInfiniteQuery', () => {
|
|
|
726
628
|
})
|
|
727
629
|
})
|
|
728
630
|
|
|
729
|
-
it('should be able to refetch only specific pages when refetchPages is provided', async () => {
|
|
730
|
-
const key = queryKey()
|
|
731
|
-
const states: CreateInfiniteQueryResult<number>[] = []
|
|
732
|
-
|
|
733
|
-
function Page() {
|
|
734
|
-
let multiplier = 1
|
|
735
|
-
const state = createInfiniteQuery(
|
|
736
|
-
key,
|
|
737
|
-
async ({ pageParam = 10 }) => {
|
|
738
|
-
await sleep(10)
|
|
739
|
-
return Number(pageParam) * multiplier
|
|
740
|
-
},
|
|
741
|
-
{
|
|
742
|
-
getNextPageParam: (lastPage) => lastPage + 1,
|
|
743
|
-
notifyOnChangeProps: 'all',
|
|
744
|
-
},
|
|
745
|
-
)
|
|
746
|
-
|
|
747
|
-
createRenderEffect(() => {
|
|
748
|
-
states.push({ ...state })
|
|
749
|
-
})
|
|
750
|
-
|
|
751
|
-
return (
|
|
752
|
-
<div>
|
|
753
|
-
<button onClick={() => state.fetchNextPage()}>fetchNextPage</button>
|
|
754
|
-
<button
|
|
755
|
-
onClick={() => {
|
|
756
|
-
multiplier = 2
|
|
757
|
-
state.refetch({
|
|
758
|
-
refetchPage: (_, index) => index === 0,
|
|
759
|
-
})
|
|
760
|
-
}}
|
|
761
|
-
>
|
|
762
|
-
refetchPage
|
|
763
|
-
</button>
|
|
764
|
-
<div>data: {state.data?.pages.join(',') ?? 'null'}</div>
|
|
765
|
-
<div>isFetching: {String(state.isFetching)}</div>
|
|
766
|
-
</div>
|
|
767
|
-
)
|
|
768
|
-
}
|
|
769
|
-
|
|
770
|
-
render(() => (
|
|
771
|
-
<QueryClientProvider client={queryClient}>
|
|
772
|
-
<Page />
|
|
773
|
-
</QueryClientProvider>
|
|
774
|
-
))
|
|
775
|
-
|
|
776
|
-
await waitFor(() => screen.getByText('data: 10'))
|
|
777
|
-
fireEvent.click(screen.getByRole('button', { name: /fetchNextPage/i }))
|
|
778
|
-
|
|
779
|
-
await waitFor(() => screen.getByText('data: 10,11'))
|
|
780
|
-
fireEvent.click(screen.getByRole('button', { name: /refetchPage/i }))
|
|
781
|
-
|
|
782
|
-
await waitFor(() => screen.getByText('data: 20,11'))
|
|
783
|
-
await waitFor(() => screen.getByText('isFetching: false'))
|
|
784
|
-
await waitFor(() => expect(states.length).toBe(6))
|
|
785
|
-
|
|
786
|
-
// Initial fetch
|
|
787
|
-
expect(states[0]).toMatchObject({
|
|
788
|
-
data: undefined,
|
|
789
|
-
isFetching: true,
|
|
790
|
-
isFetchingNextPage: false,
|
|
791
|
-
})
|
|
792
|
-
// Initial fetch done
|
|
793
|
-
expect(states[1]).toMatchObject({
|
|
794
|
-
data: { pages: [10] },
|
|
795
|
-
isFetching: false,
|
|
796
|
-
isFetchingNextPage: false,
|
|
797
|
-
})
|
|
798
|
-
// Fetch next page
|
|
799
|
-
expect(states[2]).toMatchObject({
|
|
800
|
-
data: { pages: [10] },
|
|
801
|
-
isFetching: true,
|
|
802
|
-
isFetchingNextPage: true,
|
|
803
|
-
})
|
|
804
|
-
// Fetch next page done
|
|
805
|
-
expect(states[3]).toMatchObject({
|
|
806
|
-
data: { pages: [10, 11] },
|
|
807
|
-
isFetching: false,
|
|
808
|
-
isFetchingNextPage: false,
|
|
809
|
-
})
|
|
810
|
-
// Refetch
|
|
811
|
-
expect(states[4]).toMatchObject({
|
|
812
|
-
data: { pages: [10, 11] },
|
|
813
|
-
isFetching: true,
|
|
814
|
-
isFetchingNextPage: false,
|
|
815
|
-
})
|
|
816
|
-
// Refetch done, only page one has been refetched and multiplied
|
|
817
|
-
expect(states[5]).toMatchObject({
|
|
818
|
-
data: { pages: [20, 11] },
|
|
819
|
-
isFetching: false,
|
|
820
|
-
isFetchingNextPage: false,
|
|
821
|
-
})
|
|
822
|
-
})
|
|
823
|
-
|
|
824
631
|
it('should silently cancel any ongoing fetch when fetching more', async () => {
|
|
825
632
|
const key = queryKey()
|
|
826
|
-
const states: CreateInfiniteQueryResult<number
|
|
633
|
+
const states: CreateInfiniteQueryResult<InfiniteData<number>>[] = []
|
|
827
634
|
|
|
828
635
|
function Page() {
|
|
829
636
|
const start = 10
|
|
830
|
-
const state = createInfiniteQuery(
|
|
831
|
-
key,
|
|
832
|
-
async ({ pageParam
|
|
637
|
+
const state = createInfiniteQuery(() => ({
|
|
638
|
+
queryKey: key,
|
|
639
|
+
queryFn: async ({ pageParam }) => {
|
|
833
640
|
await sleep(50)
|
|
834
641
|
return Number(pageParam)
|
|
835
642
|
},
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
)
|
|
643
|
+
|
|
644
|
+
getNextPageParam: (lastPage) => lastPage + 1,
|
|
645
|
+
defaultPageParam: start,
|
|
646
|
+
notifyOnChangeProps: 'all',
|
|
647
|
+
}))
|
|
841
648
|
|
|
842
649
|
createRenderEffect(() => {
|
|
843
650
|
states.push({ ...state })
|
|
@@ -866,7 +673,7 @@ describe('useInfiniteQuery', () => {
|
|
|
866
673
|
|
|
867
674
|
expect(states.length).toBe(5)
|
|
868
675
|
expect(states[0]).toMatchObject({
|
|
869
|
-
hasNextPage:
|
|
676
|
+
hasNextPage: false,
|
|
870
677
|
data: undefined,
|
|
871
678
|
isFetching: true,
|
|
872
679
|
isFetchingNextPage: false,
|
|
@@ -909,24 +716,26 @@ describe('useInfiniteQuery', () => {
|
|
|
909
716
|
const abortListeners: jest.Mock<any, any>[] = []
|
|
910
717
|
const fetchPage = jest.fn<
|
|
911
718
|
Promise<number>,
|
|
912
|
-
[QueryFunctionContext<
|
|
913
|
-
>(async ({ pageParam
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
}
|
|
719
|
+
[QueryFunctionContext<typeof key, number>]
|
|
720
|
+
>(async ({ pageParam, signal }) => {
|
|
721
|
+
const onAbort = jest.fn()
|
|
722
|
+
const abortListener = jest.fn()
|
|
723
|
+
onAborts.push(onAbort)
|
|
724
|
+
abortListeners.push(abortListener)
|
|
725
|
+
signal.onabort = onAbort
|
|
726
|
+
signal.addEventListener('abort', abortListener)
|
|
727
|
+
|
|
922
728
|
await sleep(50)
|
|
923
729
|
return Number(pageParam)
|
|
924
730
|
})
|
|
925
731
|
|
|
926
732
|
function Page() {
|
|
927
|
-
const state = createInfiniteQuery(
|
|
733
|
+
const state = createInfiniteQuery(() => ({
|
|
734
|
+
queryKey: key,
|
|
735
|
+
queryFn: fetchPage,
|
|
928
736
|
getNextPageParam: (lastPage) => lastPage + 1,
|
|
929
|
-
|
|
737
|
+
defaultPageParam: start,
|
|
738
|
+
}))
|
|
930
739
|
|
|
931
740
|
createEffect(() => {
|
|
932
741
|
const { fetchNextPage } = state
|
|
@@ -956,28 +765,28 @@ describe('useInfiniteQuery', () => {
|
|
|
956
765
|
|
|
957
766
|
let callIndex = 0
|
|
958
767
|
const firstCtx = fetchPage.mock.calls[callIndex]![0]
|
|
959
|
-
expect(firstCtx.pageParam).
|
|
960
|
-
expect(firstCtx.queryKey).toEqual(key
|
|
768
|
+
expect(firstCtx.pageParam).toEqual(start)
|
|
769
|
+
expect(firstCtx.queryKey).toEqual(key)
|
|
961
770
|
expect(firstCtx.signal).toBeInstanceOf(AbortSignal)
|
|
962
|
-
expect(firstCtx.signal
|
|
771
|
+
expect(firstCtx.signal.aborted).toBe(false)
|
|
963
772
|
expect(onAborts[callIndex]).not.toHaveBeenCalled()
|
|
964
773
|
expect(abortListeners[callIndex]).not.toHaveBeenCalled()
|
|
965
774
|
|
|
966
775
|
callIndex = 1
|
|
967
776
|
const secondCtx = fetchPage.mock.calls[callIndex]![0]
|
|
968
777
|
expect(secondCtx.pageParam).toBe(11)
|
|
969
|
-
expect(secondCtx.queryKey).toEqual(key
|
|
778
|
+
expect(secondCtx.queryKey).toEqual(key)
|
|
970
779
|
expect(secondCtx.signal).toBeInstanceOf(AbortSignal)
|
|
971
|
-
expect(secondCtx.signal
|
|
780
|
+
expect(secondCtx.signal.aborted).toBe(true)
|
|
972
781
|
expect(onAborts[callIndex]).toHaveBeenCalledTimes(1)
|
|
973
782
|
expect(abortListeners[callIndex]).toHaveBeenCalledTimes(1)
|
|
974
783
|
|
|
975
784
|
callIndex = 2
|
|
976
785
|
const thirdCtx = fetchPage.mock.calls[callIndex]![0]
|
|
977
786
|
expect(thirdCtx.pageParam).toBe(11)
|
|
978
|
-
expect(thirdCtx.queryKey).toEqual(key
|
|
787
|
+
expect(thirdCtx.queryKey).toEqual(key)
|
|
979
788
|
expect(thirdCtx.signal).toBeInstanceOf(AbortSignal)
|
|
980
|
-
expect(thirdCtx.signal
|
|
789
|
+
expect(thirdCtx.signal.aborted).toBe(false)
|
|
981
790
|
expect(onAborts[callIndex]).not.toHaveBeenCalled()
|
|
982
791
|
expect(abortListeners[callIndex]).not.toHaveBeenCalled()
|
|
983
792
|
})
|
|
@@ -989,24 +798,26 @@ describe('useInfiniteQuery', () => {
|
|
|
989
798
|
const abortListeners: jest.Mock<any, any>[] = []
|
|
990
799
|
const fetchPage = jest.fn<
|
|
991
800
|
Promise<number>,
|
|
992
|
-
[QueryFunctionContext<
|
|
993
|
-
>(async ({ pageParam
|
|
994
|
-
|
|
995
|
-
|
|
996
|
-
|
|
997
|
-
|
|
998
|
-
|
|
999
|
-
|
|
1000
|
-
|
|
1001
|
-
}
|
|
801
|
+
[QueryFunctionContext<typeof key, number>]
|
|
802
|
+
>(async ({ pageParam, signal }) => {
|
|
803
|
+
const onAbort = jest.fn()
|
|
804
|
+
const abortListener = jest.fn()
|
|
805
|
+
onAborts.push(onAbort)
|
|
806
|
+
abortListeners.push(abortListener)
|
|
807
|
+
signal.onabort = onAbort
|
|
808
|
+
signal.addEventListener('abort', abortListener)
|
|
809
|
+
|
|
1002
810
|
await sleep(50)
|
|
1003
811
|
return Number(pageParam)
|
|
1004
812
|
})
|
|
1005
813
|
|
|
1006
814
|
function Page() {
|
|
1007
|
-
const state = createInfiniteQuery(
|
|
815
|
+
const state = createInfiniteQuery(() => ({
|
|
816
|
+
queryKey: key,
|
|
817
|
+
queryFn: fetchPage,
|
|
1008
818
|
getNextPageParam: (lastPage) => lastPage + 1,
|
|
1009
|
-
|
|
819
|
+
defaultPageParam: start,
|
|
820
|
+
}))
|
|
1010
821
|
|
|
1011
822
|
createEffect(() => {
|
|
1012
823
|
const { fetchNextPage } = state
|
|
@@ -1036,40 +847,40 @@ describe('useInfiniteQuery', () => {
|
|
|
1036
847
|
|
|
1037
848
|
let callIndex = 0
|
|
1038
849
|
const firstCtx = fetchPage.mock.calls[callIndex]![0]
|
|
1039
|
-
expect(firstCtx.pageParam).
|
|
1040
|
-
expect(firstCtx.queryKey).toEqual(key
|
|
850
|
+
expect(firstCtx.pageParam).toEqual(start)
|
|
851
|
+
expect(firstCtx.queryKey).toEqual(key)
|
|
1041
852
|
expect(firstCtx.signal).toBeInstanceOf(AbortSignal)
|
|
1042
|
-
expect(firstCtx.signal
|
|
853
|
+
expect(firstCtx.signal.aborted).toBe(false)
|
|
1043
854
|
expect(onAborts[callIndex]).not.toHaveBeenCalled()
|
|
1044
855
|
expect(abortListeners[callIndex]).not.toHaveBeenCalled()
|
|
1045
856
|
|
|
1046
857
|
callIndex = 1
|
|
1047
858
|
const secondCtx = fetchPage.mock.calls[callIndex]![0]
|
|
1048
859
|
expect(secondCtx.pageParam).toBe(11)
|
|
1049
|
-
expect(secondCtx.queryKey).toEqual(key
|
|
860
|
+
expect(secondCtx.queryKey).toEqual(key)
|
|
1050
861
|
expect(secondCtx.signal).toBeInstanceOf(AbortSignal)
|
|
1051
|
-
expect(secondCtx.signal
|
|
862
|
+
expect(secondCtx.signal.aborted).toBe(false)
|
|
1052
863
|
expect(onAborts[callIndex]).not.toHaveBeenCalled()
|
|
1053
864
|
expect(abortListeners[callIndex]).not.toHaveBeenCalled()
|
|
1054
865
|
})
|
|
1055
866
|
|
|
1056
867
|
it('should keep fetching first page when not loaded yet and triggering fetch more', async () => {
|
|
1057
868
|
const key = queryKey()
|
|
1058
|
-
const states: CreateInfiniteQueryResult<number
|
|
869
|
+
const states: CreateInfiniteQueryResult<InfiniteData<number>>[] = []
|
|
1059
870
|
|
|
1060
871
|
function Page() {
|
|
1061
872
|
const start = 10
|
|
1062
|
-
const state = createInfiniteQuery(
|
|
1063
|
-
key,
|
|
1064
|
-
async ({ pageParam
|
|
873
|
+
const state = createInfiniteQuery(() => ({
|
|
874
|
+
queryKey: key,
|
|
875
|
+
queryFn: async ({ pageParam }) => {
|
|
1065
876
|
await sleep(50)
|
|
1066
877
|
return Number(pageParam)
|
|
1067
878
|
},
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
)
|
|
879
|
+
|
|
880
|
+
getNextPageParam: (lastPage) => lastPage + 1,
|
|
881
|
+
defaultPageParam: start,
|
|
882
|
+
notifyOnChangeProps: 'all',
|
|
883
|
+
}))
|
|
1073
884
|
|
|
1074
885
|
createRenderEffect(() => {
|
|
1075
886
|
states.push({ ...state })
|
|
@@ -1095,7 +906,7 @@ describe('useInfiniteQuery', () => {
|
|
|
1095
906
|
|
|
1096
907
|
expect(states.length).toBe(2)
|
|
1097
908
|
expect(states[0]).toMatchObject({
|
|
1098
|
-
hasNextPage:
|
|
909
|
+
hasNextPage: false,
|
|
1099
910
|
data: undefined,
|
|
1100
911
|
isFetching: true,
|
|
1101
912
|
isFetchingNextPage: false,
|
|
@@ -1117,20 +928,20 @@ describe('useInfiniteQuery', () => {
|
|
|
1117
928
|
const initialData = { pages: [1, 2, 3, 4], pageParams: [0, 1, 2, 3] }
|
|
1118
929
|
|
|
1119
930
|
function List() {
|
|
1120
|
-
createInfiniteQuery(
|
|
1121
|
-
key,
|
|
1122
|
-
async ({ pageParam
|
|
931
|
+
createInfiniteQuery(() => ({
|
|
932
|
+
queryKey: key,
|
|
933
|
+
queryFn: async ({ pageParam, signal: _ }) => {
|
|
1123
934
|
fetches++
|
|
1124
935
|
await sleep(50)
|
|
1125
936
|
return Number(pageParam) * 10
|
|
1126
937
|
},
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
},
|
|
938
|
+
|
|
939
|
+
initialData,
|
|
940
|
+
getNextPageParam: (_, allPages) => {
|
|
941
|
+
return allPages.length === 4 ? undefined : allPages.length
|
|
1132
942
|
},
|
|
1133
|
-
|
|
943
|
+
defaultPageParam: 0,
|
|
944
|
+
}))
|
|
1134
945
|
|
|
1135
946
|
return null
|
|
1136
947
|
}
|
|
@@ -1156,101 +967,31 @@ describe('useInfiniteQuery', () => {
|
|
|
1156
967
|
await sleep(300)
|
|
1157
968
|
|
|
1158
969
|
expect(fetches).toBe(2)
|
|
1159
|
-
expect(queryClient.getQueryState(key
|
|
970
|
+
expect(queryClient.getQueryState(key)).toMatchObject({
|
|
1160
971
|
data: initialData,
|
|
1161
972
|
status: 'success',
|
|
1162
973
|
error: null,
|
|
1163
974
|
})
|
|
1164
975
|
})
|
|
1165
976
|
|
|
1166
|
-
it('should be able to override the cursor in the fetchNextPage callback', async () => {
|
|
1167
|
-
const key = queryKey()
|
|
1168
|
-
const states: CreateInfiniteQueryResult<number>[] = []
|
|
1169
|
-
|
|
1170
|
-
function Page() {
|
|
1171
|
-
const state = createInfiniteQuery(
|
|
1172
|
-
key,
|
|
1173
|
-
async ({ pageParam = 0 }) => {
|
|
1174
|
-
await sleep(10)
|
|
1175
|
-
return Number(pageParam)
|
|
1176
|
-
},
|
|
1177
|
-
{
|
|
1178
|
-
getNextPageParam: (lastPage) => lastPage + 1,
|
|
1179
|
-
notifyOnChangeProps: 'all',
|
|
1180
|
-
},
|
|
1181
|
-
)
|
|
1182
|
-
|
|
1183
|
-
createRenderEffect(() => {
|
|
1184
|
-
states.push({ ...state })
|
|
1185
|
-
})
|
|
1186
|
-
|
|
1187
|
-
createEffect(() => {
|
|
1188
|
-
const { fetchNextPage } = state
|
|
1189
|
-
setActTimeout(() => {
|
|
1190
|
-
fetchNextPage({ pageParam: 5 })
|
|
1191
|
-
}, 20)
|
|
1192
|
-
})
|
|
1193
|
-
|
|
1194
|
-
return null
|
|
1195
|
-
}
|
|
1196
|
-
|
|
1197
|
-
render(() => (
|
|
1198
|
-
<QueryClientProvider client={queryClient}>
|
|
1199
|
-
<Page />
|
|
1200
|
-
</QueryClientProvider>
|
|
1201
|
-
))
|
|
1202
|
-
|
|
1203
|
-
await sleep(100)
|
|
1204
|
-
|
|
1205
|
-
expect(states.length).toBe(4)
|
|
1206
|
-
expect(states[0]).toMatchObject({
|
|
1207
|
-
hasNextPage: undefined,
|
|
1208
|
-
data: undefined,
|
|
1209
|
-
isFetching: true,
|
|
1210
|
-
isFetchingNextPage: false,
|
|
1211
|
-
isSuccess: false,
|
|
1212
|
-
})
|
|
1213
|
-
expect(states[1]).toMatchObject({
|
|
1214
|
-
hasNextPage: true,
|
|
1215
|
-
data: { pages: [0] },
|
|
1216
|
-
isFetching: false,
|
|
1217
|
-
isFetchingNextPage: false,
|
|
1218
|
-
isSuccess: true,
|
|
1219
|
-
})
|
|
1220
|
-
expect(states[2]).toMatchObject({
|
|
1221
|
-
hasNextPage: true,
|
|
1222
|
-
data: { pages: [0] },
|
|
1223
|
-
isFetching: true,
|
|
1224
|
-
isFetchingNextPage: true,
|
|
1225
|
-
isSuccess: true,
|
|
1226
|
-
})
|
|
1227
|
-
expect(states[3]).toMatchObject({
|
|
1228
|
-
hasNextPage: true,
|
|
1229
|
-
data: { pages: [0, 5] },
|
|
1230
|
-
isFetching: false,
|
|
1231
|
-
isFetchingNextPage: false,
|
|
1232
|
-
isSuccess: true,
|
|
1233
|
-
})
|
|
1234
|
-
})
|
|
1235
|
-
|
|
1236
977
|
it('should be able to set new pages with the query client', async () => {
|
|
1237
978
|
const key = queryKey()
|
|
1238
|
-
const states: CreateInfiniteQueryResult<number
|
|
979
|
+
const states: CreateInfiniteQueryResult<InfiniteData<number>>[] = []
|
|
1239
980
|
|
|
1240
981
|
function Page() {
|
|
1241
982
|
const [firstPage, setFirstPage] = createSignal(0)
|
|
1242
983
|
|
|
1243
|
-
const state = createInfiniteQuery(
|
|
1244
|
-
key,
|
|
1245
|
-
async ({ pageParam
|
|
984
|
+
const state = createInfiniteQuery(() => ({
|
|
985
|
+
queryKey: key,
|
|
986
|
+
queryFn: async ({ pageParam }) => {
|
|
1246
987
|
await sleep(10)
|
|
1247
988
|
return Number(pageParam)
|
|
1248
989
|
},
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
)
|
|
990
|
+
|
|
991
|
+
getNextPageParam: (lastPage) => lastPage + 1,
|
|
992
|
+
notifyOnChangeProps: 'all',
|
|
993
|
+
defaultPageParam: firstPage(),
|
|
994
|
+
}))
|
|
1254
995
|
|
|
1255
996
|
createRenderEffect(() => {
|
|
1256
997
|
states.push({ ...state })
|
|
@@ -1259,7 +1000,7 @@ describe('useInfiniteQuery', () => {
|
|
|
1259
1000
|
createEffect(() => {
|
|
1260
1001
|
const { refetch } = state
|
|
1261
1002
|
setActTimeout(() => {
|
|
1262
|
-
queryClient.setQueryData(key
|
|
1003
|
+
queryClient.setQueryData(key, { pages: [7, 8], pageParams: [7, 8] })
|
|
1263
1004
|
setFirstPage(7)
|
|
1264
1005
|
}, 20)
|
|
1265
1006
|
|
|
@@ -1281,7 +1022,7 @@ describe('useInfiniteQuery', () => {
|
|
|
1281
1022
|
|
|
1282
1023
|
expect(states.length).toBe(5)
|
|
1283
1024
|
expect(states[0]).toMatchObject({
|
|
1284
|
-
hasNextPage:
|
|
1025
|
+
hasNextPage: false,
|
|
1285
1026
|
data: undefined,
|
|
1286
1027
|
isFetching: true,
|
|
1287
1028
|
isFetchingNextPage: false,
|
|
@@ -1323,21 +1064,21 @@ describe('useInfiniteQuery', () => {
|
|
|
1323
1064
|
|
|
1324
1065
|
it('should only refetch the first page when initialData is provided', async () => {
|
|
1325
1066
|
const key = queryKey()
|
|
1326
|
-
const states: CreateInfiniteQueryResult<number
|
|
1067
|
+
const states: CreateInfiniteQueryResult<InfiniteData<number>>[] = []
|
|
1327
1068
|
|
|
1328
1069
|
function Page() {
|
|
1329
|
-
const state = createInfiniteQuery(
|
|
1330
|
-
key,
|
|
1331
|
-
async ({ pageParam }): Promise<number> => {
|
|
1070
|
+
const state = createInfiniteQuery(() => ({
|
|
1071
|
+
queryKey: key,
|
|
1072
|
+
queryFn: async ({ pageParam }): Promise<number> => {
|
|
1332
1073
|
await sleep(10)
|
|
1333
1074
|
return pageParam
|
|
1334
1075
|
},
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
)
|
|
1076
|
+
|
|
1077
|
+
initialData: { pages: [1], pageParams: [1] },
|
|
1078
|
+
getNextPageParam: (lastPage) => lastPage + 1,
|
|
1079
|
+
defaultPageParam: 0,
|
|
1080
|
+
notifyOnChangeProps: 'all',
|
|
1081
|
+
}))
|
|
1341
1082
|
|
|
1342
1083
|
createRenderEffect(() => {
|
|
1343
1084
|
states.push({ ...state })
|
|
@@ -1394,16 +1135,15 @@ describe('useInfiniteQuery', () => {
|
|
|
1394
1135
|
|
|
1395
1136
|
it('should set hasNextPage to false if getNextPageParam returns undefined', async () => {
|
|
1396
1137
|
const key = queryKey()
|
|
1397
|
-
const states: CreateInfiniteQueryResult<number
|
|
1138
|
+
const states: CreateInfiniteQueryResult<InfiniteData<number>>[] = []
|
|
1398
1139
|
|
|
1399
1140
|
function Page() {
|
|
1400
|
-
const state = createInfiniteQuery(
|
|
1401
|
-
key,
|
|
1402
|
-
({ pageParam
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
)
|
|
1141
|
+
const state = createInfiniteQuery(() => ({
|
|
1142
|
+
queryKey: key,
|
|
1143
|
+
queryFn: ({ pageParam }) => Number(pageParam),
|
|
1144
|
+
defaultPageParam: 1,
|
|
1145
|
+
getNextPageParam: () => undefined,
|
|
1146
|
+
}))
|
|
1407
1147
|
|
|
1408
1148
|
createRenderEffect(() => {
|
|
1409
1149
|
states.push({ ...state })
|
|
@@ -1423,7 +1163,7 @@ describe('useInfiniteQuery', () => {
|
|
|
1423
1163
|
expect(states.length).toBe(2)
|
|
1424
1164
|
expect(states[0]).toMatchObject({
|
|
1425
1165
|
data: undefined,
|
|
1426
|
-
hasNextPage:
|
|
1166
|
+
hasNextPage: false,
|
|
1427
1167
|
isFetching: true,
|
|
1428
1168
|
isFetchingNextPage: false,
|
|
1429
1169
|
isSuccess: false,
|
|
@@ -1439,17 +1179,16 @@ describe('useInfiniteQuery', () => {
|
|
|
1439
1179
|
|
|
1440
1180
|
it('should compute hasNextPage correctly using initialData', async () => {
|
|
1441
1181
|
const key = queryKey()
|
|
1442
|
-
const states: CreateInfiniteQueryResult<number
|
|
1182
|
+
const states: CreateInfiniteQueryResult<InfiniteData<number>>[] = []
|
|
1443
1183
|
|
|
1444
1184
|
function Page() {
|
|
1445
|
-
const state = createInfiniteQuery(
|
|
1446
|
-
key,
|
|
1447
|
-
({ pageParam
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
)
|
|
1185
|
+
const state = createInfiniteQuery(() => ({
|
|
1186
|
+
queryKey: key,
|
|
1187
|
+
queryFn: ({ pageParam }): number => pageParam,
|
|
1188
|
+
defaultPageParam: 10,
|
|
1189
|
+
initialData: { pages: [10], pageParams: [10] },
|
|
1190
|
+
getNextPageParam: (lastPage) => (lastPage === 10 ? 11 : undefined),
|
|
1191
|
+
}))
|
|
1453
1192
|
|
|
1454
1193
|
createRenderEffect(() => {
|
|
1455
1194
|
states.push({ ...state })
|
|
@@ -1484,17 +1223,16 @@ describe('useInfiniteQuery', () => {
|
|
|
1484
1223
|
|
|
1485
1224
|
it('should compute hasNextPage correctly for falsy getFetchMore return value using initialData', async () => {
|
|
1486
1225
|
const key = queryKey()
|
|
1487
|
-
const states: CreateInfiniteQueryResult<number
|
|
1226
|
+
const states: CreateInfiniteQueryResult<InfiniteData<number>>[] = []
|
|
1488
1227
|
|
|
1489
1228
|
function Page() {
|
|
1490
|
-
const state = createInfiniteQuery(
|
|
1491
|
-
key,
|
|
1492
|
-
({ pageParam
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
|
|
1497
|
-
)
|
|
1229
|
+
const state = createInfiniteQuery(() => ({
|
|
1230
|
+
queryKey: key,
|
|
1231
|
+
queryFn: ({ pageParam }): number => pageParam,
|
|
1232
|
+
defaultPageParam: 10,
|
|
1233
|
+
initialData: { pages: [10], pageParams: [10] },
|
|
1234
|
+
getNextPageParam: () => undefined,
|
|
1235
|
+
}))
|
|
1498
1236
|
|
|
1499
1237
|
createRenderEffect(() => {
|
|
1500
1238
|
states.push({ ...state })
|
|
@@ -1529,20 +1267,19 @@ describe('useInfiniteQuery', () => {
|
|
|
1529
1267
|
|
|
1530
1268
|
it('should not use selected data when computing hasNextPage', async () => {
|
|
1531
1269
|
const key = queryKey()
|
|
1532
|
-
const states: CreateInfiniteQueryResult<string
|
|
1270
|
+
const states: CreateInfiniteQueryResult<InfiniteData<string>>[] = []
|
|
1533
1271
|
|
|
1534
1272
|
function Page() {
|
|
1535
|
-
const state = createInfiniteQuery(
|
|
1536
|
-
key,
|
|
1537
|
-
({ pageParam
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
)
|
|
1273
|
+
const state = createInfiniteQuery(() => ({
|
|
1274
|
+
queryKey: key,
|
|
1275
|
+
queryFn: ({ pageParam }) => Number(pageParam),
|
|
1276
|
+
defaultPageParam: 1,
|
|
1277
|
+
getNextPageParam: (lastPage) => (lastPage === 1 ? 2 : undefined),
|
|
1278
|
+
select: (data) => ({
|
|
1279
|
+
pages: data.pages.map((x) => x.toString()),
|
|
1280
|
+
pageParams: data.pageParams,
|
|
1281
|
+
}),
|
|
1282
|
+
}))
|
|
1546
1283
|
|
|
1547
1284
|
createRenderEffect(() => {
|
|
1548
1285
|
states.push({ ...state })
|
|
@@ -1562,7 +1299,7 @@ describe('useInfiniteQuery', () => {
|
|
|
1562
1299
|
expect(states.length).toBe(2)
|
|
1563
1300
|
expect(states[0]).toMatchObject({
|
|
1564
1301
|
data: undefined,
|
|
1565
|
-
hasNextPage:
|
|
1302
|
+
hasNextPage: false,
|
|
1566
1303
|
isFetching: true,
|
|
1567
1304
|
isFetchingNextPage: false,
|
|
1568
1305
|
isSuccess: false,
|
|
@@ -1595,13 +1332,13 @@ describe('useInfiniteQuery', () => {
|
|
|
1595
1332
|
|
|
1596
1333
|
function Page() {
|
|
1597
1334
|
let fetchCountRef = 0
|
|
1598
|
-
const state = createInfiniteQuery
|
|
1599
|
-
key,
|
|
1600
|
-
({ pageParam
|
|
1601
|
-
|
|
1602
|
-
|
|
1603
|
-
|
|
1604
|
-
)
|
|
1335
|
+
const state = createInfiniteQuery(() => ({
|
|
1336
|
+
queryKey: key,
|
|
1337
|
+
queryFn: ({ pageParam }) =>
|
|
1338
|
+
fetchItemsWithLimit(pageParam, fetchCountRef++),
|
|
1339
|
+
defaultPageParam: 0,
|
|
1340
|
+
getNextPageParam: (lastPage) => lastPage.nextId,
|
|
1341
|
+
}))
|
|
1605
1342
|
|
|
1606
1343
|
return (
|
|
1607
1344
|
<div>
|
|
@@ -1645,7 +1382,7 @@ describe('useInfiniteQuery', () => {
|
|
|
1645
1382
|
// makes an actual network request
|
|
1646
1383
|
// and calls invalidateQueries in an onSuccess
|
|
1647
1384
|
items.splice(4, 1)
|
|
1648
|
-
queryClient.invalidateQueries(key
|
|
1385
|
+
queryClient.invalidateQueries({ queryKey: key })
|
|
1649
1386
|
}}
|
|
1650
1387
|
>
|
|
1651
1388
|
Remove item
|
|
@@ -1657,7 +1394,7 @@ describe('useInfiniteQuery', () => {
|
|
|
1657
1394
|
</>
|
|
1658
1395
|
}
|
|
1659
1396
|
>
|
|
1660
|
-
<Match when={state.status === '
|
|
1397
|
+
<Match when={state.status === 'pending'}>Loading...</Match>
|
|
1661
1398
|
<Match when={state.status === 'error'}>
|
|
1662
1399
|
<span>Error: {state.error!.message}</span>
|
|
1663
1400
|
</Match>
|
|
@@ -1725,18 +1462,17 @@ describe('useInfiniteQuery', () => {
|
|
|
1725
1462
|
let fetchCountRef = 0
|
|
1726
1463
|
const [isRemovedLastPage, setIsRemovedLastPage] =
|
|
1727
1464
|
createSignal<boolean>(false)
|
|
1728
|
-
const state = createInfiniteQuery
|
|
1729
|
-
key,
|
|
1730
|
-
({ pageParam
|
|
1465
|
+
const state = createInfiniteQuery(() => ({
|
|
1466
|
+
queryKey: key,
|
|
1467
|
+
queryFn: ({ pageParam }) =>
|
|
1731
1468
|
fetchItems(
|
|
1732
1469
|
pageParam,
|
|
1733
1470
|
fetchCountRef++,
|
|
1734
1471
|
pageParam === MAX || (pageParam === MAX - 1 && isRemovedLastPage()),
|
|
1735
1472
|
),
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
)
|
|
1473
|
+
defaultPageParam: 0,
|
|
1474
|
+
getNextPageParam: (lastPage) => lastPage.nextId,
|
|
1475
|
+
}))
|
|
1740
1476
|
|
|
1741
1477
|
return (
|
|
1742
1478
|
<div>
|
|
@@ -1785,7 +1521,7 @@ describe('useInfiniteQuery', () => {
|
|
|
1785
1521
|
</>
|
|
1786
1522
|
}
|
|
1787
1523
|
>
|
|
1788
|
-
<Match when={state.status === '
|
|
1524
|
+
<Match when={state.status === 'pending'}>Loading...</Match>
|
|
1789
1525
|
<Match when={state.status === 'error'}>
|
|
1790
1526
|
<span>Error: {state.error!.message}</span>
|
|
1791
1527
|
</Match>
|
|
@@ -1864,7 +1600,12 @@ describe('useInfiniteQuery', () => {
|
|
|
1864
1600
|
}
|
|
1865
1601
|
|
|
1866
1602
|
function Page() {
|
|
1867
|
-
const state = createInfiniteQuery(
|
|
1603
|
+
const state = createInfiniteQuery(() => ({
|
|
1604
|
+
queryKey: key,
|
|
1605
|
+
queryFn,
|
|
1606
|
+
getNextPageParam: () => undefined,
|
|
1607
|
+
defaultPageParam: 0,
|
|
1608
|
+
}))
|
|
1868
1609
|
return (
|
|
1869
1610
|
<div>
|
|
1870
1611
|
<h1>Status: {state.status}</h1>
|
|
@@ -1884,4 +1625,32 @@ describe('useInfiniteQuery', () => {
|
|
|
1884
1625
|
|
|
1885
1626
|
expect(cancelFn).toHaveBeenCalled()
|
|
1886
1627
|
})
|
|
1628
|
+
|
|
1629
|
+
it('should use provided custom queryClient', async () => {
|
|
1630
|
+
const key = queryKey()
|
|
1631
|
+
const queryFn = () => {
|
|
1632
|
+
return Promise.resolve('custom client')
|
|
1633
|
+
}
|
|
1634
|
+
|
|
1635
|
+
function Page() {
|
|
1636
|
+
const state = createInfiniteQuery(
|
|
1637
|
+
() => ({
|
|
1638
|
+
queryKey: key,
|
|
1639
|
+
queryFn,
|
|
1640
|
+
getNextPageParam: () => undefined,
|
|
1641
|
+
defaultPageParam: 0,
|
|
1642
|
+
}),
|
|
1643
|
+
() => queryClient,
|
|
1644
|
+
)
|
|
1645
|
+
return (
|
|
1646
|
+
<div>
|
|
1647
|
+
<h1>Status: {state.data?.pages[0]}</h1>
|
|
1648
|
+
</div>
|
|
1649
|
+
)
|
|
1650
|
+
}
|
|
1651
|
+
|
|
1652
|
+
render(() => <Page />)
|
|
1653
|
+
|
|
1654
|
+
await waitFor(() => screen.getByText('Status: custom client'))
|
|
1655
|
+
})
|
|
1887
1656
|
})
|