Skip to content

Commit 96b8d43

Browse files
authored
Merge branch 'main' into test/solid-query-useMutation-add-advanceTimersByTimeAsync-expect-remove-waitFor
2 parents ee5f320 + 0569891 commit 96b8d43

File tree

1 file changed

+91
-145
lines changed

1 file changed

+91
-145
lines changed

packages/solid-query/src/__tests__/suspense.test.tsx

Lines changed: 91 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -75,10 +75,12 @@ describe("useQuery's in Suspense mode", () => {
7575
</QueryClientProvider>
7676
))
7777

78-
await vi.waitFor(() => rendered.getByText('data: 1'))
79-
fireEvent.click(rendered.getByLabelText('toggle'))
78+
await vi.advanceTimersByTimeAsync(10)
79+
expect(rendered.getByText('data: 1')).toBeInTheDocument()
8080

81-
await vi.waitFor(() => rendered.getByText('data: 2'))
81+
fireEvent.click(rendered.getByLabelText('toggle'))
82+
await vi.advanceTimersByTimeAsync(10)
83+
expect(rendered.getByText('data: 2')).toBeInTheDocument()
8284

8385
expect(renders).toBe(4)
8486
expect(states.length).toBe(4)
@@ -123,8 +125,8 @@ describe("useQuery's in Suspense mode", () => {
123125
</QueryClientProvider>
124126
))
125127

126-
await vi.waitFor(() => rendered.getByText('data: 1'))
127-
128+
await vi.advanceTimersByTimeAsync(10)
129+
expect(rendered.getByText('data: 1')).toBeInTheDocument()
128130
// eslint-disable-next-line cspell/spellchecker
129131
// TODO(lukemurray): in react this is 1 in solid this is 2 because suspense
130132
// occurs on read.
@@ -135,8 +137,8 @@ describe("useQuery's in Suspense mode", () => {
135137
})
136138

137139
fireEvent.click(rendered.getByText('next'))
138-
await vi.waitFor(() => rendered.getByText('data: 2'))
139-
140+
await vi.advanceTimersByTimeAsync(10)
141+
expect(rendered.getByText('data: 2')).toBeInTheDocument()
140142
// eslint-disable-next-line cspell/spellchecker
141143
// TODO(lukemurray): in react this is 2 and in solid it is 4
142144
expect(states.length).toBe(4)
@@ -169,7 +171,8 @@ describe("useQuery's in Suspense mode", () => {
169171
</QueryClientProvider>
170172
))
171173

172-
await vi.waitFor(() => rendered.getByText('rendered'))
174+
await vi.advanceTimersByTimeAsync(10)
175+
expect(rendered.getByText('rendered')).toBeInTheDocument()
173176

174177
expect(queryFn).toHaveBeenCalledTimes(1)
175178
})
@@ -213,13 +216,14 @@ describe("useQuery's in Suspense mode", () => {
213216
expect(queryCache.find({ queryKey: key })).toBeFalsy()
214217

215218
fireEvent.click(rendered.getByLabelText('toggle'))
216-
await vi.waitFor(() => rendered.getByText('rendered'))
219+
await vi.advanceTimersByTimeAsync(10)
220+
expect(rendered.getByText('rendered')).toBeInTheDocument()
217221

218222
expect(queryCache.find({ queryKey: key })?.getObserversCount()).toBe(1)
219223

220224
fireEvent.click(rendered.getByLabelText('toggle'))
221-
222225
expect(rendered.queryByText('rendered')).toBeNull()
226+
223227
expect(queryCache.find({ queryKey: key })?.getObserversCount()).toBe(0)
224228
})
225229

@@ -276,23 +280,14 @@ describe("useQuery's in Suspense mode", () => {
276280
</QueryClientProvider>
277281
))
278282

279-
await vi.waitFor(() =>
280-
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
281-
)
282-
283-
await vi.waitFor(() =>
284-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
285-
)
286-
287-
await vi.waitFor(() =>
288-
expect(rendered.getByText('retry')).toBeInTheDocument(),
289-
)
283+
expect(rendered.getByText('Loading...')).toBeInTheDocument()
284+
await vi.advanceTimersByTimeAsync(100)
285+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
286+
expect(rendered.getByText('retry')).toBeInTheDocument()
290287

291288
fireEvent.click(rendered.getByText('retry'))
292-
293-
await vi.waitFor(() =>
294-
expect(rendered.getByText('rendered')).toBeInTheDocument(),
295-
)
289+
await vi.advanceTimersByTimeAsync(10)
290+
expect(rendered.getByText('rendered')).toBeInTheDocument()
296291
})
297292

298293
it('should retry fetch if the reset error boundary has been reset', async () => {
@@ -346,27 +341,21 @@ describe("useQuery's in Suspense mode", () => {
346341
</QueryClientProvider>
347342
))
348343

349-
await vi.waitFor(() =>
350-
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
351-
)
352-
await vi.waitFor(() =>
353-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
354-
)
355-
await vi.waitFor(() =>
356-
expect(rendered.getByText('retry')).toBeInTheDocument(),
357-
)
344+
expect(rendered.getByText('Loading...')).toBeInTheDocument()
345+
await vi.advanceTimersByTimeAsync(10)
346+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
347+
expect(rendered.getByText('retry')).toBeInTheDocument()
348+
358349
fireEvent.click(rendered.getByText('retry'))
359-
await vi.waitFor(() =>
360-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
361-
)
362-
await vi.waitFor(() =>
363-
expect(rendered.getByText('retry')).toBeInTheDocument(),
364-
)
350+
await vi.advanceTimersByTimeAsync(10)
351+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
352+
expect(rendered.getByText('retry')).toBeInTheDocument()
353+
365354
succeed = true
355+
366356
fireEvent.click(rendered.getByText('retry'))
367-
await vi.waitFor(() =>
368-
expect(rendered.getByText('rendered')).toBeInTheDocument(),
369-
)
357+
await vi.advanceTimersByTimeAsync(10)
358+
expect(rendered.getByText('rendered')).toBeInTheDocument()
370359
})
371360

372361
it('should refetch when re-mounting', async () => {
@@ -416,32 +405,22 @@ describe("useQuery's in Suspense mode", () => {
416405
</QueryClientProvider>
417406
))
418407

419-
await vi.waitFor(() =>
420-
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
421-
)
422-
await vi.waitFor(() =>
423-
expect(rendered.getByText('data: 1')).toBeInTheDocument(),
424-
)
425-
await vi.waitFor(() =>
426-
expect(rendered.getByText('fetching: false')).toBeInTheDocument(),
427-
)
428-
await vi.waitFor(() =>
429-
expect(rendered.getByText('hide')).toBeInTheDocument(),
430-
)
408+
expect(rendered.getByText('Loading...')).toBeInTheDocument()
409+
await vi.advanceTimersByTimeAsync(100)
410+
expect(rendered.getByText('data: 1')).toBeInTheDocument()
411+
expect(rendered.getByText('fetching: false')).toBeInTheDocument()
412+
expect(rendered.getByText('hide')).toBeInTheDocument()
413+
431414
fireEvent.click(rendered.getByText('hide'))
432-
await vi.waitFor(() =>
433-
expect(rendered.getByText('show')).toBeInTheDocument(),
434-
)
415+
await vi.advanceTimersByTimeAsync(100)
416+
expect(rendered.getByText('show')).toBeInTheDocument()
417+
435418
fireEvent.click(rendered.getByText('show'))
436-
await vi.waitFor(() =>
437-
expect(rendered.getByText('fetching: true')).toBeInTheDocument(),
438-
)
439-
await vi.waitFor(() =>
440-
expect(rendered.getByText('data: 2')).toBeInTheDocument(),
441-
)
442-
await vi.waitFor(() =>
443-
expect(rendered.getByText('fetching: false')).toBeInTheDocument(),
444-
)
419+
await vi.advanceTimersByTimeAsync(0)
420+
expect(rendered.getByText('fetching: true')).toBeInTheDocument()
421+
await vi.advanceTimersByTimeAsync(100)
422+
expect(rendered.getByText('data: 2')).toBeInTheDocument()
423+
expect(rendered.getByText('fetching: false')).toBeInTheDocument()
445424
})
446425

447426
it('should suspend when switching to a new query', async () => {
@@ -485,19 +464,14 @@ describe("useQuery's in Suspense mode", () => {
485464
</QueryClientProvider>
486465
))
487466

488-
await vi.waitFor(() =>
489-
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
490-
)
491-
await vi.waitFor(() =>
492-
expect(rendered.getByText(`data: ${key1}`)).toBeInTheDocument(),
493-
)
467+
expect(rendered.getByText('Loading...')).toBeInTheDocument()
468+
await vi.advanceTimersByTimeAsync(100)
469+
expect(rendered.getByText(`data: ${key1}`)).toBeInTheDocument()
470+
494471
fireEvent.click(rendered.getByText('switch'))
495-
await vi.waitFor(() =>
496-
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
497-
)
498-
await vi.waitFor(() =>
499-
expect(rendered.getByText(`data: ${key2}`)).toBeInTheDocument(),
500-
)
472+
expect(rendered.getByText('Loading...')).toBeInTheDocument()
473+
await vi.advanceTimersByTimeAsync(100)
474+
expect(rendered.getByText(`data: ${key2}`)).toBeInTheDocument()
501475
})
502476

503477
it('should throw errors to the error boundary by default', async () => {
@@ -548,12 +522,9 @@ describe("useQuery's in Suspense mode", () => {
548522
</QueryClientProvider>
549523
))
550524

551-
await vi.waitFor(() =>
552-
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
553-
)
554-
await vi.waitFor(() =>
555-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
556-
)
525+
expect(rendered.getByText('Loading...')).toBeInTheDocument()
526+
await vi.advanceTimersByTimeAsync(10)
527+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
557528

558529
consoleMock.mockRestore()
559530
})
@@ -602,12 +573,9 @@ describe("useQuery's in Suspense mode", () => {
602573
</QueryClientProvider>
603574
))
604575

605-
await vi.waitFor(() =>
606-
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
607-
)
608-
await vi.waitFor(() =>
609-
expect(rendered.getByText('rendered')).toBeInTheDocument(),
610-
)
576+
expect(rendered.getByText('Loading...')).toBeInTheDocument()
577+
await vi.advanceTimersByTimeAsync(10)
578+
expect(rendered.getByText('rendered')).toBeInTheDocument()
611579
})
612580

613581
it('should throw errors to the error boundary when a throwOnError function returns true', async () => {
@@ -658,12 +626,9 @@ describe("useQuery's in Suspense mode", () => {
658626
</QueryClientProvider>
659627
))
660628

661-
await vi.waitFor(() =>
662-
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
663-
)
664-
await vi.waitFor(() =>
665-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
666-
)
629+
expect(rendered.getByText('Loading...')).toBeInTheDocument()
630+
await vi.advanceTimersByTimeAsync(10)
631+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
667632

668633
consoleMock.mockRestore()
669634
})
@@ -714,12 +679,9 @@ describe("useQuery's in Suspense mode", () => {
714679
</QueryClientProvider>
715680
))
716681

717-
await vi.waitFor(() =>
718-
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
719-
)
720-
await vi.waitFor(() =>
721-
expect(rendered.getByText('rendered')).toBeInTheDocument(),
722-
)
682+
expect(rendered.getByText('Loading...')).toBeInTheDocument()
683+
await vi.advanceTimersByTimeAsync(10)
684+
expect(rendered.getByText('rendered')).toBeInTheDocument()
723685
})
724686

725687
it('should not call the queryFn when not enabled', async () => {
@@ -757,13 +719,11 @@ describe("useQuery's in Suspense mode", () => {
757719
))
758720

759721
expect(queryFn).toHaveBeenCalledTimes(0)
760-
await vi.advanceTimersByTimeAsync(5)
761-
fireEvent.click(rendered.getByRole('button', { name: /fire/i }))
762-
763-
await vi.waitFor(() => {
764-
expect(rendered.getByRole('heading').textContent).toBe('23')
765-
})
766722

723+
await vi.advanceTimersByTimeAsync(10)
724+
fireEvent.click(rendered.getByRole('button', { name: /fire/i }))
725+
await vi.advanceTimersByTimeAsync(10)
726+
expect(rendered.getByRole('heading').textContent).toBe('23')
767727
expect(queryFn).toHaveBeenCalledTimes(1)
768728
})
769729

@@ -824,22 +784,19 @@ describe("useQuery's in Suspense mode", () => {
824784
))
825785

826786
// render suspense fallback (Loading...)
827-
await vi.waitFor(() =>
828-
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
829-
)
787+
expect(rendered.getByText('Loading...')).toBeInTheDocument()
830788
// resolve promise -> render Page (rendered)
831-
await vi.waitFor(() =>
832-
expect(rendered.getByText('rendered')).toBeInTheDocument(),
833-
)
789+
await vi.advanceTimersByTimeAsync(10)
790+
expect(rendered.getByText('rendered')).toBeInTheDocument()
834791

835792
// change query key
836793
succeed = false
837794
// reset query -> and throw error
795+
838796
fireEvent.click(rendered.getByLabelText('fail'))
839797
// render error boundary fallback (error boundary)
840-
await vi.waitFor(() =>
841-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
842-
)
798+
await vi.advanceTimersByTimeAsync(10)
799+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
843800

844801
consoleMock.mockRestore()
845802
})
@@ -894,22 +851,19 @@ describe("useQuery's in Suspense mode", () => {
894851
))
895852

896853
// render suspense fallback (Loading...)
897-
await vi.waitFor(() =>
898-
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
899-
)
854+
expect(rendered.getByText('Loading...')).toBeInTheDocument()
900855
// resolve promise -> render Page (rendered)
901-
await vi.waitFor(() =>
902-
expect(rendered.getByText('rendered')).toBeInTheDocument(),
903-
)
856+
await vi.advanceTimersByTimeAsync(10)
857+
expect(rendered.getByText('rendered')).toBeInTheDocument()
904858

905859
// change promise result to error
906860
succeed = false
907861
// change query key
862+
908863
fireEvent.click(rendered.getByLabelText('fail'))
909864
// render error boundary fallback (error boundary)
910-
await vi.waitFor(() =>
911-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
912-
)
865+
await vi.advanceTimersByTimeAsync(10)
866+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
913867

914868
consoleMock.mockRestore()
915869
})
@@ -966,22 +920,16 @@ describe("useQuery's in Suspense mode", () => {
966920
))
967921

968922
// render empty data with 'rendered' when enabled is false
969-
await vi.waitFor(() =>
970-
expect(rendered.getByText('rendered')).toBeInTheDocument(),
971-
)
923+
await vi.advanceTimersByTimeAsync(10)
924+
expect(rendered.getByText('rendered')).toBeInTheDocument()
972925

973926
// change enabled to true
974927
fireEvent.click(rendered.getByLabelText('fail'))
975-
976928
// render pending fallback
977-
await vi.waitFor(() =>
978-
expect(rendered.getByText('Loading...')).toBeInTheDocument(),
979-
)
980-
929+
expect(rendered.getByText('Loading...')).toBeInTheDocument()
981930
// render error boundary fallback (error boundary)
982-
await vi.waitFor(() =>
983-
expect(rendered.getByText('error boundary')).toBeInTheDocument(),
984-
)
931+
await vi.advanceTimersByTimeAsync(10)
932+
expect(rendered.getByText('error boundary')).toBeInTheDocument()
985933

986934
consoleMock.mockRestore()
987935
})
@@ -1025,13 +973,11 @@ describe("useQuery's in Suspense mode", () => {
1025973
</QueryClientProvider>
1026974
))
1027975

1028-
await vi.waitFor(() =>
1029-
expect(state).toMatchObject({
1030-
data: 1,
1031-
status: 'success',
1032-
}),
1033-
)
1034-
976+
await vi.advanceTimersByTimeAsync(10)
977+
expect(state).toMatchObject({
978+
data: 1,
979+
status: 'success',
980+
})
1035981
expect(renders).toBe(2)
1036982
expect(rendered.queryByText('rendered')).not.toBeNull()
1037983
})

0 commit comments

Comments
 (0)