Files
vigilcare-clinical/vigilcare-dashboard/src/__tests__/vitalsForm.test.js
T
2026-06-23 20:32:33 +08:00

52 lines
1.3 KiB
JavaScript

import { describe, it, expect } from 'vitest'
import {
buildVitalsObservations,
isPlausibleValue,
validateVitalsForm,
} from '@/composables/vitalsForm'
describe('vitalsForm', () => {
it('validatesPlausibleRanges', () => {
expect(isPlausibleValue('HEART_RATE', 78)).toBe(true)
expect(isPlausibleValue('HEART_RATE', 350)).toBe(false)
expect(isPlausibleValue('TEMP_C', 37.2)).toBe(true)
expect(isPlausibleValue('TEMP_C', 10)).toBe(false)
})
it('requiresAtLeastOneValue', () => {
const result = validateVitalsForm({
heartRate: '',
respRate: '',
systolicBp: '',
diastolicBp: '',
spo2: '',
tempC: '',
avpu: '',
})
expect(result.valid).toBe(false)
expect(result.errors._form).toBeTruthy()
})
it('buildsBatchObservations', () => {
const observations = buildVitalsObservations({
heartRate: '88',
respRate: '18',
systolicBp: '120',
diastolicBp: '80',
spo2: '97',
tempC: '37.1',
avpu: '0',
}, '2026-06-23T12:00:00Z')
expect(observations).toHaveLength(7)
expect(observations[0]).toMatchObject({
observationCode: 'HEART_RATE',
value: 88,
unit: 'bpm',
source: 'Manual',
recordedAt: '2026-06-23T12:00:00Z',
})
expect(observations.find(obs => obs.observationCode === 'AVPU')?.value).toBe(0)
})
})