52 lines
1.3 KiB
JavaScript
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)
|
|
})
|
|
})
|