test(reminders): cover schedule edge cases
This commit is contained in:
@@ -254,6 +254,50 @@ describe('Schedule Utilities', () => {
|
|||||||
const uniqueIds = new Set(ids);
|
const uniqueIds = new Set(ids);
|
||||||
expect(uniqueIds.size).toBe(ids.length);
|
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', () => {
|
describe('error handling', () => {
|
||||||
|
|||||||
Reference in New Issue
Block a user