Skip to content

Commit a8ddd9b

Browse files
committed
test: stabilize some more tests
1 parent af850e5 commit a8ddd9b

File tree

1 file changed

+28
-18
lines changed

1 file changed

+28
-18
lines changed

src/reactjs/tests/useQuery.test.tsx

Lines changed: 28 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -362,14 +362,21 @@ describe('useQuery', () => {
362362
const onSuccess = jest.fn()
363363

364364
function Page() {
365-
const state = useQuery(key, () => 'data', { onSuccess })
365+
const state = useQuery(
366+
key,
367+
async () => {
368+
await sleep(10)
369+
return 'data'
370+
},
371+
{ onSuccess }
372+
)
366373
states.push(state)
367-
return null
374+
return <div>data: {state.data}</div>
368375
}
369376

370-
renderWithClient(queryClient, <Page />)
377+
const rendered = renderWithClient(queryClient, <Page />)
371378

372-
await sleep(10)
379+
await rendered.findByText('data: data')
373380
expect(states.length).toBe(2)
374381
expect(onSuccess).toHaveBeenCalledTimes(1)
375382
expect(onSuccess).toHaveBeenCalledWith('data')
@@ -379,34 +386,37 @@ describe('useQuery', () => {
379386
const key = queryKey()
380387
const states: UseQueryResult<string>[] = []
381388
const onSuccess = jest.fn()
389+
let count = 0
382390

383391
function Page() {
384392
const state = useQuery(
385393
key,
386394
async () => {
395+
count++
387396
await sleep(10)
388-
return 'data'
397+
return 'data' + count
389398
},
390-
{ onSuccess, notifyOnChangeProps: 'all' }
399+
{ onSuccess }
391400
)
392401

393402
states.push(state)
394403

395-
const { refetch } = state
396-
397-
React.useEffect(() => {
398-
setActTimeout(() => {
399-
refetch()
400-
}, 20)
401-
}, [refetch])
402-
403-
return null
404+
return (
405+
<div>
406+
<div>data: {state.data}</div>
407+
<button onClick={() => state.refetch()}>refetch</button>
408+
</div>
409+
)
404410
}
405411

406-
renderWithClient(queryClient, <Page />)
412+
const rendered = renderWithClient(queryClient, <Page />)
407413

408-
await sleep(50)
409-
expect(states.length).toBe(4)
414+
await rendered.findByText('data: data1')
415+
fireEvent.click(rendered.getByRole('button', { name: /refetch/i }))
416+
await rendered.findByText('data: data2')
417+
418+
expect(states.length).toBe(3) //loading, success, success after refetch
419+
expect(count).toBe(2)
410420
expect(onSuccess).toHaveBeenCalledTimes(2)
411421
})
412422

0 commit comments

Comments
 (0)