File size: 1,218 Bytes
3e05655 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | import { describe, expect, test } from "bun:test"
import { createRoot, createSignal } from "solid-js"
import { createSessionOwnership } from "@/pages/session/session-ownership"
describe("createSessionOwnership", () => {
test("invalidates captured work when its Solid owner is disposed", () => {
let current = true
createRoot((dispose) => {
const owner = createSessionOwnership(() => "A").capture()
dispose()
current = owner.current()
})
expect(current).toBe(false)
})
test("does not run a continuation after navigation", () => {
createRoot((dispose) => {
const [session, setSession] = createSignal("A")
const owner = createSessionOwnership(session).capture()
let ran = false
setSession("B")
owner.run(() => {
ran = true
})
expect(ran).toBe(false)
dispose()
})
})
test("does not revive a continuation after A to B to A navigation", () => {
createRoot((dispose) => {
const [session, setSession] = createSignal("A")
const owner = createSessionOwnership(session).capture()
setSession("B")
setSession("A")
expect(owner.current()).toBe(false)
dispose()
})
})
})
|