Skip to content

Commit e200bf7

Browse files
committed
refactor(tests): adapt useInfiniteQuery test
another one copied over from the react-18 branch, because that impl is less flaky
1 parent 95922e7 commit e200bf7

File tree

1 file changed

+22
-62
lines changed

1 file changed

+22
-62
lines changed

src/reactjs/tests/useQueries.test.tsx

Lines changed: 22 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -280,73 +280,33 @@ describe('useQueries', () => {
280280

281281
states.push(result)
282282

283-
React.useEffect(() => {
284-
setActTimeout(() => {
285-
setSeries2(3)
286-
}, 20)
287-
}, [])
288-
289-
React.useEffect(() => {
290-
setActTimeout(() => {
291-
setSeries1(2)
292-
}, 50)
293-
}, [])
283+
const isFetching = result.some(r => r.isFetching)
294284

295-
return null
285+
return (
286+
<div>
287+
<div>
288+
data1: {result[0]?.data ?? 'null'}, data2:{' '}
289+
{result[1]?.data ?? 'null'}
290+
</div>
291+
<div>isFetching: {String(isFetching)}</div>
292+
<button onClick={() => setSeries2(3)}>setSeries2</button>
293+
<button onClick={() => setSeries1(2)}>setSeries1</button>
294+
</div>
295+
)
296296
}
297297

298-
renderWithClient(queryClient, <Page />)
298+
const rendered = renderWithClient(queryClient, <Page />)
299299

300-
await waitFor(() => expect(states.length).toBe(9))
300+
await waitFor(() => rendered.getByText('data1: 5, data2: 10'))
301+
rendered.getByRole('button', { name: /setSeries2/i }).click()
301302

302-
expect(states[0]).toMatchObject([
303-
{
304-
status: 'loading',
305-
data: undefined,
306-
isPreviousData: false,
307-
isFetching: true,
308-
},
309-
{
310-
status: 'loading',
311-
data: undefined,
312-
isPreviousData: false,
313-
isFetching: true,
314-
},
315-
])
316-
expect(states[1]).toMatchObject([
317-
{ status: 'success', data: 5, isPreviousData: false, isFetching: false },
318-
{
319-
status: 'loading',
320-
data: undefined,
321-
isPreviousData: false,
322-
isFetching: true,
323-
},
324-
])
325-
expect(states[2]).toMatchObject([
326-
{ status: 'success', data: 5, isPreviousData: false, isFetching: false },
327-
{ status: 'success', data: 10, isPreviousData: false, isFetching: false },
328-
])
329-
expect(states[3]).toMatchObject([
330-
{ status: 'success', data: 5, isPreviousData: false, isFetching: false },
331-
{ status: 'success', data: 10, isPreviousData: true, isFetching: true },
332-
])
333-
expect(states[4]).toMatchObject([
334-
{ status: 'success', data: 5, isPreviousData: false, isFetching: false },
335-
{ status: 'success', data: 10, isPreviousData: true, isFetching: true },
336-
])
337-
expect(states[5]).toMatchObject([
338-
{ status: 'success', data: 5, isPreviousData: false, isFetching: false },
339-
{ status: 'success', data: 15, isPreviousData: false, isFetching: false },
340-
])
341-
expect(states[6]).toMatchObject([
342-
{ status: 'success', data: 10, isPreviousData: false, isFetching: true },
343-
{ status: 'success', data: 15, isPreviousData: false, isFetching: false },
344-
])
345-
expect(states[7]).toMatchObject([
346-
{ status: 'success', data: 10, isPreviousData: false, isFetching: true },
347-
{ status: 'success', data: 15, isPreviousData: false, isFetching: false },
348-
])
349-
expect(states[8]).toMatchObject([
303+
await waitFor(() => rendered.getByText('data1: 5, data2: 15'))
304+
rendered.getByRole('button', { name: /setSeries1/i }).click()
305+
306+
await waitFor(() => rendered.getByText('data1: 10, data2: 15'))
307+
await waitFor(() => rendered.getByText('isFetching: false'))
308+
309+
expect(states[states.length - 1]).toMatchObject([
350310
{ status: 'success', data: 10, isPreviousData: false, isFetching: false },
351311
{ status: 'success', data: 15, isPreviousData: false, isFetching: false },
352312
])

0 commit comments

Comments
 (0)