over / src /lib /__tests__ /telemetry.test.ts
luguog's picture
Deploy mailbox-automation Next.js app
9646e24 verified
Raw
History Blame Contribute Delete
2.16 kB
import { describe, it } from "node:test";
import assert from "node:assert/strict";
import { generateTelemetry } from "../telemetry/engine";
describe("telemetry engine", () => {
it("returns valid report on empty input (success path)", () => {
const report = generateTelemetry([], "test@mailbox.local");
assert.ok(report, "report should be truthy");
assert.ok(Array.isArray(report.aggregateMetrics), "aggregateMetrics should be an array");
assert.ok(Array.isArray(report.revenueByCategory), "revenueByCategory should be an array");
assert.ok(Array.isArray(report.topInsights), "topInsights should be an array");
assert.ok(Array.isArray(report.efficiencyGains), "efficiencyGains should be an array");
assert.ok(Array.isArray(report.users), "users should be an array");
});
it("does not crash on malformed records (failure path)", () => {
const malformed = [
null,
undefined,
{},
{ id: "x" },
{ extractedData: null },
{ extractedData: { fields: "not-an-array" } },
] as any[];
const report = generateTelemetry(malformed, "test@mailbox.local");
assert.ok(report, "should return a report even on malformed input");
assert.ok(Array.isArray(report.aggregateMetrics), "aggregateMetrics should still be an array");
});
it("computes metrics from valid records", () => {
const records = [
{
id: "r1",
subject: "Test",
sender: "sender@test.com",
category: "Environmental Data",
extractedData: {
fields: [
{ key: "ph", value: "7.8", type: "scientific_value", confidence: 0.9 },
{ key: "temperature", value: "22.4", type: "number", unit: "C", confidence: 0.95 },
],
tables: [{ name: "data", headers: ["a"], rows: [{ a: 1 }], source: "attachment" }],
summary: "Test summary",
confidence: 0.9,
},
},
] as any[];
const report = generateTelemetry(records, "test@mailbox.local");
assert.ok(report.aggregateMetrics.length > 0, "should have aggregate metrics");
assert.ok(report.users.length > 0, "should have user data");
});
});