From 073d076c1f2e1a4ea26dac936aafdd5feec4f567 Mon Sep 17 00:00:00 2001 From: Tim Su Date: Mon, 10 May 2010 21:17:48 -0700 Subject: [PATCH] Fixed unit test compilation errors. now to run them and etc. --- .../todoroo/astrid/utility/Preferences.java | 175 +++++++++++ tests/.classpath | 1 - .../astrid/reminders/AlarmReceiverTests.java | 130 -------- .../AssertiveNotificationManager.java | 47 --- .../reminders/NotificationServiceTests.java | 110 ------- .../astrid/reminders/PluginTestCase.java | 43 --- .../service/ReminderServiceTests.java | 282 ------------------ .../com/todoroo/astrid/rmilk/RTMTestCase.java | 5 - .../astrid/dao/BasicDatabaseTests.java | 14 +- .../todoroo/astrid/dao/MetadataDaoTests.java | 36 ++- .../com/todoroo/astrid/dao/TaskDaoTests.java | 80 ++--- .../com/todoroo/astrid/model/TaskTests.java | 39 +-- .../astrid/service/TaskServiceTests.java | 139 --------- .../astrid/test/AstridActivityTestCase.java | 96 ------ .../todoroo/astrid/test/DatabaseTestCase.java | 36 +-- 15 files changed, 249 insertions(+), 984 deletions(-) create mode 100644 src/com/todoroo/astrid/utility/Preferences.java delete mode 100644 tests/plugin-src/com/todoroo/astrid/reminders/AlarmReceiverTests.java delete mode 100644 tests/plugin-src/com/todoroo/astrid/reminders/AssertiveNotificationManager.java delete mode 100644 tests/plugin-src/com/todoroo/astrid/reminders/NotificationServiceTests.java delete mode 100644 tests/plugin-src/com/todoroo/astrid/reminders/PluginTestCase.java delete mode 100644 tests/plugin-src/com/todoroo/astrid/reminders/service/ReminderServiceTests.java delete mode 100644 tests/plugin-src/com/todoroo/astrid/rmilk/RTMTestCase.java delete mode 100644 tests/src/com/todoroo/astrid/service/TaskServiceTests.java delete mode 100644 tests/src/com/todoroo/astrid/test/AstridActivityTestCase.java diff --git a/src/com/todoroo/astrid/utility/Preferences.java b/src/com/todoroo/astrid/utility/Preferences.java new file mode 100644 index 000000000..a6045ea22 --- /dev/null +++ b/src/com/todoroo/astrid/utility/Preferences.java @@ -0,0 +1,175 @@ +package com.todoroo.astrid.utility; + +import android.content.Context; +import android.content.SharedPreferences; +import android.content.SharedPreferences.Editor; +import android.content.res.Resources; +import android.preference.PreferenceManager; + +import com.timsu.astrid.R; +import com.todoroo.andlib.service.ContextManager; +import com.todoroo.astrid.model.Task; + +public class Preferences { + + private static final String P_CURRENT_VERSION = "cv"; //$NON-NLS-1$ + private static final String P_READ_INTRODUCTION = "ri"; //$NON-NLS-1$ + + /** Set preference defaults, if unset. called at startup */ + public static void setPreferenceDefaults() { + Context context = ContextManager.getContext(); + SharedPreferences prefs = getPrefs(context); + Editor editor = prefs.edit(); + Resources r = context.getResources(); + + if(getIntegerFromString(R.string.EPr_default_urgency_key) == null) { + editor.putString(r.getString(R.string.EPr_default_urgency_key), + Integer.toString(Task.URGENCY_THIS_WEEK)); + } + if(getIntegerFromString(R.string.EPr_default_importance_key) == null) { + editor.putString(r.getString(R.string.EPr_default_importance_key), + Integer.toString(Task.IMPORTANCE_SHOULD_DO)); + } + + editor.commit(); + } + + /* ====================================================================== + * ========================================================= system prefs + * ====================================================================== */ + + /** CurrentVersion: the currently installed version of Astrid */ + public static int getCurrentVersion() { + Context context = ContextManager.getContext(); + return getPrefs(context).getInt(P_CURRENT_VERSION, 0); + } + + /** CurrentVersion: the currently installed version of Astrid */ + public static void setCurrentVersion(int version) { + Context context = ContextManager.getContext(); + Editor editor = getPrefs(context).edit(); + editor.putInt(P_CURRENT_VERSION, version); + editor.commit(); + } + + /** ReadIntroduction: whether the user has read the introductory notes */ + public static boolean hasReadIntroduction() { + Context context = ContextManager.getContext(); + return getPrefs(context).getBoolean(P_READ_INTRODUCTION, false); + } + + /** ReadIntroduction: whether the user has read the introductory notes */ + public static void setReadIntroduction(boolean value) { + Context context = ContextManager.getContext(); + Editor editor = getPrefs(context).edit(); + editor.putBoolean(P_READ_INTRODUCTION, value); + editor.commit(); + } + + /* ====================================================================== + * ======================================================= helper methods + * ====================================================================== */ + + /** Get preferences object from the context */ + public static SharedPreferences getPrefs(Context context) { + return PreferenceManager.getDefaultSharedPreferences(context); + } + + // --- preference fetching + + /** Gets an string value from a string preference. Returns null + * if the value is not set + * + * @param context + * @param key + * @return integer value, or null on error + */ + public static String getStringValue(String key) { + Context context = ContextManager.getContext(); + return getPrefs(context).getString(key, null); + } + + /** Gets an string value from a string preference. Returns null + * if the value is not set + * + * @param context + * @param key + * @return integer value, or null on error + */ + public static String getStringValue(int keyResource) { + Context context = ContextManager.getContext(); + return getPrefs(context).getString(context.getResources().getString(keyResource), null); + } + + /** Gets an integer value from a string key. Returns null + * if the value is not set or not an integer. + * + * @param context + * @param key + * @return integer value, or null on error + */ + public static Integer getIntegerFromString(String key) { + Context context = ContextManager.getContext(); + String value = getPrefs(context).getString(key, null); + if(value == null) + return null; + + try { + return Integer.parseInt(value); + } catch (Exception e) { + return null; + } + } + + /** Gets an integer value from a string preference. Returns null + * if the value is not set or not an integer. + * + * @param context + * @param keyResource resource from string.xml + * @return integer value, or null on error + */ + public static Integer getIntegerFromString(int keyResource) { + Context context = ContextManager.getContext(); + Resources r = context.getResources(); + String value = getPrefs(context).getString(r.getString(keyResource), null); + if(value == null) + return null; + + try { + return Integer.parseInt(value); + } catch (Exception e) { + return null; + } + } + + /** Gets an float value from a string preference. Returns null + * if the value is not set or not an flat. + * + * @param context + * @param keyResource resource from string.xml + * @return + */ + public static Float getFloatFromString(int keyResource) { + Context context = ContextManager.getContext(); + Resources r = context.getResources(); + String value = getPrefs(context).getString(r.getString(keyResource), ""); //$NON-NLS-1$ + + try { + return Float.parseFloat(value); + } catch (Exception e) { + return null; + } + } + + /** Gets a boolean preference (e.g. a CheckBoxPreference setting) + * + * @param context + * @param key + * @param defValue + * @return default if value is unset otherwise the value + */ + public static boolean getBoolean(String key, boolean defValue) { + Context context = ContextManager.getContext(); + return getPrefs(context).getBoolean(key, defValue); + } +} diff --git a/tests/.classpath b/tests/.classpath index 029539f51..8a84e1a23 100644 --- a/tests/.classpath +++ b/tests/.classpath @@ -2,7 +2,6 @@ - diff --git a/tests/plugin-src/com/todoroo/astrid/reminders/AlarmReceiverTests.java b/tests/plugin-src/com/todoroo/astrid/reminders/AlarmReceiverTests.java deleted file mode 100644 index 2d8996378..000000000 --- a/tests/plugin-src/com/todoroo/astrid/reminders/AlarmReceiverTests.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.todoroo.astrid.reminders; - -import android.app.Notification; -import android.app.PendingIntent; -import android.content.Intent; - -import com.todoroo.andlib.test.utility.DateUtilities; -import com.todoroo.astrid.model.Task; - -public class AlarmReceiverTests extends PluginTestCase { - - /** simple test of task at deadline */ - public void testDeadlineReminder() { - Task task = new Task(); - task.setValue(Task.TITLE, "poop"); - task.setValue(Task.DUE_DATE, DateUtilities.now()); - - long id = createTask(task, null); - Intent alarmIntent = new Intent(); - alarmIntent.putExtra(AlarmReceiver.TOKEN_TASK_ID, id); - alarmIntent.putExtra(AlarmReceiver.TOKEN_IS_DEADLINE, true); - alarmIntent.putExtra(AlarmReceiver.TOKEN_IS_ALARMCLOCK, false); - - AlarmReceiver rx = new AlarmReceiver(); - AssertiveNotificationManager nm = new AssertiveNotificationManager(getContext()); - AlarmReceiver.notificationManager = nm; - rx.onReceive(getContext(), alarmIntent); - nm.assertNotified(); - } - - /** task at deadline, except hidden. no notification should sound */ - public void testDeadlineReminderExceptHidden() { - Task task = new Task(); - task.setValue(Task.TITLE, "poop"); - task.setValue(Task.DUE_DATE, DateUtilities.now()); - task.setValue(Task.HIDDEN_UNTIL, DateUtilities.now() + 100); - - long id = createTask(task, null); - Intent alarmIntent = new Intent(); - alarmIntent.putExtra(AlarmReceiver.TOKEN_TASK_ID, id); - alarmIntent.putExtra(AlarmReceiver.TOKEN_IS_DEADLINE, true); - alarmIntent.putExtra(AlarmReceiver.TOKEN_IS_ALARMCLOCK, false); - - AlarmReceiver rx = new AlarmReceiver(); - AssertiveNotificationManager nm = new AssertiveNotificationManager(getContext()); - AlarmReceiver.notificationManager = nm; - rx.onReceive(getContext(), alarmIntent); - nm.assertNotNotified(); - } - - /** task upcoming */ - public void testUpcomingReminder() { - Task task = new Task(); - task.setValue(Task.TITLE, "poop"); - task.setValue(Task.DUE_DATE, DateUtilities.now() + 100); - - long id = createTask(task, null); - Intent alarmIntent = new Intent(); - alarmIntent.putExtra(AlarmReceiver.TOKEN_TASK_ID, id); - alarmIntent.putExtra(AlarmReceiver.TOKEN_IS_DEADLINE, false); - alarmIntent.putExtra(AlarmReceiver.TOKEN_IS_ALARMCLOCK, false); - - AlarmReceiver rx = new AlarmReceiver(); - AssertiveNotificationManager nm = new AssertiveNotificationManager(getContext()); - AlarmReceiver.notificationManager = nm; - rx.onReceive(getContext(), alarmIntent); - nm.assertNotified(); - } - - /** task overdue */ - public void testOverdueReminder() { - Task task = new Task(); - task.setValue(Task.TITLE, "poop"); - task.setValue(Task.DUE_DATE, DateUtilities.now() - 100); - - long id = createTask(task, null); - Intent alarmIntent = new Intent(); - alarmIntent.putExtra(AlarmReceiver.TOKEN_TASK_ID, id); - alarmIntent.putExtra(AlarmReceiver.TOKEN_IS_DEADLINE, false); - alarmIntent.putExtra(AlarmReceiver.TOKEN_IS_ALARMCLOCK, false); - - AlarmReceiver rx = new AlarmReceiver(); - AssertiveNotificationManager nm = new AssertiveNotificationManager(getContext()); - AlarmReceiver.notificationManager = nm; - rx.onReceive(getContext(), alarmIntent); - nm.assertNotified(); - } - - /** task alarm clock */ - public void testAlarmClock() { - Task task = new Task(); - task.setValue(Task.TITLE, "poop"); - task.setValue(Task.DUE_DATE, DateUtilities.now()); - - long id = createTask(task, null); - Intent alarmIntent = new Intent(); - alarmIntent.putExtra(AlarmReceiver.TOKEN_TASK_ID, id); - alarmIntent.putExtra(AlarmReceiver.TOKEN_IS_DEADLINE, true); - alarmIntent.putExtra(AlarmReceiver.TOKEN_IS_ALARMCLOCK, true); - - AlarmReceiver rx = new AlarmReceiver(); - AssertiveNotificationManager nm = new AssertiveNotificationManager(getContext()); - AlarmReceiver.notificationManager = nm; - rx.onReceive(getContext(), alarmIntent); - nm.assertNotified(); - assertTrue((nm.getNotification().flags & Notification.FLAG_INSISTENT) > 0); - } - - /** test the intent that the alarm receiver creates */ - public void testOpenIntent() throws Exception { - Task task = new Task(); - task.setValue(Task.TITLE, "poop"); - task.setValue(Task.DUE_DATE, DateUtilities.now()); - - long id = createTask(task, null); - Intent alarmIntent = new Intent(); - alarmIntent.putExtra(AlarmReceiver.TOKEN_TASK_ID, id); - alarmIntent.putExtra(AlarmReceiver.TOKEN_IS_DEADLINE, true); - alarmIntent.putExtra(AlarmReceiver.TOKEN_IS_ALARMCLOCK, false); - - AlarmReceiver rx = new AlarmReceiver(); - AssertiveNotificationManager nm = new AssertiveNotificationManager(getContext()); - AlarmReceiver.notificationManager = nm; - rx.onReceive(getContext(), alarmIntent); - nm.assertNotified(); - - PendingIntent intent = nm.getNotification().contentIntent; - intent.send(); - } -} diff --git a/tests/plugin-src/com/todoroo/astrid/reminders/AssertiveNotificationManager.java b/tests/plugin-src/com/todoroo/astrid/reminders/AssertiveNotificationManager.java deleted file mode 100644 index ec7e47d44..000000000 --- a/tests/plugin-src/com/todoroo/astrid/reminders/AssertiveNotificationManager.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.todoroo.astrid.reminders; - -import android.app.Notification; -import android.content.Context; - -import com.todoroo.andlib.service.NotificationManager.AndroidNotificationManager; - -/** - * Notification manager that provides notifications and adds an - * extra method for verification. - * - * @author timsu - * - */ -public class AssertiveNotificationManager extends AndroidNotificationManager { - - Notification notification = null; - - public AssertiveNotificationManager(Context context) { - super(context); - - } - - @Override - public void notify(int id, Notification notification) { - super.notify(id, notification); - this.notification = notification; - } - - public void assertNotified() { - if(notification == null) - throw new AssertionError("Notification was not triggered"); - } - - public void assertNotNotified() { - if(notification != null) - throw new AssertionError("Notification was triggered"); - } - - public Notification getNotification() { - return notification; - } - - public void clear() { - notification = null; - } -} \ No newline at end of file diff --git a/tests/plugin-src/com/todoroo/astrid/reminders/NotificationServiceTests.java b/tests/plugin-src/com/todoroo/astrid/reminders/NotificationServiceTests.java deleted file mode 100644 index 9a55a5b3f..000000000 --- a/tests/plugin-src/com/todoroo/astrid/reminders/NotificationServiceTests.java +++ /dev/null @@ -1,110 +0,0 @@ -package com.todoroo.astrid.reminders; - -import java.util.Date; - -import android.content.Context; -import android.content.SharedPreferences; -import android.content.SharedPreferences.Editor; -import android.content.res.Resources; -import android.preference.PreferenceManager; -import android.test.AndroidTestCase; - -import com.todoroo.astrid.R; -import com.todoroo.astrid.reminders.service.NotificationService; - -public class NotificationServiceTests extends AndroidTestCase { - - /** - * Test quiet hour determination logic - */ - public void testQuietHoursWrapped() { - Context context = getContext(); - - // test wrapped quiet hours - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); - Editor editor = prefs.edit(); - Resources r = getContext().getResources(); - - editor.putString(r.getString(R.string.rmd_EPr_quiet_hours_start_key), - Integer.toString(22)); - editor.putString(r.getString(R.string.rmd_EPr_quiet_hours_end_key), - Integer.toString(8)); - editor.commit(); - - Date date = new Date(); - date.setHours(21); - date.setMinutes(59); - assertFalse(NotificationService.isInQuietHours(context, date)); - - date.setHours(22); - date.setMinutes(0); - assertTrue(NotificationService.isInQuietHours(context, date)); - - date.setHours(23); - assertTrue(NotificationService.isInQuietHours(context, date)); - - date.setHours(0); - assertTrue(NotificationService.isInQuietHours(context, date)); - - date.setHours(7); - date.setMinutes(59); - assertTrue(NotificationService.isInQuietHours(context, date)); - - date.setHours(8); - date.setMinutes(0); - assertFalse(NotificationService.isInQuietHours(context, date)); - - date.setHours(12); - assertFalse(NotificationService.isInQuietHours(context, date)); - - date.setHours(20); - assertFalse(NotificationService.isInQuietHours(context, date)); - } - - /** - * Test quiet hour determination logic - */ - public void testQuietHoursUnwrapped() { - Context context = getContext(); - - // test wrapped quiet hours - SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); - Editor editor = prefs.edit(); - Resources r = getContext().getResources(); - - editor.putString(r.getString(R.string.rmd_EPr_quiet_hours_start_key), - Integer.toString(10)); - editor.putString(r.getString(R.string.rmd_EPr_quiet_hours_end_key), - Integer.toString(16)); - editor.commit(); - - Date date = new Date(); - date.setHours(9); - date.setMinutes(59); - assertFalse(NotificationService.isInQuietHours(context, date)); - - date.setHours(10); - date.setMinutes(0); - assertTrue(NotificationService.isInQuietHours(context, date)); - - date.setHours(11); - assertTrue(NotificationService.isInQuietHours(context, date)); - - date.setHours(13); - assertTrue(NotificationService.isInQuietHours(context, date)); - - date.setHours(15); - date.setMinutes(59); - assertTrue(NotificationService.isInQuietHours(context, date)); - - date.setHours(16); - date.setMinutes(0); - assertFalse(NotificationService.isInQuietHours(context, date)); - - date.setHours(23); - assertFalse(NotificationService.isInQuietHours(context, date)); - - date.setHours(0); - assertFalse(NotificationService.isInQuietHours(context, date)); - } -} diff --git a/tests/plugin-src/com/todoroo/astrid/reminders/PluginTestCase.java b/tests/plugin-src/com/todoroo/astrid/reminders/PluginTestCase.java deleted file mode 100644 index 456b3a966..000000000 --- a/tests/plugin-src/com/todoroo/astrid/reminders/PluginTestCase.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.todoroo.astrid.reminders; - -import java.util.HashMap; -import java.util.Map.Entry; - -import com.todoroo.andlib.service.Autowired; -import com.todoroo.astrid.dao.MetadataDao; -import com.todoroo.astrid.dao.TaskDao; -import com.todoroo.astrid.model.Metadata; -import com.todoroo.astrid.model.Task; -import com.todoroo.astrid.test.DatabaseTestCase; - -public class PluginTestCase extends DatabaseTestCase { - - @Autowired - public TaskDao taskDao; - - @Autowired - public MetadataDao metadataDao; - - /** - * Helper method to create a task. - * @param task - * @param metadata - * @return task id - */ - public long createTask(Task task, HashMap metadata) { - taskDao.save(database, task, false); - - if(metadata != null) { - Metadata metadataItem = new Metadata(); - metadataItem.setValue(Metadata.TASK, task.getId()); - for(Entry entry : metadata.entrySet()) { - metadataItem.setValue(Metadata.KEY, entry.getKey()); - metadataItem.setValue(Metadata.VALUE, entry.getValue()); - metadataDao.save(database, metadataItem); - } - } - - return task.getId(); - } - -} diff --git a/tests/plugin-src/com/todoroo/astrid/reminders/service/ReminderServiceTests.java b/tests/plugin-src/com/todoroo/astrid/reminders/service/ReminderServiceTests.java deleted file mode 100644 index 410a490fa..000000000 --- a/tests/plugin-src/com/todoroo/astrid/reminders/service/ReminderServiceTests.java +++ /dev/null @@ -1,282 +0,0 @@ -package com.todoroo.astrid.reminders.service; - -import java.util.HashMap; - -import android.database.sqlite.SQLiteQueryBuilder; - -import com.todoroo.andlib.test.data.TodorooCursor; -import com.todoroo.andlib.test.utility.DateUtilities; -import com.todoroo.astrid.model.Task; -import com.todoroo.astrid.reminders.AlarmReceiver; -import com.todoroo.astrid.reminders.Constants; -import com.todoroo.astrid.reminders.PluginTestCase; -import com.todoroo.astrid.reminders.service.ReminderService.Alarm; - -public class ReminderServiceTests extends PluginTestCase { - - /** - * Test task fetching mechanism for reminders - */ - @SuppressWarnings("unused") - public void testTaskReminderFetch() { - ReminderService service = new ReminderService(getContext()); - - SQLiteQueryBuilder baseQuery = service.createBaseQuery(); - TodorooCursor cursor = service.fetchTasksWithReminders(baseQuery); - assertEquals(0, cursor.getCount()); - cursor.close(); - - // add new tasks - int now = DateUtilities.now(); - Task task = new Task(); - HashMap metadata = new HashMap(); - - task.setValue(Task.TITLE, "normal"); - task.setValue(Task.DUE_DATE, now + 10); - metadata.put(Constants.KEY_REMINDER, Integer.toString(Constants.REMINDER_AT_DEADLINE)); - long normalId = createTask(task, metadata); - - task.clear(); - task.setValue(Task.TITLE, "completed"); - task.setValue(Task.DUE_DATE, now + 10); - task.setValue(Task.COMPLETION_DATE, now + 10); - metadata.put(Constants.KEY_REMINDER, Integer.toString(Constants.REMINDER_ALARM_CLOCK)); - long completedId = createTask(task, metadata); - - task.clear(); - task.setValue(Task.TITLE, "hidden"); - task.setValue(Task.DUE_DATE, now + 10); - task.setValue(Task.HIDDEN_UNTIL, now + 10); - metadata.put(Constants.KEY_REMINDER, Integer.toString(Constants.REMINDER_INCREASING)); - long hiddenId = createTask(task, metadata); - - task.clear(); - task.setValue(Task.TITLE, "noalarm"); - task.setValue(Task.DUE_DATE, now + 10); - metadata.put(Constants.KEY_REMINDER, Integer.toString(Constants.REMINDER_NONE)); - long noAlarmId = createTask(task, metadata); - - task.clear(); - task.setValue(Task.TITLE, "overdue"); - task.setValue(Task.DUE_DATE, now - 10); - metadata.put(Constants.KEY_REMINDER, Integer.toString(Constants.REMINDER_AT_DEADLINE)); - long overdueId = createTask(task, metadata); - - cursor = service.fetchTasksWithReminders(baseQuery); - assertEquals(2, cursor.getCount()); - cursor.moveToFirst(); - task.readFromCursor(cursor, ReminderService.PROPERTIES); - assertEquals(task.getId(), normalId); - assertEquals(task.getValue(ReminderService.REMINDER_MODE), - Integer.toString(Constants.REMINDER_AT_DEADLINE)); - cursor.moveToNext(); - task.readFromCursor(cursor, ReminderService.PROPERTIES); - assertEquals(task.getId(), hiddenId); - assertEquals(task.getValue(ReminderService.REMINDER_MODE), - Integer.toString(Constants.REMINDER_INCREASING)); - cursor.close(); - } - - /** - * Test task fetching mechanism for overdue interval - */ - @SuppressWarnings("unused") - public void testTaskOverdueFetch() { - ReminderService service = new ReminderService(getContext()); - - SQLiteQueryBuilder baseQuery = service.createBaseQuery(); - TodorooCursor cursor = service.fetchTasksWithOverdueReminders(baseQuery); - assertEquals(0, cursor.getCount()); - cursor.close(); - - // add new tasks - int now = DateUtilities.now(); - Task task = new Task(); - HashMap metadata = new HashMap(); - - task.setValue(Task.TITLE, "normal"); - task.setValue(Task.DUE_DATE, now - 10); - metadata.put(Constants.KEY_OVERDUE, Integer.toString(1500)); - long normalId = createTask(task, metadata); - - task.clear(); - task.setValue(Task.TITLE, "completed"); - task.setValue(Task.DUE_DATE, now - 10); - task.setValue(Task.COMPLETION_DATE, now - 10); - metadata.put(Constants.KEY_OVERDUE, Integer.toString(1500)); - long completedId = createTask(task, metadata); - - task.clear(); - task.setValue(Task.TITLE, "hidden"); - task.setValue(Task.DUE_DATE, now - 10); - task.setValue(Task.HIDDEN_UNTIL, now + 10); - metadata.put(Constants.KEY_OVERDUE, Integer.toString(1500)); - long hiddenId = createTask(task, metadata); - - task.clear(); - task.setValue(Task.TITLE, "noalarm"); - task.setValue(Task.DUE_DATE, now - 10); - metadata.put(Constants.KEY_OVERDUE, Integer.toString(0)); - long noAlarmId = createTask(task, metadata); - - task.clear(); - task.setValue(Task.TITLE, "not due"); - task.setValue(Task.DUE_DATE, now + 10); - metadata.put(Constants.KEY_OVERDUE, Integer.toString(0)); - long notDueId = createTask(task, metadata); - - cursor = service.fetchTasksWithOverdueReminders(baseQuery); - assertEquals(2, cursor.getCount()); - cursor.moveToFirst(); - task.readFromCursor(cursor, ReminderService.PROPERTIES); - assertEquals(task.getId(), normalId); - assertEquals(task.getValue(ReminderService.OVERDUE_INTERVAL), - Integer.valueOf(1500)); - cursor.moveToNext(); - task.readFromCursor(cursor, ReminderService.PROPERTIES); - assertEquals(task.getId(), hiddenId); - assertEquals(task.getValue(ReminderService.OVERDUE_INTERVAL), - Integer.valueOf(1500)); - cursor.close(); - } - - /** - * Test task fetching mechanism for reminders - */ - public void testTaskFetchForReminders() { - ReminderService service = new ReminderService(getContext()); - - // try invalid - assertNull("could fetch invalid", service.fetchTask(-99)); - - // add new tasks - Task task = new Task(); - HashMap metadata = new HashMap(); - task.setValue(Task.TITLE, "salami"); - task.setValue(Task.DUE_DATE, 100); - metadata.put(Constants.KEY_OVERDUE, "123"); - metadata.put(Constants.KEY_LAST_NOTIFIED, "345"); - metadata.put(Constants.KEY_REMINDER, "567"); - long id = createTask(task, metadata); - - task = service.fetchTask(id); - assertEquals(task.getValue(Task.TITLE), "salami"); - assertEquals(task.getValue(ReminderService.OVERDUE_INTERVAL), Integer.valueOf(123)); - assertEquals(task.getValue(ReminderService.LAST_NOTIFIED), Integer.valueOf(345)); - assertEquals(task.getValue(ReminderService.REMINDER_MODE), Integer.valueOf(567)); - - task.setValue(ReminderService.OVERDUE_INTERVAL, 321); - task.setValue(ReminderService.LAST_NOTIFIED, 543); - task.setValue(ReminderService.REMINDER_MODE, 765); - - service.writeReminderOptions(task); - task = service.fetchTask(id); - - assertEquals(task.getValue(ReminderService.OVERDUE_INTERVAL), Integer.valueOf(321)); - assertEquals(task.getValue(ReminderService.LAST_NOTIFIED), Integer.valueOf(543)); - assertEquals(task.getValue(ReminderService.REMINDER_MODE), Integer.valueOf(765)); - } - - /** - * Test alarm generation - */ - public void testAlarmGeneration() { - ReminderService service = new ReminderService(getContext()); - int now = DateUtilities.now(); - - // test simple task with deadline - Task task = new Task(); - task.setValue(Task.TITLE, "blah"); - task.setValue(Task.DUE_DATE, now + 10000); - task.setValue(ReminderService.REMINDER_MODE, Constants.REMINDER_AT_DEADLINE); - Alarm alarm = service.createReminderAlarm(task); - assertEquals(task.getValue(Task.DUE_DATE), Integer.valueOf(alarm.alarmTime)); - - // test simple task no reminders - task.setValue(ReminderService.REMINDER_MODE, Constants.REMINDER_NONE); - alarm = service.createReminderAlarm(task); - assertNull(alarm); - - // test simple task with deadline passed and no overdue interval - task.setValue(Task.DUE_DATE, now - 10); - task.setValue(ReminderService.REMINDER_MODE, Constants.REMINDER_AT_DEADLINE); - alarm = service.createReminderAlarm(task); - assertNull(alarm); - - // test alarm clock task - task.setValue(Task.DUE_DATE, now + 10000); - task.setValue(ReminderService.REMINDER_MODE, Constants.REMINDER_ALARM_CLOCK); - alarm = service.createReminderAlarm(task); - assertEquals(task.getValue(Task.DUE_DATE), Integer.valueOf(alarm.alarmTime)); - - // test overdue alarm clock task - task.setValue(Task.DUE_DATE, now - 10); - alarm = service.createReminderAlarm(task); - assertNull(alarm); - - // test increasing 30 days from now - task.setValue(ReminderService.REMINDER_MODE, Constants.REMINDER_INCREASING); - task.setValue(ReminderService.LAST_NOTIFIED, now); - task.setValue(Task.DUE_DATE, now + 30 * 86400); - alarm = service.createReminderAlarm(task); - assertTrue(alarm.alarmTime > now + 5 * 86400 && - alarm.alarmTime < now + 25 * 86400); - - // test increasing 30 days from now, with last notified of 100 days ago - task.setValue(ReminderService.REMINDER_MODE, Constants.REMINDER_INCREASING); - task.setValue(Task.DUE_DATE, now + 30 * 86400); - task.setValue(ReminderService.LAST_NOTIFIED, now - 100 * 86400); - alarm = service.createReminderAlarm(task); - assertTrue(alarm.alarmTime > 0 && - alarm.alarmTime < now + 1 * 86400); - - // test increasing when we're within the day boundary and task is - // not defined with a specific time - task.setValue(Task.URGENCY, Task.URGENCY_THIS_WEEK); - task.setValue(Task.DUE_DATE, now + 80000); - task.setValue(ReminderService.LAST_NOTIFIED, now); - alarm = service.createReminderAlarm(task); - assertTrue(alarm.intent.getBooleanExtra(AlarmReceiver.TOKEN_IS_DEADLINE, false)); - assertEquals(task.getValue(Task.DUE_DATE), Integer.valueOf(alarm.alarmTime)); - - // now same due date, but we've defined specific time - task.setValue(Task.URGENCY, Task.URGENCY_SPECIFIC_DAY_TIME); - alarm = service.createReminderAlarm(task); - assertTrue(DateUtilities.now() < alarm.alarmTime && - alarm.alarmTime < task.getValue(Task.DUE_DATE)); - - // move the due date right up against actual - task.setValue(Task.DUE_DATE, now + 1000); - alarm = service.createReminderAlarm(task); - assertEquals(task.getValue(Task.DUE_DATE), Integer.valueOf(alarm.alarmTime)); - assertTrue(alarm.intent.getBooleanExtra(AlarmReceiver.TOKEN_IS_DEADLINE, false)); - - // and after due date - task.setValue(Task.DUE_DATE, now - 80000); - alarm = service.createReminderAlarm(task); - assertNull(alarm); - } - - /** - * Test alarm generation (overdue) - */ - public void testOverdueAlarmGeneration() { - ReminderService service = new ReminderService(getContext()); - int now = DateUtilities.now(); - - // test simple overdue - Task task = new Task(); - task.setValue(Task.TITLE, "blah"); - - task.setValue(Task.DUE_DATE, now - 100); - task.setValue(ReminderService.OVERDUE_INTERVAL, 1000); - Alarm alarm = service.createOverdueAlarm(task); - assertTrue(now + 500 < alarm.alarmTime && alarm.alarmTime < now + 1500); - - // same case, but almost exact due as normal - task.setValue(Task.DUE_DATE, DateUtilities.now()); - alarm = service.createOverdueAlarm(task); - assertTrue(now + 500 < alarm.alarmTime && alarm.alarmTime < now + 1500); - } - -} diff --git a/tests/plugin-src/com/todoroo/astrid/rmilk/RTMTestCase.java b/tests/plugin-src/com/todoroo/astrid/rmilk/RTMTestCase.java deleted file mode 100644 index abaea3b9f..000000000 --- a/tests/plugin-src/com/todoroo/astrid/rmilk/RTMTestCase.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.todoroo.astrid.rmilk; - -public class RTMTestCase { - String token = "cb4281f7154114ed0e4ccc3a02d373c5a2429532"; -} diff --git a/tests/src/com/todoroo/astrid/dao/BasicDatabaseTests.java b/tests/src/com/todoroo/astrid/dao/BasicDatabaseTests.java index 9beeaf5a1..b737b6ea4 100644 --- a/tests/src/com/todoroo/astrid/dao/BasicDatabaseTests.java +++ b/tests/src/com/todoroo/astrid/dao/BasicDatabaseTests.java @@ -1,9 +1,9 @@ package com.todoroo.astrid.dao; -import com.todoroo.astrid.test.DatabaseTestCase; - import android.database.sqlite.SQLiteDatabase; +import com.todoroo.astrid.test.DatabaseTestCase; + public class BasicDatabaseTests extends DatabaseTestCase { @@ -12,19 +12,19 @@ public class BasicDatabaseTests extends DatabaseTestCase { */ public void testOpenMultipleTimes() { SQLiteDatabase sqlDatabase = database.getDatabase(); - database.openForReading(getContext()); + database.openForReading(); assertEquals(sqlDatabase, database.getDatabase()); - database.openForWriting(getContext()); + database.openForWriting(); assertEquals(sqlDatabase, database.getDatabase()); - database.openForReading(getContext()); + database.openForReading(); assertEquals(sqlDatabase, database.getDatabase()); } - + public void testCloseAndReopen() { SQLiteDatabase sqlDatabase = database.getDatabase(); database.close(); - database.openForReading(getContext()); + database.openForReading(); assertNotSame(sqlDatabase, database.getDatabase()); } } diff --git a/tests/src/com/todoroo/astrid/dao/MetadataDaoTests.java b/tests/src/com/todoroo/astrid/dao/MetadataDaoTests.java index f8c7ae559..75f011f5f 100644 --- a/tests/src/com/todoroo/astrid/dao/MetadataDaoTests.java +++ b/tests/src/com/todoroo/astrid/dao/MetadataDaoTests.java @@ -1,9 +1,10 @@ package com.todoroo.astrid.dao; +import com.thoughtworks.sql.Query; +import com.todoroo.andlib.data.Property; +import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.service.Autowired; -import com.todoroo.andlib.test.data.Property; -import com.todoroo.andlib.test.data.TodorooCursor; -import com.todoroo.astrid.dao.MetadataDao.MetadataSql; +import com.todoroo.astrid.dao.MetadataDao.MetadataCriteria; import com.todoroo.astrid.model.Metadata; import com.todoroo.astrid.model.Task; import com.todoroo.astrid.service.MetadataService; @@ -24,8 +25,8 @@ public class MetadataDaoTests extends DatabaseTestCase { * Test basic creation, fetch, and save */ public void testCrud() throws Exception { - TodorooCursor cursor = metadataDao.fetch(database, - MetadataService.idProperty(), null, null); + TodorooCursor cursor = metadataDao.query(database, + Query.select(MetadataService.idProperty())); assertEquals(0, cursor.getCount()); cursor.close(); @@ -33,7 +34,8 @@ public class MetadataDaoTests extends DatabaseTestCase { Metadata metadata = new Metadata(); metadata.setValue(Metadata.KEY, "happy"); assertTrue(metadataDao.save(database, metadata)); - cursor = metadataDao.fetch(database, MetadataService.idProperty(), null, null); + cursor = metadataDao.query(database, + Query.select(MetadataService.idProperty())); assertEquals(1, cursor.getCount()); cursor.close(); long happyId = metadata.getId(); @@ -45,7 +47,7 @@ public class MetadataDaoTests extends DatabaseTestCase { metadata = new Metadata(); metadata.setValue(Metadata.KEY, "sad"); assertTrue(metadataDao.save(database, metadata)); - cursor = metadataDao.fetch(database, MetadataService.idProperty(), null, null); + cursor = metadataDao.query(database, Query.select(MetadataService.idProperty())); assertEquals(2, cursor.getCount()); cursor.close(); @@ -54,7 +56,8 @@ public class MetadataDaoTests extends DatabaseTestCase { assertNotSame(Metadata.NO_ID, sadId); metadata.setValue(Metadata.KEY, "melancholy"); assertTrue(metadataDao.save(database, metadata)); - cursor = metadataDao.fetch(database, MetadataService.idProperty(), null, null); + cursor = metadataDao.query(database, + Query.select(MetadataService.idProperty())); assertEquals(2, cursor.getCount()); cursor.close(); @@ -66,7 +69,8 @@ public class MetadataDaoTests extends DatabaseTestCase { // delete sad assertTrue(metadataDao.delete(database, sadId)); - cursor = metadataDao.fetch(database, KEYS, null, null); + cursor = metadataDao.query(database, + Query.select(KEYS)); assertEquals(1, cursor.getCount()); cursor.moveToFirst(); metadata.readFromCursor(cursor, KEYS); @@ -95,8 +99,8 @@ public class MetadataDaoTests extends DatabaseTestCase { assertTrue(metadataDao.save(database, metadata)); - TodorooCursor cursor = metadataDao.fetch(database, - KEYS, MetadataSql.byTask(1), null); + TodorooCursor cursor = metadataDao.query(database, + Query.select(KEYS).where(MetadataCriteria.byTask(1))); assertEquals(2, cursor.getCount()); cursor.moveToFirst(); metadata.readFromCursor(cursor, KEYS); @@ -106,15 +110,15 @@ public class MetadataDaoTests extends DatabaseTestCase { assertEquals("with1", metadata.getValue(Metadata.KEY)); cursor.close(); - cursor = metadataDao.fetch(database, - MetadataService.idProperty(), MetadataSql.byTask(3), null); + cursor = metadataDao.query(database, + Query.select(KEYS).where(MetadataCriteria.byTask(3))); assertEquals(0, cursor.getCount()); cursor.close(); - int deleted = metadataDao.deleteWhere(database, MetadataSql.byTask(1)); + int deleted = metadataDao.deleteWhere(database, MetadataCriteria.byTask(1)); assertEquals(2, deleted); - cursor = metadataDao.fetch(database, - MetadataService.idProperty(), null, null); + cursor = metadataDao.query(database, + Query.select(KEYS)); assertEquals(1, cursor.getCount()); cursor.close(); } diff --git a/tests/src/com/todoroo/astrid/dao/TaskDaoTests.java b/tests/src/com/todoroo/astrid/dao/TaskDaoTests.java index f10d45f56..2f8322268 100644 --- a/tests/src/com/todoroo/astrid/dao/TaskDaoTests.java +++ b/tests/src/com/todoroo/astrid/dao/TaskDaoTests.java @@ -1,10 +1,12 @@ package com.todoroo.astrid.dao; +import com.thoughtworks.sql.Order; +import com.thoughtworks.sql.Query; +import com.todoroo.andlib.data.Property; +import com.todoroo.andlib.data.TodorooCursor; import com.todoroo.andlib.service.Autowired; -import com.todoroo.andlib.test.data.Property; -import com.todoroo.andlib.test.data.TodorooCursor; -import com.todoroo.andlib.test.utility.DateUtilities; -import com.todoroo.astrid.dao.TaskDao.TaskSql; +import com.todoroo.andlib.utility.DateUtilities; +import com.todoroo.astrid.dao.TaskDao.TaskCriteria; import com.todoroo.astrid.model.Task; import com.todoroo.astrid.test.DatabaseTestCase; @@ -22,8 +24,8 @@ public class TaskDaoTests extends DatabaseTestCase { * Test basic task creation, fetch, and save */ public void testTaskCreation() throws Exception { - TodorooCursor cursor = taskDao.fetch(database, - IDS, null, null, null); + TodorooCursor cursor = taskDao.query(database, + Query.select(IDS)); assertEquals(0, cursor.getCount()); cursor.close(); @@ -31,7 +33,8 @@ public class TaskDaoTests extends DatabaseTestCase { Task task = new Task(); task.setValue(Task.TITLE, "happy"); assertTrue(taskDao.save(database, task, false)); - cursor = taskDao.fetch(database, IDS, null, null, null); + cursor = taskDao.query(database, + Query.select(IDS)); assertEquals(1, cursor.getCount()); cursor.close(); long happyId = task.getId(); @@ -43,7 +46,8 @@ public class TaskDaoTests extends DatabaseTestCase { task = new Task(); task.setValue(Task.TITLE, "sad"); assertTrue(taskDao.save(database, task, false)); - cursor = taskDao.fetch(database, IDS, null, null, null); + cursor = taskDao.query(database, + Query.select(IDS)); assertEquals(2, cursor.getCount()); cursor.close(); @@ -52,7 +56,8 @@ public class TaskDaoTests extends DatabaseTestCase { assertNotSame(Task.NO_ID, sadId); task.setValue(Task.TITLE, "melancholy"); assertTrue(taskDao.save(database, task, false)); - cursor = taskDao.fetch(database, IDS, null, null, null); + cursor = taskDao.query(database, + Query.select(IDS)); assertEquals(2, cursor.getCount()); cursor.close(); @@ -71,7 +76,7 @@ public class TaskDaoTests extends DatabaseTestCase { Task task = new Task(); task.setValue(Task.TITLE, "normal"); assertTrue(taskDao.save(database, task, false)); - + // create blank task task = new Task(); task.setValue(Task.TITLE, ""); @@ -88,7 +93,7 @@ public class TaskDaoTests extends DatabaseTestCase { task.setValue(Task.TITLE, "deadlineInFuture"); task.setValue(Task.DUE_DATE, DateUtilities.now() + 10000); assertTrue(taskDao.save(database, task, false)); - + task = new Task(); task.setValue(Task.TITLE, "deadlineInPast"); task.setValue(Task.DUE_DATE, DateUtilities.now() - 10000); @@ -101,16 +106,16 @@ public class TaskDaoTests extends DatabaseTestCase { assertTrue(taskDao.save(database, task, false)); // check has no name - TodorooCursor cursor = taskDao.fetch(database, - TITLES, TaskSql.hasNoName(), null, null); + TodorooCursor cursor = taskDao.query(database, + Query.select(TITLES).where(TaskCriteria.hasNoTitle())); assertEquals(1, cursor.getCount()); cursor.moveToNext(); assertEquals("", cursor.getString(1)); cursor.close(); // check has deadlines - cursor = taskDao.fetch(database, TITLES, TaskSql - .hasDeadlines(), Task.DUE_DATE + " ASC", null); + cursor = taskDao.query(database, Query.select(TITLES).where( + TaskCriteria.hasDeadlines()).orderBy(Order.asc(Task.DUE_DATE))); assertEquals(2, cursor.getCount()); cursor.moveToNext(); assertEquals("deadlineInPast", cursor.getString(1)); @@ -119,31 +124,31 @@ public class TaskDaoTests extends DatabaseTestCase { cursor.close(); // check is active - cursor = taskDao.fetch(database, TITLES, TaskSql - .isActive(), null, null); + cursor = taskDao.query(database, Query.select(TITLES).where(TaskCriteria. + isActive())); assertEquals(5, cursor.getCount()); cursor.close(); // check due before / after - cursor = taskDao.fetch(database, TITLES, TaskSql - .dueBefore(DateUtilities.now()), null, null); + cursor = taskDao.query(database, Query.select(TITLES).where(TaskCriteria. + dueBefore(DateUtilities.now()))); cursor.moveToNext(); assertEquals(1, cursor.getCount()); cursor.close(); - cursor = taskDao.fetch(database, TITLES, TaskSql - .dueAfter(DateUtilities.now()), null, null); + cursor = taskDao.query(database, Query.select(TITLES).where(TaskCriteria. + dueAfter(DateUtilities.now()))); assertEquals(1, cursor.getCount()); cursor.close(); - + // check completed before - cursor = taskDao.fetch(database, TITLES, TaskSql - .completedBefore(DateUtilities.now()), null, null); + cursor = taskDao.query(database, Query.select(TITLES).where(TaskCriteria. + completedBefore(DateUtilities.now()))); assertEquals(1, cursor.getCount()); cursor.close(); - + // check is visible - cursor = taskDao.fetch(database, TITLES, TaskSql - .isVisible(DateUtilities.now()), null, null); + cursor = taskDao.query(database, Query.select(TITLES).where(TaskCriteria. + isVisible(DateUtilities.now()))); assertEquals(5, cursor.getCount()); cursor.close(); } @@ -152,8 +157,8 @@ public class TaskDaoTests extends DatabaseTestCase { * Test task deletion */ public void testTDeletion() throws Exception { - TodorooCursor cursor = taskDao.fetch(database, - IDS, null, null, null); + TodorooCursor cursor = taskDao.query(database, + Query.select(IDS)); assertEquals(0, cursor.getCount()); cursor.close(); @@ -161,14 +166,16 @@ public class TaskDaoTests extends DatabaseTestCase { Task task = new Task(); task.setValue(Task.TITLE, "happy"); assertTrue(taskDao.save(database, task, false)); - cursor = taskDao.fetch(database, IDS, null, null, null); + cursor = taskDao.query(database, + Query.select(IDS)); assertEquals(1, cursor.getCount()); cursor.close(); // delete long happyId = task.getId(); assertTrue(taskDao.delete(database, happyId)); - cursor = taskDao.fetch(database, IDS, null, null, null); + cursor = taskDao.query(database, + Query.select(IDS)); assertEquals(0, cursor.getCount()); cursor.close(); } @@ -186,7 +193,8 @@ public class TaskDaoTests extends DatabaseTestCase { assertFalse(taskDao.save(database, task, false)); - cursor = taskDao.fetch(database, IDS, null, null, null); + cursor = taskDao.query(database, + Query.select(IDS)); assertEquals(0, cursor.getCount()); cursor.close(); } @@ -197,7 +205,8 @@ public class TaskDaoTests extends DatabaseTestCase { public void testInvalidIndex() throws Exception { TodorooCursor cursor; - cursor = taskDao.fetch(database, IDS, null, null, null); + cursor = taskDao.query(database, + Query.select(IDS)); assertEquals(0, cursor.getCount()); cursor.close(); @@ -206,11 +215,12 @@ public class TaskDaoTests extends DatabaseTestCase { assertFalse(taskDao.delete(database, 1)); // make sure db still works - cursor = taskDao.fetch(database, IDS, null, null, null); + cursor = taskDao.query(database, + Query.select(IDS)); assertEquals(0, cursor.getCount()); cursor.close(); } - + // TODO check eventing } diff --git a/tests/src/com/todoroo/astrid/model/TaskTests.java b/tests/src/com/todoroo/astrid/model/TaskTests.java index b053b01ce..0686ee4ad 100644 --- a/tests/src/com/todoroo/astrid/model/TaskTests.java +++ b/tests/src/com/todoroo/astrid/model/TaskTests.java @@ -1,13 +1,12 @@ package com.todoroo.astrid.model; import java.util.ArrayList; -import java.util.HashSet; import java.util.TreeSet; import android.content.ContentValues; import com.todoroo.andlib.service.Autowired; -import com.todoroo.andlib.test.utility.DateUtilities; +import com.todoroo.andlib.utility.DateUtilities; import com.todoroo.astrid.service.TaskService; import com.todoroo.astrid.test.DatabaseTestCase; import com.todoroo.astrid.utility.Preferences; @@ -76,42 +75,6 @@ public class TaskTests extends DatabaseTestCase { assertFalse(task.hasDueDate()); task.setValue(Task.DUE_DATE, DateUtilities.now() + 1000); assertTrue(task.hasDueDate()); - - int[] colors = Task.getImportanceColors(getContext()); - assertEquals(Math.abs(Task.IMPORTANCE_NONE - Task.IMPORTANCE_DO_OR_DIE + 1), - colors.length); - HashSet set = new HashSet(); - for(int i = 0; i < colors.length; i++) { - assertFalse(set.contains(colors[i])); - set.add(colors[i]); - } } - public void checkDueDateInitialization() { - assertEquals(0, Task.initializeDueDate(Task.URGENCY_NONE)); - - int date = Task.initializeDueDate(Task.URGENCY_THIS_MONTH); - assertTrue(date > DateUtilities.now() + 27 * 24 * 3600); - assertTrue(date < DateUtilities.now() + 32 * 24 * 3600); - - date = Task.initializeDueDate(Task.URGENCY_THIS_WEEK); - assertTrue(date > DateUtilities.now() + 6 * 24 * 3600); - assertTrue(date < DateUtilities.now() + 8 * 24 * 3600); - - date = Task.initializeDueDate(Task.URGENCY_TODAY); - assertTrue(date > DateUtilities.now() - 60); - assertTrue(date < DateUtilities.now() + 24 * 3600); - - date = Task.initializeDueDate(Task.URGENCY_WITHIN_THREE_MONTHS); - assertTrue(date > DateUtilities.now() + 85 * 24 * 3600); - assertTrue(date < DateUtilities.now() + 95 * 24 * 3600); - - date = Task.initializeDueDate(Task.URGENCY_WITHIN_SIX_MONTHS); - assertTrue(date > DateUtilities.now() + 180 * 24 * 3600); - assertTrue(date < DateUtilities.now() + 185 * 24 * 3600); - - date = Task.initializeDueDate(Task.URGENCY_WITHIN_A_YEAR); - assertTrue(date > DateUtilities.now() + 364 * 24 * 3600); - assertTrue(date < DateUtilities.now() + 367 * 24 * 3600); - } } diff --git a/tests/src/com/todoroo/astrid/service/TaskServiceTests.java b/tests/src/com/todoroo/astrid/service/TaskServiceTests.java deleted file mode 100644 index 31f587571..000000000 --- a/tests/src/com/todoroo/astrid/service/TaskServiceTests.java +++ /dev/null @@ -1,139 +0,0 @@ -package com.todoroo.astrid.service; -import com.todoroo.andlib.service.Autowired; -import com.todoroo.andlib.test.data.TodorooCursor; -import com.todoroo.andlib.test.utility.DateUtilities; -import com.todoroo.astrid.api.Filter; -import com.todoroo.astrid.dao.Database; -import com.todoroo.astrid.dao.TaskDao; -import com.todoroo.astrid.model.Task; -import com.todoroo.astrid.test.DatabaseTestCase; - - -public class TaskServiceTests extends DatabaseTestCase { - - @Autowired - TaskService taskService; - - @Autowired - TaskDao taskDao; - - /** - * Since a lot of the service-layer methods call through to the dao, - * we don't need to do a lot of extensive testing here, just various - * boundary conditions. - */ - public void testTaskDaoExposedMethods() { - Task task = new Task(); - task.setValue(Task.TITLE, "normal"); - assertTrue(taskService.save(task, false)); - - // empty fetch w/ filter - Filter filter = new Filter("bla", "bla", "WHERE 1", null); - TodorooCursor cursor = - taskService.fetchFiltered(TaskService.idProperties(), filter); - assertEquals(1, cursor.getCount()); - cursor.close(); - - filter.sqlQuery = "WHERE " + Task.TITLE + " = \"bob\""; - cursor = taskService.fetchFiltered(TaskService.idProperties(), filter); - assertEquals(0, cursor.getCount()); - cursor.close(); - - Task fetched = taskService.fetchById(TaskService.idProperties(), task.getId()); - assertNotNull(fetched); - fetched = taskService.fetchById(TaskService.idProperties(), task.getId() + 1); - assertNull(fetched); - - taskService.setComplete(task, true); - assertTrue(task.isCompleted()); - - fetched = taskService.fetchById(Task.PROPERTIES, task.getId()); - assertTrue(fetched.isCompleted()); - taskService.setComplete(task, false); - fetched = taskService.fetchById(Task.PROPERTIES, task.getId()); - assertFalse(fetched.isCompleted()); - assertFalse(task.isCompleted()); - - long id = task.getId(); - taskService.delete(id); - fetched = taskService.fetchById(Task.PROPERTIES, id); - assertNull(fetched); - } - - /** - * Test cleanup - */ - public void testCleanup() throws Exception { - TodorooCursor cursor; - - // save task with a name - Task task1 = new Task(); - task1.setValue(Task.TITLE, "normal"); - assertTrue(taskService.save(task1, false)); - - // save task without a name - Task task2 = new Task(); - task2.setValue(Task.TITLE, ""); - task2.setValue(Task.HIDDEN_UNTIL, DateUtilities.now() + 10000); - assertTrue(taskService.save(task2, false)); - - // save task #2 without a name - Task task3 = new Task(); - task3.setValue(Task.TITLE, ""); - task3.setValue(Task.DUE_DATE, DateUtilities.now() + 10000); - assertTrue(taskService.save(task3, false)); - - cursor = taskDao.fetch(database, Task.PROPERTIES, null, null); - assertEquals(3, cursor.getCount()); - cursor.close(); - - taskService.cleanup(); - - cursor = taskDao.fetch(database, Task.PROPERTIES, null, null); - assertEquals(1, cursor.getCount()); - cursor.close(); - } - - /** - * Test the sql invoked from a filter on new task creation - */ - public void testInvokeNewTaskSql() { - TodorooCursor cursor; - Filter filter = new Filter("bla", "bla", "WHERE 1", null); - - Task task = new Task(); - task.setValue(Task.TITLE, "evils"); - assertTrue(taskService.save(task, false)); - - cursor = taskDao.fetch(database, Task.PROPERTIES, null, null); - assertEquals(1, cursor.getCount()); - cursor.moveToNext(); - task = new Task(cursor, Task.PROPERTIES); - assertEquals("evils", task.getValue(Task.TITLE)); - cursor.close(); - - filter.sqlForNewTasks = String.format("UPDATE %s set %s = \"good\"", - Database.TASK_TABLE, Task.TITLE); - taskService.invokeSqlForNewTask(filter, task); - - cursor = taskDao.fetch(database, Task.PROPERTIES, null, null); - assertEquals(1, cursor.getCount()); - cursor.moveToNext(); - task = new Task(cursor, Task.PROPERTIES); - assertEquals("good", task.getValue(Task.TITLE)); - cursor.close(); - - filter.sqlForNewTasks = String.format("UPDATE %s set %s = \"yum\" WHERE %s = $ID", - Database.TASK_TABLE, Task.TITLE, Task.ID); - taskService.invokeSqlForNewTask(filter, task); - - cursor = taskDao.fetch(database, Task.PROPERTIES, null, null); - assertEquals(1, cursor.getCount()); - cursor.moveToNext(); - task = new Task(cursor, Task.PROPERTIES); - assertEquals("yum", task.getValue(Task.TITLE)); - cursor.close(); - } - - -} diff --git a/tests/src/com/todoroo/astrid/test/AstridActivityTestCase.java b/tests/src/com/todoroo/astrid/test/AstridActivityTestCase.java deleted file mode 100644 index b44a96a34..000000000 --- a/tests/src/com/todoroo/astrid/test/AstridActivityTestCase.java +++ /dev/null @@ -1,96 +0,0 @@ -package com.todoroo.astrid.test; - -import android.app.Activity; -import android.content.pm.ActivityInfo; -import android.test.ActivityInstrumentationTestCase2; -import android.view.MotionEvent; - -import com.todoroo.andlib.service.Autowired; -import com.todoroo.andlib.service.DependencyInjectionService; -import com.todoroo.andlib.service.TestDependencyInjector; -import com.todoroo.astrid.dao.Database; -import com.todoroo.astrid.service.AstridDependencyInjector; -import com.todoroo.astrid.test.DatabaseTestCase.AstridTestDatabase; - -/** - * ActivityTestCase is a helper for testing Todoroo Activities. - *

- * It initializes a test database before the activity is created. - * - * @author Tim Su - * - * @param - */ -public class AstridActivityTestCase extends ActivityInstrumentationTestCase2 { - - @Autowired - public Database database; - - static { - AstridDependencyInjector.initialize(); - TestDependencyInjector.initialize("db").addInjectable("database", - new AstridTestDatabase()); - } - - public AstridActivityTestCase(String packageName, Class activityClass) { - super(packageName, activityClass); - DependencyInjectionService.getInstance().inject(this); - } - - @Override - protected void setUp() throws Exception { - super.setUp(); - - // create new test database - AstridTestDatabase.dropTables(getInstrumentation().getTargetContext()); - database.openForWriting(); - } - - @Override - protected void tearDown() throws Exception { - super.tearDown(); - - if(database != null) - database.close(); - } - - /** - * Call to just tear this activity down - */ - protected void tearActivityDown() throws Exception { - super.tearDown(); - } - - /** - * Call to just set this activity up - */ - protected void setActivityUp() throws Exception { - super.setUp(); - } - - /** Calls various lifecycle methods, makes sure all of them work */ - public void testLifecycle() throws Exception { - T activity = getActivity(); - getInstrumentation().callActivityOnPause(activity); - Thread.sleep(500); - getInstrumentation().callActivityOnResume(activity); - - getInstrumentation().sendPointerSync(MotionEvent.obtain(500, 500, MotionEvent.ACTION_DOWN, 10, 30, 0)); - - getInstrumentation().callActivityOnPause(activity); - getInstrumentation().callActivityOnStop(activity); - Thread.sleep(500); - getInstrumentation().callActivityOnRestart(activity); - getInstrumentation().callActivityOnStart(activity); - getInstrumentation().callActivityOnResume(activity); - - getInstrumentation().sendPointerSync(MotionEvent.obtain(500, 500, MotionEvent.ACTION_DOWN, 10, 30, 0)); - - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); - Thread.sleep(500); - activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); - Thread.sleep(1000); - } - - -} diff --git a/tests/src/com/todoroo/astrid/test/DatabaseTestCase.java b/tests/src/com/todoroo/astrid/test/DatabaseTestCase.java index 6423d53ae..8c87a0ae2 100644 --- a/tests/src/com/todoroo/astrid/test/DatabaseTestCase.java +++ b/tests/src/com/todoroo/astrid/test/DatabaseTestCase.java @@ -1,13 +1,8 @@ package com.todoroo.astrid.test; -import android.content.Context; -import android.database.sqlite.SQLiteOpenHelper; - import com.todoroo.andlib.service.Autowired; -import com.todoroo.andlib.service.TestDependencyInjector; import com.todoroo.andlib.test.TodorooTestCase; import com.todoroo.astrid.dao.Database; -import com.todoroo.astrid.dao.Database.AstridSQLiteOpenHelper; import com.todoroo.astrid.service.AstridDependencyInjector; /** @@ -23,14 +18,12 @@ public class DatabaseTestCase extends TodorooTestCase { static { AstridDependencyInjector.initialize(); - TestDependencyInjector.initialize("db").addInjectable("database", - new AstridTestDatabase()); } @Override protected void setUp() throws Exception { // create new test database - AstridTestDatabase.dropTables(getContext()); + database.clear(); database.openForWriting(); super.setUp(); @@ -40,31 +33,4 @@ public class DatabaseTestCase extends TodorooTestCase { protected void tearDown() throws Exception { database.close(); } - - public static class AstridTestDatabase extends Database { - - private static final String NAME = "todoroo-test"; - - @Override - public synchronized void openForWriting() { - if(helper == null) - helper = new AstridSQLiteOpenHelper(context, NAME, null, VERSION); - super.openForWriting(); - } - - @Override - public synchronized void openForReading() { - if(helper == null) - helper = new AstridSQLiteOpenHelper(context, NAME, null, VERSION); - super.openForWriting(); - } - - public static void dropTables(Context context) { - // force drop database - SQLiteOpenHelper helper = new AstridSQLiteOpenHelper(context, NAME, null, VERSION); - helper.onUpgrade(helper.getWritableDatabase(), - 0, VERSION); - helper.close(); - } - } }