Files
homelab/chat/lib/response-metadata.test.mjs

27 lines
1.2 KiB
JavaScript

import {describe, expect, test} from "bun:test";
import {responseMetadata} from "./response-metadata.ts";
describe("response metadata", () => {
test("calculates output token throughput", () => {
const metadata = responseMetadata("rust.cat", "gpt-test", performance.now() - 2000, 40);
expect(metadata.providerId).toBe("rust.cat");
expect(metadata.model).toBe("gpt-test");
expect(metadata.durationMs).toBeGreaterThanOrEqual(1900);
expect(metadata.tokensPerSecond).toBeGreaterThanOrEqual(19);
expect(metadata.tokensPerSecond).toBeLessThanOrEqual(21);
});
test("keeps speed unavailable when provider omits token usage", () => {
const metadata = responseMetadata("local", "model", performance.now() - 100, undefined);
expect(metadata.outputTokens).toBeNull();
expect(metadata.tokensPerSecond).toBeNull();
});
test("falls back to estimated tokens when provider output is absent", () => {
const metadata = responseMetadata("local", "model", performance.now() - 2000, undefined, 80);
expect(metadata.outputTokens).toBe(80);
expect(metadata.tokensPerSecond).toBeGreaterThanOrEqual(39);
expect(metadata.tokensPerSecond).toBeLessThanOrEqual(41);
});
});