| 1 | import { useAtomRef } from "@effect/atom-vue" |
| 2 | import { assert, describe, it } from "@effect/vitest" |
| 3 | import * as AtomRef from "effect/reactivity/AtomRef" |
| 4 | import { effectScope, nextTick, shallowRef } from "vue" |
| 5 | |
| 6 | describe("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 | }) |