70 lines
1.9 KiB
TypeScript
70 lines
1.9 KiB
TypeScript
import {
|
|
countSignals,
|
|
mapSiteStatus,
|
|
normalizeObservedAt,
|
|
pickWorstHealthStatus,
|
|
} from '../../../../src/modules/admin/platform-config/environment-dashboard/application/environment-dashboard-status.mapper';
|
|
|
|
describe('environment dashboard status mapper', () => {
|
|
it('uses blocked as the strongest signal', () => {
|
|
expect(pickWorstHealthStatus(['ok', 'down', 'blocked'])).toBe('blocked');
|
|
});
|
|
|
|
it('keeps unwired integrations visible without marking a site healthy', () => {
|
|
expect(mapSiteStatus(['ok', 'unwired'])).toBe('unknown');
|
|
});
|
|
|
|
it('marks isolated remote sites separately from ordinary degradation', () => {
|
|
expect(mapSiteStatus(['ok', 'isolated'])).toBe('isolated');
|
|
});
|
|
|
|
it('counts all nested service signals', () => {
|
|
expect(
|
|
countSignals([
|
|
{
|
|
id: 'local-dev',
|
|
label: 'Local Dev',
|
|
status: 'online',
|
|
nodes: [
|
|
{
|
|
id: 'local-dev-api',
|
|
label: 'API',
|
|
services: [
|
|
{
|
|
id: 'local-dev-api-service',
|
|
label: 'API Service',
|
|
status: 'ok',
|
|
signals: [
|
|
{
|
|
id: 'runtime',
|
|
label: 'Runtime',
|
|
status: 'ok',
|
|
sourceKind: 'live',
|
|
summary: 'ready',
|
|
evidence: [],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
],
|
|
},
|
|
]),
|
|
).toEqual({
|
|
blocked: 0,
|
|
degraded: 0,
|
|
down: 0,
|
|
isolated: 0,
|
|
ok: 1,
|
|
unknown: 0,
|
|
unwired: 0,
|
|
});
|
|
});
|
|
|
|
it('normalizes dates into ISO strings for evidence timestamps', () => {
|
|
expect(normalizeObservedAt(new Date('2026-06-18T00:00:00.000Z'))).toBe(
|
|
'2026-06-18T00:00:00.000Z',
|
|
);
|
|
});
|
|
});
|