From 0797c7041cec0d6476a491cb94deb3c47ddbb02e Mon Sep 17 00:00:00 2001 From: Sam Bosley Date: Mon, 6 Feb 2012 20:55:05 -0800 Subject: [PATCH] Fixed unit tests (except for the format strings ones) --- .../astrid/reminders/NotificationTests.java | 4 +- .../astrid/repeats/NewRepeatTests.java | 16 +- .../todoroo/astrid/repeats/RepeatTests.java | 328 ------------------ 3 files changed, 9 insertions(+), 339 deletions(-) delete mode 100644 tests/src/com/todoroo/astrid/repeats/RepeatTests.java diff --git a/tests/src/com/todoroo/astrid/reminders/NotificationTests.java b/tests/src/com/todoroo/astrid/reminders/NotificationTests.java index 0c269e04f..3313b0353 100644 --- a/tests/src/com/todoroo/astrid/reminders/NotificationTests.java +++ b/tests/src/com/todoroo/astrid/reminders/NotificationTests.java @@ -8,6 +8,7 @@ import android.content.Intent; import com.timsu.astrid.R; import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.NotificationManager; +import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.dao.TaskDao; @@ -26,7 +27,7 @@ public class NotificationTests extends DatabaseTestCase { @Override protected void setUp() throws Exception { super.setUp(); - fail("fix me! i crash a lot."); + //fail("fix me! i crash a lot."); } @Override @@ -55,6 +56,7 @@ public class NotificationTests extends DatabaseTestCase { intent.putExtra(Notifications.ID_KEY, task.getId()); intent.putExtra(Notifications.EXTRAS_TYPE, ReminderService.TYPE_DUE); new Notifications().onReceive(getContext(), intent); + AndroidUtilities.sleepDeep(500L); // Make sure receive happens assertTrue(triggered.value); } diff --git a/tests/src/com/todoroo/astrid/repeats/NewRepeatTests.java b/tests/src/com/todoroo/astrid/repeats/NewRepeatTests.java index 6c85358d3..328f4eb60 100644 --- a/tests/src/com/todoroo/astrid/repeats/NewRepeatTests.java +++ b/tests/src/com/todoroo/astrid/repeats/NewRepeatTests.java @@ -15,6 +15,7 @@ import com.timsu.astrid.R; import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.sql.Query; +import com.todoroo.andlib.utility.AndroidUtilities; import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.api.AstridApiConstants; @@ -55,6 +56,7 @@ public class NewRepeatTests extends DatabaseTestCase { protected void waitAndSync() { // Subclasses can override this to insert sync functionality + AndroidUtilities.sleepDeep(200L); // Delay to make sure changes persist } /** @@ -144,6 +146,7 @@ public class NewRepeatTests extends DatabaseTestCase { REMOTE_MODEL remoteModel = assertTaskExistsRemotely(t, dueDate); long completionDate = setCompletionDate(completeBefore, t, remoteModel, dueDate); + System.err.println("Completion date: " + new Date(completionDate)); waitAndSync(); assertTaskCompletedRemotely(t); @@ -154,19 +157,13 @@ public class NewRepeatTests extends DatabaseTestCase { Task task = new Task(cursor); System.err.println("Task: " + task.getValue(Task.TITLE) + ", due: " + task.getValue(Task.DUE_DATE)); } - assertEquals(StartupService.INTRO_TASK_SIZE + 2, cursor.getCount()); + assertEquals(StartupService.INTRO_TASK_SIZE + 1, cursor.getCount()); cursor.moveToFirst(); for (int i = 0; i < StartupService.INTRO_TASK_SIZE; i++) { cursor.moveToNext(); } t.readFromCursor(cursor); - assertEquals(title, t.getValue(Task.TITLE)); - assertEquals(dueDate, (long)t.getValue(Task.DUE_DATE)); - assertTrue(t.isCompleted()); - - cursor.moveToNext(); - t.readFromCursor(cursor); assertEquals(title, t.getValue(Task.TITLE)); assertFalse(t.isCompleted()); long newDueDate = t.getValue(Task.DUE_DATE); @@ -198,7 +195,6 @@ public class NewRepeatTests extends DatabaseTestCase { } Weekday[] allWeekdays = Weekday.values(); - result -= DateUtilities.ONE_DAY; Date date = new Date(result); Weekday start = allWeekdays[date.getDay()]; int i; @@ -409,11 +405,11 @@ public class NewRepeatTests extends DatabaseTestCase { // disabled until test can be fixed public void testAdvancedRepeatWeeklyFromDueDateCompleteBefore() { - // testAdvancedWeeklyFromDueDate(true, "advanced-weekly-before"); + testAdvancedWeeklyFromDueDate(true, "advanced-weekly-before"); } public void testAdvancedRepeatWeeklyFromDueDateCompleteAfter() { - // testAdvancedWeeklyFromDueDate(false, "advanced-weekly-after"); + testAdvancedWeeklyFromDueDate(false, "advanced-weekly-after"); } public void testAdvancedRepeatWeeklyFromCompleteDateCompleteBefore() { diff --git a/tests/src/com/todoroo/astrid/repeats/RepeatTests.java b/tests/src/com/todoroo/astrid/repeats/RepeatTests.java deleted file mode 100644 index 64c5af98d..000000000 --- a/tests/src/com/todoroo/astrid/repeats/RepeatTests.java +++ /dev/null @@ -1,328 +0,0 @@ -package com.todoroo.astrid.repeats; - -import java.util.Date; - -import android.content.Intent; - -import com.google.ical.values.Frequency; -import com.google.ical.values.RRule; -import com.timsu.astrid.R; -import com.todoroo.andlib.data.TodorooCursor; -import com.todoroo.andlib.service.Autowired; -import com.todoroo.andlib.sql.Query; -import com.todoroo.andlib.utility.DateUtilities; -import com.todoroo.andlib.utility.Preferences; -import com.todoroo.astrid.api.AstridApiConstants; -import com.todoroo.astrid.dao.MetadataDao; -import com.todoroo.astrid.dao.TaskDao; -import com.todoroo.astrid.data.Metadata; -import com.todoroo.astrid.data.Task; -import com.todoroo.astrid.test.DatabaseTestCase; -import com.todoroo.astrid.utility.Flags; - -public class RepeatTests extends DatabaseTestCase { - - @Autowired - TaskDao taskDao; - - @Autowired - MetadataDao metadataDao; - - @Override - 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 */ - public void testNoRepeats() throws Exception{ - Task task = new Task(); - task.setValue(Task.TITLE, "nothing"); - taskDao.save(task); - - task.setValue(Task.COMPLETION_DATE, DateUtilities.now()); - saveAndTriggerRepeatListener(task); - TodorooCursor cursor = taskDao.query(Query.select(Task.ID)); - try { - assertEquals(1, cursor.getCount()); - } finally { - cursor.close(); - } - } - - private void saveAndTriggerRepeatListener(Task task) { - Flags.set(Flags.ACTFM_SUPPRESS_SYNC); - if(task.isSaved()) - taskDao.saveExisting(task); - else - taskDao.createNew(task); - - Intent intent = new Intent(AstridApiConstants.BROADCAST_EVENT_TASK_COMPLETED); - intent.putExtra(AstridApiConstants.EXTRAS_TASK_ID, task.getId()); - new RepeatTaskCompleteListener().onReceive(getContext(), intent); - } - - /** test daily repeat from due date, but with no due date set */ - public void testDailyWithNoDueDate() throws Exception { - Task task = new Task(); - task.setValue(Task.TITLE, "daily"); - RRule rrule = new RRule(); - rrule.setInterval(5); - rrule.setFreq(Frequency.DAILY); - task.setValue(Task.RECURRENCE, rrule.toIcal()); - taskDao.save(task); - - task.setValue(Task.COMPLETION_DATE, DateUtilities.now()); - saveAndTriggerRepeatListener(task); - - TodorooCursor cursor = taskDao.query(Query.select(Task.PROPERTIES)); - try { - assertEquals(2, cursor.getCount()); - cursor.moveToFirst(); - task.readFromCursor(cursor); - - assertEquals("daily", task.getValue(Task.TITLE)); - assertFalse(task.hasDueDate()); - assertTrue(task.isCompleted()); - - cursor.moveToNext(); - task.readFromCursor(cursor); - assertEquals("daily", task.getValue(Task.TITLE)); - assertFalse(task.isCompleted()); - long dueDate = task.getValue(Task.DUE_DATE); - assertFalse(task.hasDueTime()); - assertTrue("Due date is '" + new Date(dueDate) + "', expected more like '" + - new Date(DateUtilities.now() + 5 * DateUtilities.ONE_DAY) + "'", - Math.abs(dueDate - DateUtilities.now() - 5 * DateUtilities.ONE_DAY) < DateUtilities.ONE_DAY); - } finally { - cursor.close(); - } - } - - /** test weekly repeat from due date, with due date & time set */ - public void testWeeklyWithDueDate() throws Exception { - Task task = new Task(); - task.setValue(Task.TITLE, "weekly"); - RRule rrule = new RRule(); - rrule.setInterval(1); - 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)); - taskDao.save(task); - - task.setValue(Task.COMPLETION_DATE, DateUtilities.now()); - saveAndTriggerRepeatListener(task); - - TodorooCursor cursor = taskDao.query(Query.select(Task.PROPERTIES)); - try { - assertEquals(2, cursor.getCount()); - cursor.moveToFirst(); - task.readFromCursor(cursor); - - assertEquals("weekly", task.getValue(Task.TITLE)); - assertEquals(originalDueDate, (long)task.getValue(Task.DUE_DATE)); - assertTrue(task.isCompleted()); - - cursor.moveToNext(); - task.readFromCursor(cursor); - assertEquals("weekly", task.getValue(Task.TITLE)); - assertFalse(task.isCompleted()); - long dueDate = task.getValue(Task.DUE_DATE); - assertTrue(task.hasDueTime()); - assertEquals("Due date is '" + new Date(dueDate) + "', expected exactly '" + - new Date(originalDueDate + DateUtilities.ONE_WEEK) + "': ", - originalDueDate + DateUtilities.ONE_WEEK, dueDate); - } finally { - cursor.close(); - } - } - - /** test hourly repeat from due date, with due date but no time */ - public void testHourlyFromDueDate() throws Exception { - Task task = new Task(); - task.setValue(Task.TITLE, "hourly"); - RRule rrule = new RRule(); - rrule.setInterval(4); - 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)); - taskDao.save(task); - - task.setValue(Task.COMPLETION_DATE, DateUtilities.now()); - saveAndTriggerRepeatListener(task); - - TodorooCursor cursor = taskDao.query(Query.select(Task.PROPERTIES)); - try { - assertEquals(2, cursor.getCount()); - cursor.moveToFirst(); - task.readFromCursor(cursor); - - assertEquals(originalDueDate, (long)task.getValue(Task.DUE_DATE)); - assertTrue(task.isCompleted()); - - cursor.moveToNext(); - task.readFromCursor(cursor); - assertFalse(task.isCompleted()); - long dueDate = task.getValue(Task.DUE_DATE); - assertTrue(task.hasDueTime()); - assertEquals("Due date is '" + new Date(dueDate) + "', expected exactly '" + - new Date(originalDueDate + 4 * DateUtilities.ONE_HOUR) + "'", - originalDueDate + 4 * DateUtilities.ONE_HOUR, dueDate); - } finally { - cursor.close(); - } - } - - public void testMinutelyFromDueDate() throws Exception { - Task task = new Task(); - task.setValue(Task.TITLE, "minutely"); - RRule rrule = new RRule(); - rrule.setInterval(30); - rrule.setFreq(Frequency.MINUTELY); - 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)); - taskDao.save(task); - - task.setValue(Task.COMPLETION_DATE, DateUtilities.now()); - saveAndTriggerRepeatListener(task); - - TodorooCursor cursor = taskDao.query(Query.select(Task.PROPERTIES)); - try { - assertEquals(2, cursor.getCount()); - cursor.moveToFirst(); - task.readFromCursor(cursor); - - assertEquals(originalDueDate, (long)task.getValue(Task.DUE_DATE)); - assertTrue(task.isCompleted()); - - cursor.moveToNext(); - task.readFromCursor(cursor); - assertFalse(task.isCompleted()); - long dueDate = task.getValue(Task.DUE_DATE); - assertTrue(task.hasDueTime()); - assertEquals("Due date is '" + new Date(dueDate) + "', expected exactly '" + - new Date(originalDueDate + 4 * DateUtilities.ONE_HOUR) + "'", - originalDueDate + 30 * DateUtilities.ONE_MINUTE, dueDate); - } finally { - cursor.close(); - } - } - - /** test after completion flag */ - public void testRepeatAfterComplete() throws Exception { - // create a weekly task due a couple days in the past, but with the 'after completion' - // specified. should be due 7 days from now - Task task = new Task(); - task.setValue(Task.TITLE, "afterComplete"); - RRule rrule = new RRule(); - rrule.setInterval(1); - 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.setFlag(Task.FLAGS, Task.FLAG_REPEAT_AFTER_COMPLETION, true); - taskDao.save(task); - - task.setValue(Task.COMPLETION_DATE, DateUtilities.now()); - saveAndTriggerRepeatListener(task); - - TodorooCursor cursor = taskDao.query(Query.select(Task.PROPERTIES)); - try { - assertEquals(2, cursor.getCount()); - cursor.moveToFirst(); - task.readFromCursor(cursor); - - assertTrue(task.hasDueDate()); - assertTrue(task.isCompleted()); - - cursor.moveToNext(); - task.readFromCursor(cursor); - assertFalse(task.isCompleted()); - long dueDate = task.getValue(Task.DUE_DATE); - assertFalse(task.hasDueTime()); - - assertTrue("Due date is '" + new Date(dueDate) + "', expected more like '" + - new Date(DateUtilities.now() + DateUtilities.ONE_WEEK) + "'", - Math.abs(dueDate - DateUtilities.now() - DateUtilities.ONE_WEEK) < DateUtilities.ONE_DAY); - } finally { - cursor.close(); - } - } - - /** test that metadata is transferred to new task */ - public void testMetadataIsCopied() throws Exception { - Task task = new Task(); - task.setValue(Task.TITLE, "meta data test"); - RRule rrule = new RRule(); - rrule.setInterval(5); - rrule.setFreq(Frequency.DAILY); - task.setValue(Task.RECURRENCE, rrule.toIcal()); - taskDao.save(task); - - Metadata metadata = new Metadata(); - metadata.setValue(Metadata.KEY, "special"); - metadata.setValue(Metadata.VALUE1, "sauce"); - metadata.setValue(Metadata.TASK, task.getId()); - metadataDao.persist(metadata); - - task.setValue(Task.COMPLETION_DATE, DateUtilities.now()); - saveAndTriggerRepeatListener(task); - - TodorooCursor cursor = metadataDao.query(Query.select(Metadata.TASK)); - try { - assertEquals(2, cursor.getCount()); - cursor.moveToFirst(); - metadata.readFromCursor(cursor); - - assertSame(task.getId(), (long)metadata.getValue(Metadata.TASK)); - - cursor.moveToNext(); - metadata.readFromCursor(cursor); - assertNotSame(task.getId(), (long)metadata.getValue(Metadata.TASK)); - } finally { - cursor.close(); - } - } - - /** test hide unitl date is repeated */ - public void testHideUntilRepeated() throws Exception { - Task task = new Task(); - task.setValue(Task.TITLE, "hideUntil"); - RRule rrule = new RRule(); - 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.HIDE_UNTIL, task.createHideUntil(Task.HIDE_UNTIL_DAY_BEFORE, 0)); - taskDao.save(task); - - task.setValue(Task.COMPLETION_DATE, DateUtilities.now()); - saveAndTriggerRepeatListener(task); - - TodorooCursor cursor = taskDao.query(Query.select(Task.PROPERTIES)); - try { - assertEquals(2, cursor.getCount()); - cursor.moveToFirst(); - task.readFromCursor(cursor); - - assertTrue(task.hasDueDate()); - assertTrue(task.isCompleted()); - assertFalse(task.isHidden()); - - cursor.moveToNext(); - task.readFromCursor(cursor); - assertFalse(task.isCompleted()); - assertTrue(task.isHidden()); - long date = task.getValue(Task.HIDE_UNTIL); - assertTrue("Hide Until date is '" + new Date(date) + "', expected more like '" + - new Date(DateUtilities.now() + 6 * DateUtilities.ONE_DAY) + "'", - Math.abs(date - DateUtilities.now() - 6 * DateUtilities.ONE_DAY) < DateUtilities.ONE_DAY); - } finally { - cursor.close(); - } - } -}