test(reminders): cover schedule edge cases

This commit is contained in:
William Valentin
2025-09-23 10:54:33 -07:00
parent 9bed793997
commit 7c712ae84b

View File

@@ -254,6 +254,50 @@ describe('Schedule Utilities', () => {
const uniqueIds = new Set(ids);
expect(uniqueIds.size).toBe(ids.length);
});
test('should include reminders at end of window when aligned with frequency', () => {
const reminder = createMockReminder({
startTime: '09:00',
endTime: '10:00',
frequencyMinutes: 30,
});
const schedule = generateReminderSchedule([reminder], baseDate);
const times = schedule.map(instance =>
instance.scheduledTime.toTimeString().slice(0, 5)
);
expect(times).toEqual(['09:00', '09:30', '10:00']);
});
test('should not exceed the time window when frequency does not divide evenly', () => {
const reminder = createMockReminder({
startTime: '09:00',
endTime: '09:40',
frequencyMinutes: 25,
});
const schedule = generateReminderSchedule([reminder], baseDate);
const times = schedule.map(instance =>
instance.scheduledTime.toTimeString().slice(0, 5)
);
expect(times).toEqual(['09:00', '09:25']);
});
test('should handle frequency larger than window by returning a single reminder', () => {
const reminder = createMockReminder({
startTime: '14:00',
endTime: '14:10',
frequencyMinutes: 30,
});
const schedule = generateReminderSchedule([reminder], baseDate);
expect(schedule).toHaveLength(1);
expect(schedule[0].scheduledTime.toTimeString().startsWith('14:00')).toBe(
true
);
});
});
describe('error handling', () => {