Files
diegosouzapw--omniroute/tests/unit/db-compression-cache-stats.test.ts
2026-07-13 13:39:12 +08:00

54 lines
1.7 KiB
TypeScript

import { describe, it } from "node:test";
import assert from "node:assert/strict";
import {
recordCacheStats,
getCacheStatsSummary,
} from "../../src/lib/db/compressionCacheStats.ts";
describe("compressionCacheStats", () => {
it("getCacheStatsSummary returns summary", () => {
const summary = getCacheStatsSummary();
assert.ok(typeof summary.totalRequests === "number");
assert.ok(typeof summary.avgNetSavings === "number");
assert.ok(typeof summary.cacheHitRate === "number");
assert.ok(typeof summary.byProvider === "object");
});
it("recordCacheStats inserts and getCacheStatsSummary retrieves", () => {
recordCacheStats({
provider: "test-provider",
model: "test-model",
compressionMode: "lite",
cacheControlPresent: true,
estimatedCacheHit: true,
tokensSavedCompression: 100,
tokensSavedCaching: 50,
netSavings: 150,
});
const summary = getCacheStatsSummary();
assert.ok(summary.totalRequests >= 1, "should have at least 1 request");
assert.ok("test-provider" in summary.byProvider, "should have test-provider");
});
it("recordCacheStats handles missing model", () => {
recordCacheStats({
provider: "no-model-provider",
compressionMode: "standard",
cacheControlPresent: false,
estimatedCacheHit: false,
tokensSavedCompression: 0,
tokensSavedCaching: 0,
netSavings: 0,
});
const summary = getCacheStatsSummary();
assert.ok("no-model-provider" in summary.byProvider);
});
it("getCacheStatsSummary with since filter", () => {
const future = new Date(Date.now() + 86400000);
const summary = getCacheStatsSummary(future);
assert.equal(summary.totalRequests, 0, "future date should return 0");
});
});