57 lines
2.0 KiB
JavaScript
57 lines
2.0 KiB
JavaScript
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest'
|
|
import {
|
|
bundleUrgency,
|
|
formatCountdown,
|
|
sortBundlesByUrgency,
|
|
summarizeBundles,
|
|
} from '@/composables/sepsisFormat'
|
|
|
|
const baseBundle = {
|
|
complianceStatus: 'IN_PROGRESS',
|
|
deadlineAt: '2026-06-23T15:00:00Z',
|
|
}
|
|
|
|
describe('sepsisFormat', () => {
|
|
const now = new Date('2026-06-23T14:00:00Z').getTime()
|
|
|
|
beforeEach(() => {
|
|
vi.useFakeTimers()
|
|
vi.setSystemTime(now)
|
|
})
|
|
|
|
afterEach(() => {
|
|
vi.useRealTimers()
|
|
})
|
|
|
|
it('classifiesUrgency', () => {
|
|
expect(bundleUrgency({ ...baseBundle, deadlineAt: '2026-06-23T15:00:00Z' }, now)).toBe('on_track')
|
|
expect(bundleUrgency({ ...baseBundle, deadlineAt: '2026-06-23T14:20:00Z' }, now)).toBe('at_risk')
|
|
expect(bundleUrgency({ ...baseBundle, deadlineAt: '2026-06-23T13:00:00Z' }, now)).toBe('overdue')
|
|
expect(bundleUrgency({ complianceStatus: 'NON_COMPLIANT', deadlineAt: '2026-06-23T15:00:00Z' }, now)).toBe('overdue')
|
|
})
|
|
|
|
it('formatsCountdown', () => {
|
|
expect(formatCountdown('2026-06-23T14:45:00Z', now)).toBe('45:00')
|
|
expect(formatCountdown('2026-06-23T13:00:00Z', now)).toBe('0:00')
|
|
})
|
|
|
|
it('sortsByUrgency', () => {
|
|
const bundles = [
|
|
{ id: 'a', complianceStatus: 'IN_PROGRESS', deadlineAt: '2026-06-23T15:00:00Z' },
|
|
{ id: 'b', complianceStatus: 'IN_PROGRESS', deadlineAt: '2026-06-23T13:00:00Z' },
|
|
{ id: 'c', complianceStatus: 'IN_PROGRESS', deadlineAt: '2026-06-23T14:20:00Z' },
|
|
]
|
|
const sorted = sortBundlesByUrgency(bundles, now)
|
|
expect(sorted.map(b => b.id)).toEqual(['b', 'c', 'a'])
|
|
})
|
|
|
|
it('summarizesBundles', () => {
|
|
const bundles = [
|
|
{ complianceStatus: 'IN_PROGRESS', deadlineAt: '2026-06-23T15:00:00Z' },
|
|
{ complianceStatus: 'IN_PROGRESS', deadlineAt: '2026-06-23T14:20:00Z' },
|
|
{ complianceStatus: 'IN_PROGRESS', deadlineAt: '2026-06-23T13:00:00Z' },
|
|
]
|
|
expect(summarizeBundles(bundles, now)).toEqual({ on_track: 1, at_risk: 1, overdue: 1 })
|
|
})
|
|
})
|