/home/techb158/cosmic-risk.abdallabala.com/tests
Edit: /home/techb158/cosmic-risk.abdallabala.com/tests/metrics.test.js (1691B)
const assert = require("assert");
const { trackRequest, getMetrics } = require("../src/lib/metrics");
const initial = getMetrics();
assert.strictEqual(initial.totalRequests, 0);
assert.strictEqual(initial.totalErrors, 0);
assert.strictEqual(initial.avgDurationMs, 0);
assert.deepStrictEqual(initial.methods, {});
assert.deepStrictEqual(initial.routes, {});
trackRequest("GET", "/api/health", 200, 5);
trackRequest("POST", "/api/auth/login", 200, 12);
trackRequest("GET", "/api/workspaces", 200, 8);
trackRequest("POST", "/api/risks/abcdef1234567890abcde12345", 201, 15);
let m = getMetrics();
assert.strictEqual(m.totalRequests, 4);
assert.strictEqual(m.totalErrors, 0);
assert.strictEqual(m.methods["GET"], 2);
assert.strictEqual(m.methods["POST"], 2);
assert.strictEqual(m.routes["/api/health"], 1);
assert.strictEqual(m.routes["/api/auth/login"], 1);
assert.strictEqual(m.routes["/api/workspaces"], 1);
assert.strictEqual(m.routes["/api/risks/:id"], 1);
assert.ok(m.uptime > 0);
assert.strictEqual(m.recentTimings.length, 4);
trackRequest("GET", "/api/unknown-route", 404, 3);
trackRequest("PUT", "/api/projects/xyz789012345678901234567", 500, 20);
m = getMetrics();
assert.strictEqual(m.totalRequests, 6);
assert.strictEqual(m.totalErrors, 2);
assert.strictEqual(m.methods["PUT"], 1);
assert.strictEqual(m.routes["/api/unknown-route"], 1);
assert.strictEqual(m.routes["/api/projects/:id"], 1);
const avg = Math.round((5 + 12 + 8 + 15 + 3 + 20) / 6);
assert.strictEqual(m.avgDurationMs, avg);
trackRequest("GET", "/api/projects/zyxwvutsrqponmlkjihgfedcba", 200, 1);
m = getMetrics();
assert.strictEqual(m.routes["/api/projects/:id"], 2);
console.log("All metrics tests passed.");