import { determineDoseStatus } from '../doseStatus'; import { DoseStatus } from '../../types'; describe('determineDoseStatus', () => { const scheduledTime = new Date('2024-05-10T08:00:00.000Z'); const now = new Date('2024-05-10T07:00:00.000Z'); it('returns TAKEN when dose has been recorded as taken', () => { const status = determineDoseStatus({ takenAt: new Date().toISOString(), snoozedUntil: undefined, scheduledTime, now, }); expect(status).toBe(DoseStatus.TAKEN); }); it('returns SNOOZED when snooze time is in the future', () => { const status = determineDoseStatus({ takenAt: undefined, snoozedUntil: new Date(now.getTime() + 5 * 60 * 1000).toISOString(), scheduledTime, now, }); expect(status).toBe(DoseStatus.SNOOZED); }); it('returns UPCOMING when snooze time has expired', () => { const pastSnooze = new Date(now.getTime() - 5 * 60 * 1000).toISOString(); const status = determineDoseStatus({ takenAt: undefined, snoozedUntil: pastSnooze, scheduledTime: new Date(now.getTime() - 60 * 60 * 1000), now, }); expect(status).toBe(DoseStatus.UPCOMING); }); it('returns MISSED when scheduled time is in the past without snooze', () => { const status = determineDoseStatus({ takenAt: undefined, snoozedUntil: undefined, scheduledTime: new Date(now.getTime() - 60 * 60 * 1000), now, }); expect(status).toBe(DoseStatus.MISSED); }); it('returns UPCOMING when scheduled time is in the future without snooze', () => { const status = determineDoseStatus({ takenAt: undefined, snoozedUntil: undefined, scheduledTime: new Date(now.getTime() + 60 * 60 * 1000), now, }); expect(status).toBe(DoseStatus.UPCOMING); }); });