Skip to content

Commit b5ca60c

Browse files
authored
test(react/vanilla-utils/selectAtom): add test for creating fresh cache path when deps differ (memo3) (#3077)
* test(react/vanilla-utils/selectAtom): add test for creating fresh cache path when deps differ (memo3) * test(react/vanilla-utils/selectAtom): improve test to verify cache reuse and separation more explicitly
1 parent 6327521 commit b5ca60c

File tree

1 file changed

+16
-1
lines changed

1 file changed

+16
-1
lines changed

tests/react/vanilla-utils/selectAtom.test.tsx

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { StrictMode, useEffect, useRef } from 'react'
22
import { render, screen } from '@testing-library/react'
33
import userEvent from '@testing-library/user-event'
4-
import { it } from 'vitest'
4+
import { expect, it } from 'vitest'
55
import { useAtomValue, useSetAtom } from 'jotai/react'
66
import { atom } from 'jotai/vanilla'
77
import { selectAtom } from 'jotai/vanilla/utils'
@@ -130,3 +130,18 @@ it('do not update unless equality function says value has changed', async () =>
130130
await screen.findByText('value: {"a":3}')
131131
await screen.findByText('commits: 4')
132132
})
133+
134+
it('creates fresh cache path when deps differ (memo3)', () => {
135+
const baseAtom = atom({ a: 0, b: 1 })
136+
137+
const derivedAtom1 = selectAtom(baseAtom, (v) => v)
138+
const derivedAtom2 = selectAtom(baseAtom, (v) => v)
139+
140+
expect(derivedAtom1).not.toBe(derivedAtom2)
141+
142+
const selector = (v: { a: number; b: number }) => v.a
143+
const derivedAtom3 = selectAtom(baseAtom, selector)
144+
const derivedAtom4 = selectAtom(baseAtom, selector)
145+
146+
expect(derivedAtom3).toBe(derivedAtom4)
147+
})

0 commit comments

Comments
 (0)