Skip to content

Commit ea56bb4

Browse files
committed
add test for usePaginatedQuery state
1 parent 213df4a commit ea56bb4

File tree

1 file changed

+38
-1
lines changed

1 file changed

+38
-1
lines changed

src/tests/usePaginatedQuery.test.js

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,14 +47,15 @@ describe('usePaginatedQuery', () => {
4747
rendered.getByText('Data 2')
4848
await waitForElement(() => rendered.getByText('Data 3'))
4949
})
50+
5051
it('should use initialData only on the first page, then use previous page data while fetching the next page', async () => {
5152
function Page() {
5253
const [page, setPage] = React.useState(1)
5354

5455
const { resolvedData } = usePaginatedQuery(
5556
['data', { page }],
5657
async (queryName, { page }) => {
57-
sleep(1000)
58+
await sleep(1000)
5859
return page
5960
},
6061
{ initialData: 0 }
@@ -84,4 +85,40 @@ describe('usePaginatedQuery', () => {
8485
rendered.getByText('Data 3')
8586
await waitForElement(() => rendered.getByText('Data 4'))
8687
})
88+
89+
// See https://github.com/tannerlinsley/react-query/issues/169
90+
it('should not trigger unnecessary loading state', async () => {
91+
function Page() {
92+
const [page, setPage] = React.useState(1)
93+
94+
const { resolvedData, status } = usePaginatedQuery(
95+
['data', { page }],
96+
async (queryName, { page }) => {
97+
await sleep(1000)
98+
return page
99+
},
100+
{ initialData: 0 }
101+
)
102+
103+
return (
104+
<div>
105+
<h1 data-testid="title">Data {resolvedData}</h1>
106+
<h1 data-testid="status">{status}</h1>
107+
<button onClick={() => setPage(page + 1)}>next</button>
108+
</div>
109+
)
110+
}
111+
112+
const rendered = render(<Page />)
113+
114+
rendered.getByText('Data 0')
115+
116+
fireEvent.click(rendered.getByText('next'))
117+
fireEvent.click(rendered.getByText('next'))
118+
fireEvent.click(rendered.getByText('next'))
119+
120+
await waitForElement(() => rendered.getByTestId('status'))
121+
expect(rendered.getByTestId('status').textContent).toBe('success')
122+
expect(rendered.getByTestId('status').textContent).not.toBe('loading')
123+
})
87124
})

0 commit comments

Comments
 (0)