diff --git a/api/src/com/todoroo/astrid/data/Task.java b/api/src/com/todoroo/astrid/data/Task.java index 8424fede0..5849de7de 100644 --- a/api/src/com/todoroo/astrid/data/Task.java +++ b/api/src/com/todoroo/astrid/data/Task.java @@ -187,7 +187,7 @@ public final class Task extends RemoteModel { // --- flags /** whether repeat occurs relative to completion date instead of due date */ - public static final int FLAG_REPEAT_AFTER_COMPLETION = 1 << 1; + @Deprecated public static final int FLAG_REPEAT_AFTER_COMPLETION = 1 << 1; /** whether task is read-only */ @Deprecated public static final int FLAG_IS_READONLY = 1 << 2; @@ -505,6 +505,14 @@ public final class Task extends RemoteModel { !(getValue(Task.IS_PUBLIC) == 1 && getValue(Task.USER_ID) != Task.USER_ID_SELF); } + public boolean repeatAfterCompletion() { + return getValue(Task.RECURRENCE).contains("FROM=COMPLETION"); + } + + public String sanitizedRecurrence() { + return getValue(Task.RECURRENCE).replaceAll(";?FROM=[^;]*", ""); //$NON-NLS-1$//$NON-NLS-2$ + } + /** * Checks whether provided due date has a due time or only a date */ diff --git a/astrid/plugin-src/com/todoroo/astrid/producteev/sync/ProducteevSyncProvider.java b/astrid/plugin-src/com/todoroo/astrid/producteev/sync/ProducteevSyncProvider.java index 21882d1b7..aa4323f60 100644 --- a/astrid/plugin-src/com/todoroo/astrid/producteev/sync/ProducteevSyncProvider.java +++ b/astrid/plugin-src/com/todoroo/astrid/producteev/sync/ProducteevSyncProvider.java @@ -508,7 +508,7 @@ public class ProducteevSyncProvider extends SyncProvider0)); boolean isAstridRepeating = local.task.containsNonNullValue(Task.RECURRENCE) && - local.task.getValue(Task.RECURRENCE).length() > 0; + !TextUtils.isEmpty(local.task.getValue(Task.RECURRENCE)); if (isAstridRepeating && isPDVRepeating) { // Astrid-repeat overrides PDV-repeat @@ -609,8 +609,7 @@ public class ProducteevSyncProvider extends SyncProvider 0; // read flag - if(model.getFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION)) + if(model.repeatAfterCompletion()) type.setSelection(TYPE_COMPLETION_DATE); else type.setSelection(TYPE_DUE_DATE); @@ -367,21 +367,18 @@ public class RepeatControlSet extends PopupControlSet { result = rrule.toIcal(); } + if (type.getSelectedItemPosition() == TYPE_COMPLETION_DATE) { + result = result + ";FROM=COMPLETION"; //$NON-NLS-1$ + } + if (!result.equals(task.getValue(Task.RECURRENCE))) task.putTransitory(TaskService.TRANS_REPEAT_CHANGED, true); task.setValue(Task.RECURRENCE, result); task.setValue(Task.REPEAT_UNTIL, repeatUntilValue); - switch(type.getSelectedItemPosition()) { - case TYPE_DUE_DATE: - task.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, false); - break; - case TYPE_COMPLETION_DATE: - task.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, true); - } - - if(task.getFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION)) + if(task.repeatAfterCompletion()) type.setSelection(1); + return null; } diff --git a/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatDetailExposer.java b/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatDetailExposer.java index f96732707..e60771365 100644 --- a/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatDetailExposer.java +++ b/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatDetailExposer.java @@ -50,13 +50,13 @@ public class RepeatDetailExposer extends BroadcastReceiver { } public String getTaskDetails(Context context, long id) { - Task task = PluginServices.getTaskService().fetchById(id, Task.FLAGS, Task.RECURRENCE); + Task task = PluginServices.getTaskService().fetchById(id, Task.RECURRENCE); if(task == null) return null; Resources r = context.getResources(); - String recurrence = task.getValue(Task.RECURRENCE); + String recurrence = task.sanitizedRecurrence(); if(recurrence != null && recurrence.length() > 0) { RRule rrule; try { @@ -86,7 +86,7 @@ public class RepeatDetailExposer extends BroadcastReceiver { } String detail; - if(task.getFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION)) + if(task.repeatAfterCompletion()) detail = context.getString(R.string.repeat_detail_completion, interval); else detail = context.getString(R.string.repeat_detail_duedate, interval); diff --git a/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatTaskCompleteListener.java b/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatTaskCompleteListener.java index 0b3706a50..eb5deae70 100644 --- a/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatTaskCompleteListener.java +++ b/astrid/plugin-src/com/todoroo/astrid/repeats/RepeatTaskCompleteListener.java @@ -56,11 +56,13 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver { if(task == null || !task.isCompleted()) return; - String recurrence = task.getValue(Task.RECURRENCE); + String recurrence = task.sanitizedRecurrence(); + boolean repeatAfterCompletion = task.repeatAfterCompletion(); + if(recurrence != null && recurrence.length() > 0) { long newDueDate; try { - newDueDate = computeNextDueDate(task, recurrence); + newDueDate = computeNextDueDate(task, recurrence, repeatAfterCompletion); if(newDueDate == -1) return; } catch (ParseException e) { @@ -114,8 +116,7 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver { } /** Compute next due date */ - public static long computeNextDueDate(Task task, String recurrence) throws ParseException { - boolean repeatAfterCompletion = task.getFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION); + public static long computeNextDueDate(Task task, String recurrence, boolean repeatAfterCompletion) throws ParseException { RRule rrule = initRRule(recurrence); // initialize startDateAsDV diff --git a/astrid/plugin-src/com/todoroo/astrid/tags/AstridNewSyncMigrator.java b/astrid/plugin-src/com/todoroo/astrid/tags/AstridNewSyncMigrator.java index f44e92ba2..19b7a1e6e 100644 --- a/astrid/plugin-src/com/todoroo/astrid/tags/AstridNewSyncMigrator.java +++ b/astrid/plugin-src/com/todoroo/astrid/tags/AstridNewSyncMigrator.java @@ -1,5 +1,6 @@ package com.todoroo.astrid.tags; +import android.text.TextUtils; import android.util.Log; import com.todoroo.andlib.data.DatabaseDao; @@ -17,6 +18,7 @@ import com.todoroo.astrid.dao.UpdateDao; import com.todoroo.astrid.dao.UserDao; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.RemoteModel; +import com.todoroo.astrid.data.SyncFlags; import com.todoroo.astrid.data.TagData; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Update; @@ -76,11 +78,11 @@ public class AstridNewSyncMigrator { // -------------- // Then ensure that every remote model has a remote id, by generating one using the uuid generator for all those without one // -------------- - Query tagsWithoutUUIDQuery = Query.select(TagData.ID, TagData.REMOTE_ID).where(Criterion.all); - assertUUIDsExist(tagsWithoutUUIDQuery, new TagData(), tagDataDao, null); + Query tagsQuery = Query.select(TagData.ID, TagData.REMOTE_ID).where(Criterion.all); + assertUUIDsExist(tagsQuery, new TagData(), tagDataDao, null); - Query tasksWithoutUUIDQuery = Query.select(Task.ID, Task.REMOTE_ID, Task.FLAGS).where(Criterion.all); - assertUUIDsExist(tasksWithoutUUIDQuery, new Task(), taskDao, new UUIDAssertionExtras() { + Query tasksQuery = Query.select(Task.ID, Task.REMOTE_ID, Task.RECURRENCE, Task.FLAGS).where(Criterion.all); + assertUUIDsExist(tasksQuery, new Task(), taskDao, new UUIDAssertionExtras() { @Override public void beforeSave(Task instance) { if (instance.getFlag(Task.FLAGS, Task.FLAG_IS_READONLY)) { @@ -92,6 +94,17 @@ public class AstridNewSyncMigrator { instance.setFlag(Task.FLAGS, Task.FLAG_PUBLIC, false); instance.setValue(Task.IS_PUBLIC, 1); } + + String recurrence = instance.getValue(Task.RECURRENCE); + if (!TextUtils.isEmpty(recurrence)) { + boolean repeatAfterCompletion = instance.getFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION); + instance.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, false); + + recurrence = recurrence.replaceAll("BYDAY=;", ""); + if (repeatAfterCompletion) + recurrence = recurrence + ";FROM=COMPLETION"; + instance.setValue(Task.RECURRENCE, recurrence); + } } }); @@ -147,7 +160,6 @@ public class AstridNewSyncMigrator { } - Preferences.setBoolean(PREF_SYNC_MIGRATION, true); } @@ -170,6 +182,7 @@ public class AstridNewSyncMigrator { if (extras != null) extras.beforeSave(instance); + instance.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true); dao.saveExisting(instance); } } finally { diff --git a/astrid/src/com/todoroo/astrid/ui/DateChangedAlerts.java b/astrid/src/com/todoroo/astrid/ui/DateChangedAlerts.java index fc6d3cb8a..67b343e45 100644 --- a/astrid/src/com/todoroo/astrid/ui/DateChangedAlerts.java +++ b/astrid/src/com/todoroo/astrid/ui/DateChangedAlerts.java @@ -309,7 +309,7 @@ public class DateChangedAlerts { @SuppressWarnings("nls") private static String getRecurrenceString(Context context, Task task) { try { - RRule rrule = new RRule(task.getValue(Task.RECURRENCE)); + RRule rrule = new RRule(task.sanitizedRecurrence()); String[] dateAbbrev = context.getResources().getStringArray( R.array.repeat_interval); diff --git a/tests-sync/src/com/todoroo/astrid/sync/repeats/AbstractSyncRepeatTests.java b/tests-sync/src/com/todoroo/astrid/sync/repeats/AbstractSyncRepeatTests.java index 0cdff4639..d5821146b 100644 --- a/tests-sync/src/com/todoroo/astrid/sync/repeats/AbstractSyncRepeatTests.java +++ b/tests-sync/src/com/todoroo/astrid/sync/repeats/AbstractSyncRepeatTests.java @@ -123,8 +123,6 @@ abstract public class AbstractSyncRepeatTests extends DatabaseTest t.setValue(Task.TITLE, title); long dueDate = DateUtilities.now() + ((completeBefore ? -1 : 1) * DateUtilities.ONE_DAY * 3); dueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, (dueDate / 1000L) * 1000L); // Strip milliseconds - if (fromCompletion) - t.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, true); t.setValue(Task.DUE_DATE, dueDate); @@ -134,6 +132,11 @@ abstract public class AbstractSyncRepeatTests extends DatabaseTest int interval = frequency.equals(Frequency.MINUTELY) ? 100: 2; rrule.setInterval(interval); } + + String result = rrule.toIcal(); + if (fromCompletion) + result = result + ";FROM=COMPLETION"; + t.setValue(Task.RECURRENCE, rrule.toIcal()); taskDao.save(t); diff --git a/tests-sync/src/com/todoroo/astrid/sync/repeats/RepeatTestsActFmSync.java b/tests-sync/src/com/todoroo/astrid/sync/repeats/RepeatTestsActFmSync.java index 7f480443b..1ab1fb990 100644 --- a/tests-sync/src/com/todoroo/astrid/sync/repeats/RepeatTestsActFmSync.java +++ b/tests-sync/src/com/todoroo/astrid/sync/repeats/RepeatTestsActFmSync.java @@ -140,8 +140,6 @@ public class RepeatTestsActFmSync extends AbstractSyncRepeatTests { t.setValue(Task.TITLE, title); long dueDate = DateUtilities.now() + ((completeBefore ? -1 : 1) * DateUtilities.ONE_DAY * 3); dueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, (dueDate / 1000L) * 1000L); // Strip milliseconds - if (fromCompletion) - t.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, true); t.setValue(Task.DUE_DATE, dueDate); @@ -151,6 +149,11 @@ public class RepeatTestsActFmSync extends AbstractSyncRepeatTests { int interval = 5; rrule.setInterval(interval); } + + String result = rrule.toIcal(); + if (fromCompletion) + result = result + ";FROM=COMPLETION"; + t.setValue(Task.RECURRENCE, rrule.toIcal()); taskDao.save(t); diff --git a/tests/src/com/todoroo/astrid/repeats/AdvancedRepeatTests.java b/tests/src/com/todoroo/astrid/repeats/AdvancedRepeatTests.java index ac1817932..825f75c82 100644 --- a/tests/src/com/todoroo/astrid/repeats/AdvancedRepeatTests.java +++ b/tests/src/com/todoroo/astrid/repeats/AdvancedRepeatTests.java @@ -42,7 +42,6 @@ public class AdvancedRepeatTests extends TodorooTestCase { // --- date with time tests public void testDueDateSpecificTime() throws ParseException { - task.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, false); buildRRule(1, Frequency.DAILY); // test specific day & time @@ -50,12 +49,11 @@ public class AdvancedRepeatTests extends TodorooTestCase { task.setValue(Task.DUE_DATE, dayWithTime); long nextDayWithTime = dayWithTime + DateUtilities.ONE_DAY; - nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal()); + nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal(), false); assertDateTimeEquals(nextDayWithTime, nextDueDate); } public void testCompletionDateSpecificTime() throws ParseException { - task.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, true); buildRRule(1, Frequency.DAILY); // test specific day & time @@ -70,7 +68,7 @@ public class AdvancedRepeatTests extends TodorooTestCase { nextDayWithTimeLong += DateUtilities.ONE_DAY; nextDayWithTimeLong = nextDayWithTimeLong / 1000L * 1000; - nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal()); + nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal(), true); assertDateTimeEquals(nextDayWithTimeLong, nextDueDate); } @@ -78,89 +76,85 @@ public class AdvancedRepeatTests extends TodorooTestCase { /** test multiple days per week - DUE DATE */ public void testDueDateInPastSingleWeekMultiDay() throws Exception { - task.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, false); buildRRule(1, Frequency.WEEKLY, Weekday.MO, Weekday.WE, Weekday.FR); setTaskDueDate(THIS, Calendar.SUNDAY); - computeNextDueDate(); + computeNextDueDate(false); assertDueDate(nextDueDate, THIS, Calendar.MONDAY); setTaskDueDate(THIS, Calendar.MONDAY); - computeNextDueDate(); + computeNextDueDate(false); assertDueDate(nextDueDate, THIS, Calendar.WEDNESDAY); setTaskDueDate(THIS, Calendar.FRIDAY); - computeNextDueDate(); + computeNextDueDate(false); assertDueDate(nextDueDate, THIS, Calendar.MONDAY); } /** test single day repeats - DUE DATE */ public void testDueDateSingleDay() throws Exception { - task.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, false); buildRRule(1, Frequency.WEEKLY, Weekday.MO); setTaskDueDate(PREV_PREV, Calendar.MONDAY); - computeNextDueDate(); + computeNextDueDate(false); assertDueDate(nextDueDate, NEXT, Calendar.MONDAY); setTaskDueDate(PREV_PREV, Calendar.FRIDAY); - computeNextDueDate(); + computeNextDueDate(false); assertDueDate(nextDueDate, THIS, Calendar.MONDAY); setTaskDueDate(PREV, Calendar.MONDAY); - computeNextDueDate(); + computeNextDueDate(false); assertDueDate(nextDueDate, NEXT, Calendar.MONDAY); setTaskDueDate(PREV, Calendar.FRIDAY); - computeNextDueDate(); + computeNextDueDate(false); assertDueDate(nextDueDate, THIS, Calendar.MONDAY); setTaskDueDate(THIS, Calendar.SUNDAY); - computeNextDueDate(); + computeNextDueDate(false); assertDueDate(nextDueDate, THIS, Calendar.MONDAY); setTaskDueDate(THIS, Calendar.MONDAY); - computeNextDueDate(); + computeNextDueDate(false); assertDueDate(nextDueDate, NEXT, Calendar.MONDAY); } /** test multiple days per week - DUE DATE */ public void testDueDateSingleWeekMultiDay() throws Exception { - task.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, false); buildRRule(1, Frequency.WEEKLY, Weekday.MO, Weekday.WE, Weekday.FR); setTaskDueDate(THIS, Calendar.SUNDAY); - computeNextDueDate(); + computeNextDueDate(false); assertDueDate(nextDueDate, THIS, Calendar.MONDAY); setTaskDueDate(THIS, Calendar.MONDAY); - computeNextDueDate(); + computeNextDueDate(false); assertDueDate(nextDueDate, THIS, Calendar.WEDNESDAY); setTaskDueDate(THIS, Calendar.FRIDAY); - computeNextDueDate(); + computeNextDueDate(false); assertDueDate(nextDueDate, THIS, Calendar.MONDAY); } /** test multiple days per week, multiple intervals - DUE DATE */ public void testDueDateMultiWeekMultiDay() throws Exception { - task.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, false); buildRRule(2, Frequency.WEEKLY, Weekday.MO, Weekday.WE, Weekday.FR); setTaskDueDate(THIS, Calendar.SUNDAY); - computeNextDueDate(); + computeNextDueDate(false); assertDueDate(nextDueDate, NEXT, Calendar.MONDAY); setTaskDueDate(THIS, Calendar.MONDAY); - computeNextDueDate(); + computeNextDueDate(false); assertDueDate(nextDueDate, THIS, Calendar.WEDNESDAY); setTaskDueDate(THIS, Calendar.FRIDAY); - computeNextDueDate(); + computeNextDueDate(false); assertDueDate(nextDueDate, NEXT, Calendar.MONDAY); } @@ -168,11 +162,10 @@ public class AdvancedRepeatTests extends TodorooTestCase { /** test multiple days per week - COMPLETE DATE */ public void testCompleteDateSingleWeek() throws Exception { - task.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, true); for(Weekday wday : Weekday.values()) { buildRRule(1, Frequency.WEEKLY, wday); - computeNextDueDate(); + computeNextDueDate(true); long expected = getDate(DateUtilities.now() + DateUtilities.ONE_DAY, THIS, wday.javaDayNum); nextDueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, nextDueDate); assertDateEquals(nextDueDate, expected); @@ -186,7 +179,7 @@ public class AdvancedRepeatTests extends TodorooTestCase { buildRRule(1, Frequency.WEEKLY, wday1, wday2); long nextOne = getDate(DateUtilities.now() + DateUtilities.ONE_DAY, THIS, wday1.javaDayNum); long nextTwo = getDate(DateUtilities.now() + DateUtilities.ONE_DAY, THIS, wday2.javaDayNum); - computeNextDueDate(); + computeNextDueDate(true); nextDueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, nextDueDate); assertDateEquals(nextDueDate, Math.min(nextOne, nextTwo)); } @@ -195,11 +188,10 @@ public class AdvancedRepeatTests extends TodorooTestCase { /** test multiple days per week, multiple intervals - COMPLETE DATE */ public void testCompleteDateMultiWeek() throws Exception { - task.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, true); for(Weekday wday : Weekday.values()) { buildRRule(2, Frequency.WEEKLY, wday); - computeNextDueDate(); + computeNextDueDate(true); long expected = getDate(DateUtilities.now() + DateUtilities.ONE_DAY, NEXT, wday.javaDayNum); nextDueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, nextDueDate); assertDateEquals(nextDueDate, expected); @@ -213,7 +205,7 @@ public class AdvancedRepeatTests extends TodorooTestCase { buildRRule(2, Frequency.WEEKLY, wday1, wday2); long nextOne = getDate(DateUtilities.now() + DateUtilities.ONE_DAY, NEXT, wday1.javaDayNum); long nextTwo = getDate(DateUtilities.now() + DateUtilities.ONE_DAY, NEXT, wday2.javaDayNum); - computeNextDueDate(); + computeNextDueDate(true); nextDueDate = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, nextDueDate); assertDateEquals(nextDueDate, Math.min(nextOne, nextTwo)); } @@ -222,8 +214,8 @@ public class AdvancedRepeatTests extends TodorooTestCase { // --- helpers - private void computeNextDueDate() throws ParseException{ - nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal()); + private void computeNextDueDate(boolean fromComplete) throws ParseException{ + nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal(), fromComplete); } private void buildRRule(int interval, Frequency freq, Weekday... weekdays) { diff --git a/tests/src/com/todoroo/astrid/repeats/NewRepeatTests.java b/tests/src/com/todoroo/astrid/repeats/NewRepeatTests.java index dfd57582e..0b6b1b575 100644 --- a/tests/src/com/todoroo/astrid/repeats/NewRepeatTests.java +++ b/tests/src/com/todoroo/astrid/repeats/NewRepeatTests.java @@ -133,8 +133,6 @@ public class NewRepeatTests extends DatabaseTestCase { adjustDate.setSeconds(1); dueDate = adjustDate.getTime(); dueDate = (dueDate / 1000L) * 1000L; // Strip milliseconds - if (fromCompletion) - t.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, true); t.setValue(Task.DUE_DATE, dueDate); @@ -144,6 +142,10 @@ public class NewRepeatTests extends DatabaseTestCase { int interval = 2; rrule.setInterval(interval); } + + String result = rrule.toIcal(); + if (fromCompletion) + result = result + ";FROM=COMPLETION"; t.setValue(Task.RECURRENCE, rrule.toIcal()); taskDao.save(t); diff --git a/tests/src/com/todoroo/astrid/repeats/RepeatAfterCompleteTests.java b/tests/src/com/todoroo/astrid/repeats/RepeatAfterCompleteTests.java index 74c5bc47b..0a1baaa3c 100644 --- a/tests/src/com/todoroo/astrid/repeats/RepeatAfterCompleteTests.java +++ b/tests/src/com/todoroo/astrid/repeats/RepeatAfterCompleteTests.java @@ -36,7 +36,6 @@ public class RepeatAfterCompleteTests extends TodorooTestCase { public void testSubDailyFreqs() throws ParseException { task.setValue(Task.DUE_DATE, DateUtilities.now() - DateUtilities.ONE_WEEK); - task.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, true); for(Frequency freq : Frequency.values()) { long interval = -1; @@ -50,10 +49,10 @@ public class RepeatAfterCompleteTests extends TodorooTestCase { } buildRRule(1, freq); - nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal()); + nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal(), true); buildRRule(6, freq); - nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal()); + nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal(), true); assertDateTimeEquals(freq.toString() + "x6", DateUtilities.now() + 6 * interval, nextDueDate); task.setValue(Task.DUE_DATE, nextDueDate); assertTrue(task.hasDueTime()); @@ -64,7 +63,6 @@ public class RepeatAfterCompleteTests extends TodorooTestCase { task.setValue(Task.DUE_DATE, Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, DateUtilities.now() - DateUtilities.ONE_WEEK)); - task.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, true); for(int interval = 1; interval < 7; interval++) { for(Frequency freq : Frequency.values()) { @@ -83,7 +81,7 @@ public class RepeatAfterCompleteTests extends TodorooTestCase { } buildRRule(interval, freq); - nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal()); + nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal(), true); assertDateEquals(freq.toString() + "x" + interval, next, nextDueDate); task.setValue(Task.DUE_DATE, nextDueDate); assertFalse(task.hasDueTime()); @@ -94,8 +92,7 @@ public class RepeatAfterCompleteTests extends TodorooTestCase { public void testTimeZoneLate() throws ParseException { TimeZone.setDefault(TimeZone.getTimeZone("America/Los_Angeles")); task.setValue(Task.DUE_DATE, DateUtilities.now() + DateUtilities.ONE_WEEK); - task.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, true); - nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal()); + nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal(), true); long expected = Task.createDueDate(Task.URGENCY_TOMORROW, 0); assertDateEquals("tomorrow", expected, nextDueDate);