mirror of
https://github.com/anomalyco/opencode.git
synced 2026-07-18 15:33:31 +00:00
45 lines
1.2 KiB
TypeScript
45 lines
1.2 KiB
TypeScript
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()
|
|
})
|
|
})
|
|
})
|