diff --git a/app/src/androidTest/java/com/todoroo/astrid/reminders/ReminderServiceTest.java b/app/src/androidTest/java/com/todoroo/astrid/reminders/ReminderServiceTest.java index ca97da550..26a3066e5 100644 --- a/app/src/androidTest/java/com/todoroo/astrid/reminders/ReminderServiceTest.java +++ b/app/src/androidTest/java/com/todoroo/astrid/reminders/ReminderServiceTest.java @@ -169,18 +169,34 @@ public class ReminderServiceTest extends InjectingTestCase { } @Test - public void ignoreLapsedSnoozeTime() { + public void ignoreStaleSnoozeTime() { Task task = newTask( with(ID, 1L), with(DUE_TIME, newDateTime()), with(SNOOZE_TIME, newDateTime().minusMinutes(5)), + with(REMINDER_LAST, newDateTime().minusMinutes(4)), with(REMINDERS, NOTIFY_AT_DEADLINE)); service.scheduleAlarm(null, task); InOrder order = inOrder(jobs); order.verify(jobs).cancelReminder(1); order.verify(jobs).add(new Reminder(1, task.getDueDate(), ReminderService.TYPE_DUE)); + } + @Test + public void dontIgnoreMissedSnoozeTime() { + DateTime dueDate = newDateTime(); + Task task = newTask( + with(ID, 1L), + with(DUE_TIME, dueDate), + with(SNOOZE_TIME, dueDate.minusMinutes(4)), + with(REMINDER_LAST, dueDate.minusMinutes(5)), + with(REMINDERS, NOTIFY_AT_DEADLINE)); + service.scheduleAlarm(null, task); + + InOrder order = inOrder(jobs); + order.verify(jobs).cancelReminder(1); + order.verify(jobs).add(new Reminder(1, task.getReminderSnooze(), ReminderService.TYPE_SNOOZE)); } @Test diff --git a/app/src/main/java/com/todoroo/astrid/reminders/ReminderService.java b/app/src/main/java/com/todoroo/astrid/reminders/ReminderService.java index b25654c79..e28e2c9c5 100644 --- a/app/src/main/java/com/todoroo/astrid/reminders/ReminderService.java +++ b/app/src/main/java/com/todoroo/astrid/reminders/ReminderService.java @@ -153,14 +153,8 @@ public final class ReminderService { } } - /** - * Calculate the next alarm time for snooze. - *

- * Pretty simple - if a snooze time is in the future, we use that. If it - * has already passed, we do nothing. - */ private long calculateNextSnoozeReminder(Task task) { - if(task.getReminderSnooze() > DateUtilities.now()) { + if(task.getReminderSnooze() > task.getReminderLast()) { return task.getReminderSnooze(); } return NO_ALARM;