forked from vercel/swr
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuse-swr-pages.test.tsx
More file actions
54 lines (47 loc) · 1.43 KB
/
use-swr-pages.test.tsx
File metadata and controls
54 lines (47 loc) · 1.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
import React, { useEffect } from 'react'
import { cleanup, render, waitForDomChange } from '@testing-library/react'
import useSWR, { useSWRPages } from '../src'
describe('useSWRPages', () => {
afterEach(cleanup)
it('should render the first page componet', async () => {
function Page() {
const { pages } = useSWRPages<number, string, any>(
'page-1',
({ offset }) => {
return 'page ' + (offset || 0)
},
() => 0
)
return pages
}
const { container } = render(<Page />)
expect(container.textContent).toMatchInlineSnapshot(`"page 0"`)
})
it('should render the multiple pages', async () => {
function Page() {
const { pages, pageCount, isLoadingMore, loadMore } = useSWRPages<
number,
string,
any
>(
'page-2',
({ offset, withSWR }) => {
const { data } = withSWR(useSWR(String(offset || 0), v => v))
return 'page ' + data + ', '
},
(_, index) => index + 1
)
useEffect(() => {
// load next page if the current one is ready
if (pageCount <= 2 && !isLoadingMore) loadMore()
}, [pageCount, isLoadingMore])
return pages
}
const { container } = render(<Page />)
await waitForDomChange({ container }) // mount
// should have 3 pages
expect(container.textContent).toMatchInlineSnapshot(
`"page 0, page 1, page 2, "`
)
})
})