-
-
Notifications
You must be signed in to change notification settings - Fork 567
/
provider.test.tsx
69 lines (57 loc) 路 1.33 KB
/
provider.test.tsx
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import { render, waitFor } from '@testing-library/react'
import { atom, useAtom } from 'jotai'
import { getTestProvider } from './testUtils'
const Provider = getTestProvider(true)
it('uses initial values from provider', async () => {
const countAtom = atom(1)
const petAtom = atom('cat')
const Display = () => {
const [count] = useAtom(countAtom)
const [pet] = useAtom(petAtom)
return (
<>
<p>count: {count}</p>
<p>pet: {pet}</p>
</>
)
}
const { getByText } = render(
<Provider
initialValues={[
[countAtom, 0],
[petAtom, 'dog'],
]}>
<Display />
</Provider>
)
await waitFor(() => {
getByText('count: 0')
getByText('pet: dog')
})
})
it('only uses initial value from provider for specific atom', async () => {
const countAtom = atom(1)
const petAtom = atom('cat')
const Display = () => {
const [count] = useAtom(countAtom)
const [pet] = useAtom(petAtom)
return (
<>
<p>count: {count}</p>
<p>pet: {pet}</p>
</>
)
}
const { getByText } = render(
<Provider initialValues={[[petAtom, 'dog']]}>
<Display />
</Provider>
)
await waitFor(() => {
getByText('count: 1')
getByText('pet: dog')
})
})
it('renders correctly without children', () => {
render(<Provider />)
})