/
Alex_Ural
/
opencode
Обзор
Документация
Войти
/
Alex_Ural
/
opencode
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
packages/app/src/utils/scoped-cache.test.ts
69 строк
2 KB
Adam
chore: refactoring and tests (#12468)
06 фев 2026, 18:37
Не верифицирован
06 фев 2026, 18:37
a4bc883
Код
Авторство
О чём код?
import { describe, expect, test } from "bun:test" import { createScopedCache } from "./scoped-cache" describe("createScopedCache", () => { test("evicts least-recently-used entry when max is reached", () => { const disposed: string[] = [] const cache = createScopedCache((key) => ({ key }), { maxEntries: 2, dispose: (value) => disposed.push(value.key), }) const a = cache.get("a") const b = cache.get("b") expect(a.key).toBe("a") expect(b.key).toBe("b") cache.get("a") const c = cache.get("c") expect(c.key).toBe("c") expect(cache.peek("a")?.key).toBe("a") expect(cache.peek("b")).toBeUndefined() expect(cache.peek("c")?.key).toBe("c") expect(disposed).toEqual(["b"]) }) test("disposes entries on delete and clear", () => { const disposed: string[] = [] const cache = createScopedCache((key) => ({ key }), { dispose: (value) => disposed.push(value.key), }) cache.get("a") cache.get("b") const removed = cache.delete("a") expect(removed?.key).toBe("a") expect(cache.peek("a")).toBeUndefined() cache.clear() expect(cache.peek("b")).toBeUndefined() expect(disposed).toEqual(["a", "b"]) }) test("expires stale entries with ttl and recreates on get", () => { let clock = 0 let count = 0 const disposed: string[] = [] const cache = createScopedCache((key) => ({ key, count: ++count }), { ttlMs: 10, now: () => clock, dispose: (value) => disposed.push(`${value.key}:${value.count}`), }) const first = cache.get("a") expect(first.count).toBe(1) clock = 9 expect(cache.peek("a")?.count).toBe(1) clock = 11 expect(cache.peek("a")).toBeUndefined() expect(disposed).toEqual(["a:1"]) const second = cache.get("a") expect(second.count).toBe(2) expect(disposed).toEqual(["a:1"]) }) })