Fix for unit tests for repeat

pull/14/head
Tim Su 13 years ago
parent 371dd2bbb8
commit c6a95952c7

@ -31,6 +31,8 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
@Autowired ActFmPreferenceService actFmPreferenceService;
private static boolean skipActFmCheck = false;
@Override
public void onReceive(Context context, Intent intent) {
ContextManager.setContext(context);
@ -64,7 +66,7 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
}
// update repeat time when it repeats on the server
if(actFmPreferenceService.isLoggedIn()) {
if(actFmPreferenceService.isLoggedIn() && !skipActFmCheck) {
task.setValue(Task.COMPLETION_DATE, 0L);
task.setValue(Task.DUE_DATE, newDueDate);
task.setValue(Task.HIDE_UNTIL, hideUntil);
@ -97,6 +99,11 @@ public class RepeatTaskCompleteListener extends BroadcastReceiver {
}
}
/** for debug */
static void setSkipActFmCheck(boolean skipActFmCheck) {
RepeatTaskCompleteListener.skipActFmCheck = skipActFmCheck;
}
/** 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);

@ -110,6 +110,7 @@ public class TaskAdapter extends CursorAdapter implements Filterable {
Task.DETAILS,
Task.ELAPSED_SECONDS,
Task.TIMER_START,
Task.RECURRENCE,
Task.NOTES,
Task.USER_ID,
Task.USER

@ -3,6 +3,7 @@ package com.todoroo.astrid.repeats;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Date;
import java.util.TimeZone;
import com.google.ical.values.Frequency;
import com.google.ical.values.RRule;
@ -44,7 +45,6 @@ public class RepeatAfterCompleteTests extends TodorooTestCase {
buildRRule(1, freq);
nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal());
assertDateTimeEquals(freq.toString() + "x1", DateUtilities.now() + interval, nextDueDate);
buildRRule(6, freq);
nextDueDate = RepeatTaskCompleteListener.computeNextDueDate(task, rrule.toIcal());
@ -79,6 +79,15 @@ 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());
long expected = Task.createDueDate(Task.URGENCY_TOMORROW, 0);
assertDateEquals("tomorrow", expected, nextDueDate);
}
// --- helpers
@ -98,7 +107,7 @@ public class RepeatAfterCompleteTests extends TodorooTestCase {
private void assertDateEquals(String message, long expected, long actual) {
expected = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, expected);
actual = Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, actual);
assertEquals("Due Date is '" + DateUtilities.getDateStringWithWeekday(getContext(), new Date(actual))
assertEquals(message + ": Due Date is '" + DateUtilities.getDateStringWithWeekday(getContext(), new Date(actual))
+ "', expected '" + DateUtilities.getDateStringWithWeekday(getContext(), new Date(expected)) + "'",
expected, actual);
}

@ -32,6 +32,7 @@ public class RepeatTests extends DatabaseTestCase {
protected void setUp() throws Exception {
super.setUp();
Preferences.setStringFromInteger(R.string.p_default_urgency_key, 0);
RepeatTaskCompleteListener.setSkipActFmCheck(true);
}
/** test that completing a task w/ no repeats does nothing */
@ -109,7 +110,7 @@ public class RepeatTests extends DatabaseTestCase {
rrule.setFreq(Frequency.WEEKLY);
task.setValue(Task.RECURRENCE, rrule.toIcal());
long originalDueDate = (DateUtilities.now() - 3 * DateUtilities.ONE_DAY) / 1000L * 1000L;
task.setValue(Task.DUE_DATE, task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, originalDueDate));
task.setValue(Task.DUE_DATE, Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, originalDueDate));
taskDao.save(task);
task.setValue(Task.COMPLETION_DATE, DateUtilities.now());
@ -148,7 +149,7 @@ public class RepeatTests extends DatabaseTestCase {
rrule.setFreq(Frequency.HOURLY);
task.setValue(Task.RECURRENCE, rrule.toIcal());
long originalDueDate = (DateUtilities.now() + DateUtilities.ONE_DAY) / 1000L * 1000L;
task.setValue(Task.DUE_DATE, task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, originalDueDate));
task.setValue(Task.DUE_DATE, Task.createDueDate(Task.URGENCY_SPECIFIC_DAY_TIME, originalDueDate));
taskDao.save(task);
task.setValue(Task.COMPLETION_DATE, DateUtilities.now());
@ -187,7 +188,7 @@ public class RepeatTests extends DatabaseTestCase {
rrule.setFreq(Frequency.WEEKLY);
task.setValue(Task.RECURRENCE, rrule.toIcal());
long originalDueDate = (DateUtilities.now() - 3 * DateUtilities.ONE_DAY) / 1000L * 1000L;
task.setValue(Task.DUE_DATE, task.createDueDate(Task.URGENCY_SPECIFIC_DAY, originalDueDate));
task.setValue(Task.DUE_DATE, Task.createDueDate(Task.URGENCY_SPECIFIC_DAY, originalDueDate));
task.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, true);
taskDao.save(task);
@ -260,7 +261,7 @@ public class RepeatTests extends DatabaseTestCase {
rrule.setInterval(1);
rrule.setFreq(Frequency.WEEKLY);
task.setValue(Task.RECURRENCE, rrule.toIcal());
task.setValue(Task.DUE_DATE, task.createDueDate(Task.URGENCY_TODAY, 0));
task.setValue(Task.DUE_DATE, Task.createDueDate(Task.URGENCY_TODAY, 0));
task.setValue(Task.HIDE_UNTIL, task.createHideUntil(Task.HIDE_UNTIL_DAY_BEFORE, 0));
taskDao.save(task);

Loading…
Cancel
Save