| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- import { describe, expect, test } from "bun:test"
- import {
- clearSessionPrefetch,
- clearSessionPrefetchDirectory,
- getSessionPrefetch,
- runSessionPrefetch,
- setSessionPrefetch,
- shouldSkipSessionPrefetch,
- } from "./session-prefetch"
- describe("session prefetch", () => {
- test("stores and clears message metadata by directory", () => {
- clearSessionPrefetch("/tmp/a", ["ses_1"])
- clearSessionPrefetch("/tmp/b", ["ses_1"])
- setSessionPrefetch({
- directory: "/tmp/a",
- sessionID: "ses_1",
- limit: 200,
- cursor: "abc",
- complete: false,
- at: 123,
- })
- expect(getSessionPrefetch("/tmp/a", "ses_1")).toEqual({ limit: 200, cursor: "abc", complete: false, at: 123 })
- expect(getSessionPrefetch("/tmp/b", "ses_1")).toBeUndefined()
- clearSessionPrefetch("/tmp/a", ["ses_1"])
- expect(getSessionPrefetch("/tmp/a", "ses_1")).toBeUndefined()
- })
- test("dedupes inflight work", async () => {
- clearSessionPrefetch("/tmp/c", ["ses_2"])
- let calls = 0
- const run = () =>
- runSessionPrefetch({
- directory: "/tmp/c",
- sessionID: "ses_2",
- task: async () => {
- calls += 1
- return { limit: 100, cursor: "next", complete: true, at: 456 }
- },
- })
- const [a, b] = await Promise.all([run(), run()])
- expect(calls).toBe(1)
- expect(a).toEqual({ limit: 100, cursor: "next", complete: true, at: 456 })
- expect(b).toEqual({ limit: 100, cursor: "next", complete: true, at: 456 })
- })
- test("clears a whole directory", () => {
- setSessionPrefetch({ directory: "/tmp/d", sessionID: "ses_1", limit: 10, cursor: "a", complete: true, at: 1 })
- setSessionPrefetch({ directory: "/tmp/d", sessionID: "ses_2", limit: 20, cursor: "b", complete: false, at: 2 })
- setSessionPrefetch({ directory: "/tmp/e", sessionID: "ses_1", limit: 30, cursor: "c", complete: true, at: 3 })
- clearSessionPrefetchDirectory("/tmp/d")
- expect(getSessionPrefetch("/tmp/d", "ses_1")).toBeUndefined()
- expect(getSessionPrefetch("/tmp/d", "ses_2")).toBeUndefined()
- expect(getSessionPrefetch("/tmp/e", "ses_1")).toEqual({ limit: 30, cursor: "c", complete: true, at: 3 })
- })
- test("refreshes stale first-page prefetched history", () => {
- expect(
- shouldSkipSessionPrefetch({
- message: true,
- info: { limit: 200, cursor: "x", complete: false, at: 1 },
- chunk: 200,
- now: 1 + 15_001,
- }),
- ).toBe(false)
- })
- test("keeps deeper or complete history cached", () => {
- expect(
- shouldSkipSessionPrefetch({
- message: true,
- info: { limit: 400, cursor: "x", complete: false, at: 1 },
- chunk: 200,
- now: 1 + 15_001,
- }),
- ).toBe(true)
- expect(
- shouldSkipSessionPrefetch({
- message: true,
- info: { limit: 120, complete: true, at: 1 },
- chunk: 200,
- now: 1 + 15_001,
- }),
- ).toBe(true)
- })
- })
|