opencode/packages/quark/test/reactivity.test.ts
2026-07-18 22:54:17 -04:00

39 lines
971 B
TypeScript

import { describe, expect, it } from "bun:test"
import { createEffect, createRoot } from "solid-js"
import { State } from "../src"
import { useValue } from "../src/solid"
describe("Quark", () => {
it("does not track state read by subscription listeners", () => {
const source = State.make(1)
const unrelated = State.make(1)
const values: number[] = []
const dispose = source.subscribe((value) => {
unrelated()
values.push(value)
})
source.set(2)
unrelated.set(2)
expect(values).toEqual([2])
dispose()
})
it("bridges values into a Solid owner and disposes with it", () => {
const source = State.make(1)
const values: number[] = []
let dispose = () => {}
createRoot((rootDispose) => {
dispose = rootDispose
const value = useValue(source)
createEffect(() => values.push(value()))
})
source.set(2)
dispose()
source.set(3)
expect(values).toEqual([1, 2])
})
})