Kairo-Jinkendo/frontend/src/utils/attentionSignals.test.js

32 lines
1.0 KiB
JavaScript
Raw Normal View History

import { describe, expect, it } from 'vitest'
import {
groupAttentionByInitiative,
initiativeSignalSummary,
topAttentionSignals,
} from './attentionSignals.js'
describe('attentionSignals', () => {
const sample = [
{ initiative_id: 'a', kind: 'planning_debt', severity: 'warning' },
{ initiative_id: 'a', kind: 'execution_waiting', severity: 'info' },
{ initiative_id: 'b', kind: 'open_blocker', severity: 'critical' },
]
it('groups by initiative', () => {
const grouped = groupAttentionByInitiative(sample)
expect(grouped.a).toHaveLength(2)
expect(grouped.b).toHaveLength(1)
})
it('picks top signals by severity', () => {
const top = topAttentionSignals(sample.filter((i) => i.initiative_id === 'a'))
expect(top[0].kind).toBe('planning_debt')
})
it('summarizes initiative signals', () => {
const summary = initiativeSignalSummary(sample.filter((i) => i.initiative_id === 'b'))
expect(summary?.count).toBe(1)
expect(summary?.topSeverity).toBe('critical')
})
})