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()
    })
  })
})