53 lines
1.9 KiB
TypeScript
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');
|
|
});
|
|
});
|