From afaebcd9fc8aae98f22700cca378db3f45b5d03c Mon Sep 17 00:00:00 2001 From: Tim Su Date: Wed, 29 Sep 2010 11:10:32 -0700 Subject: [PATCH] Added gtasks metadata test --- .../gtasks/GtasksMetadataServiceTest.java | 152 ++++++++++++++++++ .../gtasks/GtasksTestPreferenceService.java | 9 ++ 2 files changed, 161 insertions(+) create mode 100644 tests/src/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java diff --git a/tests/src/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java b/tests/src/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java new file mode 100644 index 000000000..62dddfb6b --- /dev/null +++ b/tests/src/com/todoroo/astrid/gtasks/GtasksMetadataServiceTest.java @@ -0,0 +1,152 @@ +package com.todoroo.astrid.gtasks; + +import com.todoroo.andlib.data.TodorooCursor; +import com.todoroo.andlib.service.Autowired; +import com.todoroo.andlib.utility.DateUtilities; +import com.todoroo.astrid.core.PluginServices; +import com.todoroo.astrid.data.Metadata; +import com.todoroo.astrid.data.Task; +import com.todoroo.astrid.test.DatabaseTestCase; + +public class GtasksMetadataServiceTest extends DatabaseTestCase { + + private GtasksTestPreferenceService preferences = new GtasksTestPreferenceService(); + @Autowired private GtasksMetadataService gtasksMetadataService; + + private Task task; + private Metadata metadata; + private TodorooCursor cursor; + + public void testMetadataFound() { + givenTask(taskWithMetadata(null)); + + whenSearchForMetadata(); + + thenExpectMetadataFound(); + } + + public void testMetadataDoesntExist() { + givenTask(taskWithoutMetadata()); + + whenSearchForMetadata(); + + thenExpectNoMetadataFound(); + } + + public void testLocallyCreatedHasItem() { + taskWithMetadata("ok"); + givenTask(taskWithoutMetadata()); + + whenReadLocalCreated(); + + thenExpectCursorEquals(task); + } + + public void testLocallyCreatedWhenEmptyMetadata() { + givenTask(taskWithMetadata(null)); + + whenReadLocalCreated(); + + thenExpectCursorEquals(task); + } + + public void testLocallyCreatedIsEmpty() { + givenTask(taskWithMetadata("ok")); + + whenReadLocalCreated(); + + thenExpectCursorIsEmpty(); + } + + public void testLocallyUpdatedHasItem() { + givenTask(taskWithMetadata("ok")); + + whenReadLocalUpdated(); + + thenExpectCursorEquals(task); + } + + public void testLocallyUpdatedIsEmptyWhenUpToDate() { + givenTask(taskWithMetadata("ok")); + givenSyncDate(DateUtilities.now()); + + whenReadLocalUpdated(); + + thenExpectCursorIsEmpty(); + } + + public void testLocallyUpdatedIsEmptyWhenNoUpdatedTasks() { + givenTask(taskWithMetadata(null)); + + whenReadLocalUpdated(); + + thenExpectCursorIsEmpty(); + } + + // --- helpers + + private void givenSyncDate(long date) { + preferences.setSyncDate(date); + } + + private void whenReadLocalUpdated() { + cursor = gtasksMetadataService.getLocallyUpdated(Task.ID); + } + + private void thenExpectCursorIsEmpty() { + assertEquals("cursor is empty", 0, cursor.getCount()); + } + + private void thenExpectCursorEquals(Task expectedTask) { + assertEquals("cursor has one item", 1, cursor.getCount()); + cursor.moveToFirst(); + Task receivedTask = new Task(cursor); + assertEquals("task equals expected", expectedTask.getId(), receivedTask.getId()); + } + + private void whenReadLocalCreated() { + cursor = gtasksMetadataService.getLocallyCreated(Task.ID); + } + + private void thenExpectNoMetadataFound() { + assertNull(metadata); + } + + private void thenExpectMetadataFound() { + assertNotNull(metadata); + } + + private void whenSearchForMetadata() { + metadata = gtasksMetadataService.getTaskMetadata(task.getId()); + } + + private Task taskWithMetadata(String id) { + Task task = new Task(); + task.setValue(Task.TITLE, "cats"); + PluginServices.getTaskService().save(task); + Metadata metadata = GtasksMetadata.createEmptyMetadata(task.getId()); + if(id != null) + metadata.setValue(GtasksMetadata.ID, id); + metadata.setValue(Metadata.TASK, task.getId()); + PluginServices.getMetadataService().save(metadata); + return task; + } + + private void givenTask(Task taskToTest) { + task = taskToTest; + } + + private Task taskWithoutMetadata() { + Task task = new Task(); + task.setValue(Task.TITLE, "dogs"); + PluginServices.getTaskService().save(task); + return task; + } + + @Override + protected void addInjectables() { + super.addInjectables(); + testInjector.addInjectable("gtasksPreferenceService", preferences); + } + +} diff --git a/tests/src/com/todoroo/astrid/gtasks/GtasksTestPreferenceService.java b/tests/src/com/todoroo/astrid/gtasks/GtasksTestPreferenceService.java index 69f064e1d..4887aa3c8 100644 --- a/tests/src/com/todoroo/astrid/gtasks/GtasksTestPreferenceService.java +++ b/tests/src/com/todoroo/astrid/gtasks/GtasksTestPreferenceService.java @@ -3,6 +3,7 @@ package com.todoroo.astrid.gtasks; public class GtasksTestPreferenceService extends GtasksPreferenceService { private boolean loggedIn = false; + private long syncDate = 0; public void setLoggedIn(boolean loggedIn) { this.loggedIn = loggedIn; @@ -13,4 +14,12 @@ public class GtasksTestPreferenceService extends GtasksPreferenceService { return loggedIn; } + public void setSyncDate(long date) { + syncDate = date; + } + + @Override + public long getLastSyncDate() { + return syncDate; + } }