Skip to content

Commit ed90d1a

Browse files
sukvvonmanudeli
andauthored
test(react-query/useQueries): replace inline 'Promise' delays with 'sleep', and add 'expect' using 'toBeInTheDocument' (#9466)
Co-authored-by: Jonghyeon Ko <[email protected]>
1 parent 76211bb commit ed90d1a

File tree

1 file changed

+28
-32
lines changed

1 file changed

+28
-32
lines changed

packages/react-query/src/__tests__/useQueries.test.tsx

Lines changed: 28 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ describe('useQueries', () => {
7979
const rendered = renderWithClient(queryClient, <Page />)
8080

8181
await vi.advanceTimersByTimeAsync(201)
82-
rendered.getByText('data1: 1, data2: 2')
82+
expect(rendered.getByText('data1: 1, data2: 2')).toBeInTheDocument()
8383

8484
expect(results.length).toBe(3)
8585
expect(results[0]).toMatchObject([{ data: undefined }, { data: undefined }])
@@ -118,7 +118,7 @@ describe('useQueries', () => {
118118
const rendered = renderWithClient(queryClient, <Page />)
119119

120120
await vi.advanceTimersByTimeAsync(11)
121-
rendered.getByText('data: 1')
121+
expect(rendered.getByText('data: 1')).toBeInTheDocument()
122122

123123
expect(results.length).toBe(2)
124124
expect(results[0]).toMatchObject([{ data: undefined }])
@@ -127,7 +127,7 @@ describe('useQueries', () => {
127127
fireEvent.click(rendered.getByRole('button', { name: /refetch/i }))
128128

129129
await vi.advanceTimersByTimeAsync(11)
130-
rendered.getByText('data: 2')
130+
expect(rendered.getByText('data: 2')).toBeInTheDocument()
131131

132132
// only one render for data update, no render for isFetching transition
133133
expect(results.length).toBe(3)
@@ -1047,20 +1047,20 @@ describe('useQueries', () => {
10471047
const rendered = renderWithClient(queryClient, <Page />)
10481048

10491049
await vi.advanceTimersByTimeAsync(0)
1050-
rendered.getByText('data: {"empty":"object"}')
1051-
rendered.getByText('count: 0')
1050+
expect(rendered.getByText('data: {"empty":"object"}')).toBeInTheDocument()
1051+
expect(rendered.getByText('count: 0')).toBeInTheDocument()
10521052

10531053
expect(resultChanged).toBe(1)
10541054

10551055
fireEvent.click(rendered.getByRole('button', { name: /inc/i }))
10561056

10571057
await vi.advanceTimersByTimeAsync(0)
1058-
rendered.getByText('count: 1')
1058+
expect(rendered.getByText('count: 1')).toBeInTheDocument()
10591059
// there should be no further effect calls because the returned object is structurally shared
10601060
expect(resultChanged).toBe(1)
10611061
})
10621062

1063-
it('should not have infinite render loops with empty queries (#6645)', async () => {
1063+
it('should not have infinite render loops with empty queries (#6645)', () => {
10641064
let renderCount = 0
10651065

10661066
function Page() {
@@ -1077,8 +1077,6 @@ describe('useQueries', () => {
10771077

10781078
renderWithClient(queryClient, <Page />)
10791079

1080-
await vi.advanceTimersByTimeAsync(10)
1081-
10821080
expect(renderCount).toBe(1)
10831081
})
10841082

@@ -1206,7 +1204,9 @@ describe('useQueries', () => {
12061204
fireEvent.click(rendered.getByRole('button', { name: /refetch/i }))
12071205

12081206
await vi.advanceTimersByTimeAsync(51)
1209-
rendered.getByText('data: true first result 1,second result 1')
1207+
expect(
1208+
rendered.getByText('data: true first result 1,second result 1'),
1209+
).toBeInTheDocument()
12101210

12111211
const length = results.length
12121212

@@ -1233,21 +1233,11 @@ describe('useQueries', () => {
12331233
const { isLoading } = useQueries({
12341234
queries: ids.map((id) => ({
12351235
queryKey: [key, id],
1236-
queryFn: () => {
1237-
return new Promise<{
1238-
id: number
1239-
title: string
1240-
}>((resolve, reject) => {
1241-
if (id === 2) {
1242-
setTimeout(() => {
1243-
reject(new Error('FAILURE'))
1244-
}, 10)
1245-
}
1246-
setTimeout(() => {
1247-
resolve({ id, title: `Post ${id}` })
1248-
}, 10)
1249-
})
1250-
},
1236+
queryFn: () =>
1237+
sleep(10).then(() => {
1238+
if (id === 2) throw new Error('FAILURE')
1239+
return { id, title: `Post ${id}` }
1240+
}),
12511241
retry: false,
12521242
})),
12531243
combine: (results) => {
@@ -1312,7 +1302,7 @@ describe('useQueries', () => {
13121302
const rendered = render(<Page />)
13131303

13141304
await vi.advanceTimersByTimeAsync(0)
1315-
rendered.getByText('data: 0 result')
1305+
expect(rendered.getByText('data: 0 result')).toBeInTheDocument()
13161306

13171307
fireEvent.click(rendered.getByRole('button', { name: /inc/i }))
13181308

@@ -1374,7 +1364,9 @@ describe('useQueries', () => {
13741364
const rendered = render(<Page />)
13751365

13761366
await vi.advanceTimersByTimeAsync(21)
1377-
rendered.getByText('data: true first result:0,second result:0')
1367+
expect(
1368+
rendered.getByText('data: true first result:0,second result:0'),
1369+
).toBeInTheDocument()
13781370

13791371
// both pending, one pending, both resolved
13801372
expect(spy).toHaveBeenCalledTimes(3)
@@ -1395,7 +1387,9 @@ describe('useQueries', () => {
13951387
client.refetchQueries()
13961388

13971389
await vi.advanceTimersByTimeAsync(21)
1398-
rendered.getByText('data: true first result:1,second result:1')
1390+
expect(
1391+
rendered.getByText('data: true first result:1,second result:1'),
1392+
).toBeInTheDocument()
13991393

14001394
// two value changes = two re-renders
14011395
expect(spy).toHaveBeenCalledTimes(5)
@@ -1458,7 +1452,9 @@ describe('useQueries', () => {
14581452
const rendered = render(<Page />)
14591453

14601454
await vi.advanceTimersByTimeAsync(21)
1461-
rendered.getByText('data: 0 first result,second result')
1455+
expect(
1456+
rendered.getByText('data: 0 first result,second result'),
1457+
).toBeInTheDocument()
14621458

14631459
// both pending, one pending, both resolved
14641460
expect(spy).toHaveBeenCalledTimes(3)
@@ -1516,7 +1512,7 @@ describe('useQueries', () => {
15161512
const rendered = render(<Page />)
15171513

15181514
await vi.advanceTimersByTimeAsync(21)
1519-
rendered.getByText('data: foo')
1515+
expect(rendered.getByText('data: foo')).toBeInTheDocument()
15201516

15211517
expect(queryFns).toEqual(['first result', 'second result'])
15221518

@@ -1579,9 +1575,9 @@ describe('useQueries', () => {
15791575
const rendered = render(<Page />)
15801576

15811577
await vi.advanceTimersByTimeAsync(0)
1582-
rendered.getByText('data: pending')
1578+
expect(rendered.getByText('data: pending')).toBeInTheDocument()
15831579
await vi.advanceTimersByTimeAsync(21)
1584-
rendered.getByText('data: foo')
1580+
expect(rendered.getByText('data: foo')).toBeInTheDocument()
15851581

15861582
// one with pending, one with foo
15871583
expect(renders).toBe(2)

0 commit comments

Comments
 (0)