update kpi mortality card to change color based on the status

This commit is contained in:
Alberto-Audrix committed 2026-10-05 10:43:28 +07:00
1 parent cceaf38a25
commit 3fdd9b936f
3 files changed
+105 -1

No files matched your search

+52
View File
@@ -0,0 +1,52 @@
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');
});
});