64 lines
1.8 KiB
TypeScript
64 lines
1.8 KiB
TypeScript
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);
|
|
});
|
|
});
|