54 lines
1.7 KiB
TypeScript
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");
|
|
});
|
|
});
|