51 lines
2.1 KiB
TypeScript
51 lines
2.1 KiB
TypeScript
import { afterEach, describe, expect, test } from "bun:test"
|
|||
|
|
import {
|
||
|
|
clearDirectorySessionPrefetch,
|
||
|
|
clearRuntimeSessionPrefetch,
|
||
|
|
getSessionPrefetch,
|
||
|
|
setSessionPrefetch,
|
||
|
|
} from "./session-prefetch-cache"
|
||
|
|
|
||
|
|
const runtimes = ["prefetch-runtime-a", "prefetch-runtime-b"]
|
||
|
|
|
||
|
|
afterEach(() => {
|
||
|
|
for (const runtimeKey of runtimes) clearRuntimeSessionPrefetch(runtimeKey)
|
||
|
|
})
|
||
|
|
|
||
|
|
describe("session prefetch cache", () => {
|
||
|
|
test("isolates colliding directory and session IDs by runtime", () => {
|
||
|
|
setSessionPrefetch({ directory: "/repo", sessionID: "session", limit: 10, complete: false, runtimeKey: runtimes[0] })
|
||
|
|
setSessionPrefetch({ directory: "/repo", sessionID: "session", limit: 20, complete: true, runtimeKey: runtimes[1] })
|
||
|
|
|
||
|
|
expect(getSessionPrefetch("/repo", "session", runtimes[0])?.limit).toBe(10)
|
||
|
|
expect(getSessionPrefetch("/repo", "session", runtimes[1])?.limit).toBe(20)
|
||
|
|
})
|
||
|
|
|
||
|
|
test("clears only the owning runtime and directory", () => {
|
||
|
|
setSessionPrefetch({ directory: "/repo-a", sessionID: "session", limit: 10, complete: false, runtimeKey: runtimes[0] })
|
||
|
|
setSessionPrefetch({ directory: "/repo-b", sessionID: "session", limit: 20, complete: false, runtimeKey: runtimes[0] })
|
||
|
|
setSessionPrefetch({ directory: "/repo-a", sessionID: "session", limit: 30, complete: false, runtimeKey: runtimes[1] })
|
||
|
|
|
||
|
|
clearDirectorySessionPrefetch("/repo-a", runtimes[0])
|
||
|
|
|
||
|
|
expect(getSessionPrefetch("/repo-a", "session", runtimes[0])).toBe(undefined)
|
||
|
|
expect(getSessionPrefetch("/repo-b", "session", runtimes[0])?.limit).toBe(20)
|
||
|
|
expect(getSessionPrefetch("/repo-a", "session", runtimes[1])?.limit).toBe(30)
|
||
|
|
})
|
||
|
|
|
||
|
|
test("bounds retained metadata globally", () => {
|
||
|
|
for (let index = 0; index <= 200; index += 1) {
|
||
|
|
setSessionPrefetch({
|
||
|
|
directory: "/repo",
|
||
|
|
sessionID: `session-${index}`,
|
||
|
|
limit: index,
|
||
|
|
complete: false,
|
||
|
|
runtimeKey: runtimes[0],
|
||
|
|
})
|
||
|
|
}
|
||
|
|
|
||
|
|
expect(getSessionPrefetch("/repo", "session-0", runtimes[0])).toBe(undefined)
|
||
|
|
expect(getSessionPrefetch("/repo", "session-200", runtimes[0])?.limit).toBe(200)
|
||
|
|
})
|
||
|
|
})
|