1import { useAtomRef } from "@effect/atom-vue"
2import { assert, describe, it } from "@effect/vitest"
3import * as AtomRef from "effect/reactivity/AtomRef"
4import { effectScope, nextTick, shallowRef } from "vue"
5
6describe("atom-vue", () => {
7 describe("useAtomRef", () => {
8 it("publishes the current value when the selected ref changes", async () => {
9 const first = AtomRef.make(1)
10 const second = AtomRef.make(10)
11 const selected = shallowRef(first)
12 const scope = effectScope()
13 try {
14 const value = scope.run(() => useAtomRef(() => selected.value))!
15
16 selected.value = second
17 await nextTick()
18 assert.strictEqual(value.value, 10)
19 } finally {
20 scope.stop()
21 }
22 })
23 })
24})