Files
dashboard-cpsp/utils/__tests__/mortality.test.ts
T

53 lines
1.9 KiB
TypeScript

import { describe, expect, it } from 'vitest';
import { getDailyMortalityPct, getDailyMortalityStatus } from '../mortality.ts';
describe('getDailyMortalityPct', () => {
it('returns null when values are missing or invalid', () => {
expect(getDailyMortalityPct(null, 10000)).toBeNull();
expect(getDailyMortalityPct(undefined, 10000)).toBeNull();
expect(getDailyMortalityPct(10, null)).toBeNull();
expect(getDailyMortalityPct(10, 0)).toBeNull();
expect(getDailyMortalityPct(10, -100)).toBeNull();
});
it('calculates correct percentage', () => {
expect(getDailyMortalityPct(5, 10000)).toBe(0.05);
expect(getDailyMortalityPct(10, 10000)).toBe(0.1);
});
});
describe('getDailyMortalityStatus', () => {
it('returns na when mortalityToday is null or undefined', () => {
expect(getDailyMortalityStatus(null, 10000)).toBe('na');
expect(getDailyMortalityStatus(undefined, 10000)).toBe('na');
});
it('returns ok when docInCount is null or 0', () => {
expect(getDailyMortalityStatus(5, null)).toBe('ok');
expect(getDailyMortalityStatus(5, 0)).toBe('ok');
});
it('returns ok when daily mortality <= 0.05%', () => {
// 0 out of 10,000 = 0%
expect(getDailyMortalityStatus(0, 10000)).toBe('ok');
// 5 out of 10,000 = 0.05%
expect(getDailyMortalityStatus(5, 10000)).toBe('ok');
// 10 out of 20,000 = 0.05%
expect(getDailyMortalityStatus(10, 20000)).toBe('ok');
});
it('returns warning when daily mortality > 0.05% and < 0.10%', () => {
// 6 out of 10,000 = 0.06%
expect(getDailyMortalityStatus(6, 10000)).toBe('warning');
// 9 out of 10,000 = 0.09%
expect(getDailyMortalityStatus(9, 10000)).toBe('warning');
});
it('returns critical when daily mortality >= 0.10%', () => {
// 10 out of 10,000 = 0.10%
expect(getDailyMortalityStatus(10, 10000)).toBe('critical');
// 25 out of 10,000 = 0.25%
expect(getDailyMortalityStatus(25, 10000)).toBe('critical');
});
});