test(reminders): cover schedule edge cases
This commit is contained in:
@@ -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', () => {
|
||||
|
||||
Reference in New Issue
Block a user