Files
openclaw-zero-token/config/cache-utils.test.ts
sjhu 571e14a236 feat: upgrade to upstream v2026.3.28
Major upgrade from e26988a38 to upstream v2026.3.28 (f9b107928).
Key changes:
- Upstream src/, ui/, extensions/ (89 bundled extensions)
- Zero-token web providers preserved in src/zero-token/
- AskOnce plugin restored and registered as CLI command
- Added missing packages: @anthropic-ai/vertex-sdk, @modelcontextprotocol/sdk
- Fixed tsconfig rootDir, skipLibCheck for plugin-sdk DTS build
- Added askonce to bundled plugin metadata and package.json exports
- Fixed AskOnce CLI command registration (missing commands metadata)
- Restored AskOnce adapter imports (correct 5-level relative paths)
- Removed stale migration artifacts from root directory
2026-03-30 17:58:12 +08:00

51 lines
1.5 KiB
TypeScript

import { describe, expect, it } from "vitest";
import { createExpiringMapCache, resolveCacheTtlMs } from "./cache-utils.js";
describe("resolveCacheTtlMs", () => {
it("accepts exact non-negative integers", () => {
expect(resolveCacheTtlMs({ envValue: "0", defaultTtlMs: 60_000 })).toBe(0);
expect(resolveCacheTtlMs({ envValue: "120000", defaultTtlMs: 60_000 })).toBe(120_000);
});
it("rejects malformed env values and falls back to the default", () => {
expect(resolveCacheTtlMs({ envValue: "0abc", defaultTtlMs: 60_000 })).toBe(60_000);
expect(resolveCacheTtlMs({ envValue: "15ms", defaultTtlMs: 60_000 })).toBe(60_000);
});
});
describe("createExpiringMapCache", () => {
it("expires entries on read after the TTL", () => {
let now = 1_000;
const cache = createExpiringMapCache<string, string>({
ttlMs: 5_000,
clock: () => now,
});
cache.set("alpha", "a");
expect(cache.get("alpha")).toBe("a");
now = 6_001;
expect(cache.get("alpha")).toBeUndefined();
expect(cache.size()).toBe(0);
});
it("supports dynamic TTLs and opportunistic pruning", () => {
let now = 1_000;
let ttlMs = 5_000;
const cache = createExpiringMapCache<string, string>({
ttlMs: () => ttlMs,
pruneIntervalMs: 1_000,
clock: () => now,
});
cache.set("stale", "old");
now = 7_000;
ttlMs = 2_000;
cache.set("fresh", "new");
expect(cache.get("stale")).toBeUndefined();
expect(cache.keys()).toEqual(["fresh"]);
});
});