Files
zopu-code/repos/effect-smol/packages/effect/test/AtomRef.test.ts

28 lines
646 B
TypeScript

import { assert, describe, it } from "@effect/vitest"
import { AtomRef } from "effect/unstable/reactivity"
describe("AtomRef", () => {
it("notifies each subscribed listener once when a listener resubscribes itself", () => {
const ref = AtomRef.make(0)
const calls = { A: 0, B: 0, C: 0 }
let unsubscribeA = () => {}
function A() {
calls.A++
unsubscribeA()
unsubscribeA = ref.subscribe(A)
}
unsubscribeA = ref.subscribe(A)
ref.subscribe(() => {
calls.B++
})
ref.subscribe(() => {
calls.C++
})
ref.set(1)
assert.deepStrictEqual(calls, { A: 1, B: 1, C: 1 })
})
})