63 lines
2.7 KiB
TypeScript
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);
|
|
});
|