Files
ln-bi/src/server/routes/analytics/index.test.ts
T

63 lines
2.7 KiB
TypeScript

import assert from 'node:assert/strict';
import test from 'node:test';
import app from './index.js';
test('returns the published mileage metric contract', async () => {
const response = await app.request('/metrics?domain=mileage');
const payload = await response.json();
assert.equal(response.status, 200);
assert.equal(payload.catalogVersion, 6);
assert.deepEqual(payload.domains, ['mileage']);
assert.ok(payload.metrics.some((metric: { id: string }) => metric.id === 'mileage.assessment_completion_rate'));
});
test('returns the published hydrogen metric contract', async () => {
const response = await app.request('/metrics?domain=hydrogen');
const payload = await response.json();
assert.equal(response.status, 200);
assert.deepEqual(payload.domains, ['hydrogen']);
assert.ok(payload.metrics.some((metric: { id: string }) => metric.id === 'hydrogen.customer_revenue'));
assert.ok(payload.metrics.some((metric: { id: string }) => metric.id === 'hydrogen.customer_order_gross_profit'));
});
test('returns the published electric metric contract', async () => {
const response = await app.request('/metrics?domain=electric');
const payload = await response.json();
assert.equal(response.status, 200);
assert.equal(payload.catalogVersion, 6);
assert.deepEqual(payload.domains, ['electric']);
assert.ok(payload.metrics.some((metric: { id: string }) => metric.id === 'electric.charge_total_fee'));
assert.ok(payload.metrics.some((metric: { id: string }) => metric.id === 'electric.blended_cost_intensity'));
assert.ok(payload.metrics.some((metric: { id: string }) => metric.id === 'electric.data_freshness'));
});
test('returns the published ETC metric contract', async () => {
const response = await app.request('/metrics?domain=etc');
const payload = await response.json();
assert.equal(response.status, 200);
assert.equal(payload.catalogVersion, 6);
assert.deepEqual(payload.domains, ['etc']);
assert.ok(payload.metrics.some((metric: { id: string }) => metric.id === 'etc.total_amount'));
assert.ok(payload.metrics.some((metric: { id: string }) => metric.id === 'etc.bill_receivable'));
});
test('rejects unpublished metric domains', async () => {
const response = await app.request('/metrics?domain=energy');
assert.equal(response.status, 400);
});
test('returns observed data-source outcomes without sensitive details', async () => {
const response = await app.request('/data-sources');
const payload = await response.json();
assert.equal(response.status, 200);
assert.equal(payload.semantics, 'observed-requests');
assert.ok(Array.isArray(payload.sources));
assert.equal(JSON.stringify(payload).includes('password'), false);
});