gtasks: passing almost every gtasks unit test

pull/14/head
Tim Su 15 years ago
parent 88f4c2a622
commit 7e8c2321ce

@ -35,7 +35,7 @@ public class GtasksDecorationExposer implements TaskDecorationExposer {
if(!gtasksPreferenceService.isLoggedIn()) if(!gtasksPreferenceService.isLoggedIn())
return null; return null;
if(Flags.check(Flags.GTASKS)) if(!Flags.check(Flags.GTASKS))
return null; return null;
return createDecoration(task); return createDecoration(task);

@ -16,7 +16,6 @@ import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.ContextManager;
import com.todoroo.andlib.service.DependencyInjectionService; import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.sql.Criterion; import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Functions;
import com.todoroo.andlib.sql.Join; import com.todoroo.andlib.sql.Join;
import com.todoroo.andlib.sql.Order; import com.todoroo.andlib.sql.Order;
import com.todoroo.andlib.sql.QueryTemplate; import com.todoroo.andlib.sql.QueryTemplate;
@ -26,9 +25,9 @@ import com.todoroo.astrid.api.FilterCategory;
import com.todoroo.astrid.api.FilterListHeader; import com.todoroo.astrid.api.FilterListHeader;
import com.todoroo.astrid.api.FilterListItem; import com.todoroo.astrid.api.FilterListItem;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.data.MetadataApiDao.MetadataCriteria;
import com.todoroo.astrid.data.StoreObject; import com.todoroo.astrid.data.StoreObject;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.MetadataApiDao.MetadataCriteria;
import com.todoroo.astrid.data.TaskApiDao.TaskCriteria; import com.todoroo.astrid.data.TaskApiDao.TaskCriteria;
/** /**
@ -54,9 +53,7 @@ public class GtasksFilterExposer extends BroadcastReceiver {
Join.left(Metadata.TABLE, Task.ID.eq(Metadata.TASK))).where(Criterion.and( Join.left(Metadata.TABLE, Task.ID.eq(Metadata.TASK))).where(Criterion.and(
MetadataCriteria.withKey(GtasksMetadata.METADATA_KEY), MetadataCriteria.withKey(GtasksMetadata.METADATA_KEY),
TaskCriteria.activeAndVisible(), TaskCriteria.activeAndVisible(),
GtasksMetadata.LIST_ID.eq(list.getValue(GtasksList.REMOTE_ID)))).orderBy( GtasksMetadata.LIST_ID.eq(list.getValue(GtasksList.REMOTE_ID)))).orderBy(Order.asc(GtasksMetadata.ORDER)),
Order.asc(Functions.caseStatement(GtasksMetadata.ORDER.eq(0),
Task.CREATION_DATE, GtasksMetadata.ORDER))),
values); values);
return filter; return filter;

@ -4,6 +4,7 @@ import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.Property.IntegerProperty; import com.todoroo.andlib.data.Property.IntegerProperty;
import com.todoroo.andlib.data.Property.LongProperty; import com.todoroo.andlib.data.Property.LongProperty;
import com.todoroo.andlib.data.Property.StringProperty; import com.todoroo.andlib.data.Property.StringProperty;
import com.todoroo.andlib.utility.DateUtilities;
import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Metadata;
import com.todoroo.astrid.utility.Preferences; import com.todoroo.astrid.utility.Preferences;
@ -14,7 +15,7 @@ import com.todoroo.astrid.utility.Preferences;
*/ */
public class GtasksMetadata { public class GtasksMetadata {
private static final int VALUE_UNSET = -1; static final int VALUE_UNSET = -1;
/** metadata key */ /** metadata key */
public static final String METADATA_KEY = "gtasks"; //$NON-NLS-1$ public static final String METADATA_KEY = "gtasks"; //$NON-NLS-1$
@ -53,7 +54,7 @@ public class GtasksMetadata {
metadata.setValue(LIST_ID, defaultList); metadata.setValue(LIST_ID, defaultList);
metadata.setValue(PARENT_TASK, (long)VALUE_UNSET); metadata.setValue(PARENT_TASK, (long)VALUE_UNSET);
metadata.setValue(INDENT, 0); metadata.setValue(INDENT, 0);
metadata.setValue(ORDER, VALUE_UNSET); metadata.setValue(ORDER, (int)(DateUtilities.now() / 1000L));
if(taskId > AbstractModel.NO_ID) if(taskId > AbstractModel.NO_ID)
metadata.setValue(Metadata.TASK, taskId); metadata.setValue(Metadata.TASK, taskId);
return metadata; return metadata;

@ -99,7 +99,7 @@ public class GtasksTaskListUpdater {
int indent = metadata.getValue(GtasksMetadata.INDENT); int indent = metadata.getValue(GtasksMetadata.INDENT);
final long parent, sibling; long parent, sibling;
if(indent > previousIndent.get()) { if(indent > previousIndent.get()) {
parent = previousTask.get(); parent = previousTask.get();
sibling = -1L; sibling = -1L;
@ -107,7 +107,10 @@ public class GtasksTaskListUpdater {
sibling = previousTask.get(); sibling = previousTask.get();
parent = parents.get(sibling); parent = parents.get(sibling);
} else { } else {
sibling = parents.get(previousTask.get()); // move up once for each indent
sibling = previousTask.get();
for(int i = indent; i < previousIndent.get(); i++)
sibling = parents.get(sibling);
parent = parents.get(sibling); parent = parents.get(sibling);
} }
parents.put(taskId, parent); parents.put(taskId, parent);

@ -30,7 +30,7 @@ public final class Constants {
/** /**
* Whether to turn on debugging logging and UI * Whether to turn on debugging logging and UI
*/ */
public static final boolean DEBUG = true; public static final boolean DEBUG = false;
/** /**
* Upgrade time * Upgrade time

@ -65,7 +65,7 @@ public class GtasksTaskListUpdaterTest extends DatabaseTestCase {
public void testNewTaskOrder() { public void testNewTaskOrder() {
givenTasksABCDE(); givenTasksABCDE();
Task newTask = createTask("F", -1, 0); Task newTask = createTask("F", GtasksMetadata.VALUE_UNSET, 0);
whenCalculatingOrder(); whenCalculatingOrder();
thenExpectMetadataIndentAndOrder(newTask, 5, 0); thenExpectMetadataIndentAndOrder(newTask, 5, 0);
@ -77,7 +77,7 @@ public class GtasksTaskListUpdaterTest extends DatabaseTestCase {
private void thenExpectMetadataIndentAndOrder(Task task, int order, int indent) { private void thenExpectMetadataIndentAndOrder(Task task, int order, int indent) {
Metadata metadata = gtasksMetadataService.getTaskMetadata(task.getId()); Metadata metadata = gtasksMetadataService.getTaskMetadata(task.getId());
assertNotNull("metadata was found", metadata); assertNotNull("metadata was found", metadata);
assertEquals("indentation", order, (int)metadata.getValue(GtasksMetadata.ORDER)); assertEquals("order", order, (int)metadata.getValue(GtasksMetadata.ORDER));
assertEquals("indentation", indent, (int)metadata.getValue(GtasksMetadata.INDENT)); assertEquals("indentation", indent, (int)metadata.getValue(GtasksMetadata.INDENT));
} }
@ -92,21 +92,21 @@ public class GtasksTaskListUpdaterTest extends DatabaseTestCase {
} }
private void thenExpectSibling(Task task, Task expectedSibling) { private void thenExpectSibling(Task task, Task expectedSibling) {
Long sibling = gtasksTaskListUpdater.siblings.get(task.getId()); long sibling = gtasksTaskListUpdater.siblings.get(task.getId());
if(expectedSibling == null) if(expectedSibling == null)
assertNull("Task " + task.getValue(Task.TITLE) + " sibling null", sibling); assertEquals("Task " + task.getValue(Task.TITLE) + " sibling null", -1L, sibling);
else else
assertEquals("Task " + task.getValue(Task.TITLE) + " sibling " + assertEquals("Task " + task.getValue(Task.TITLE) + " sibling " +
expectedSibling.getValue(Task.TITLE), (Long)expectedSibling.getId(), sibling); expectedSibling.getValue(Task.TITLE), expectedSibling.getId(), sibling);
} }
private void thenExpectParent(Task task, Task expectedParent) { private void thenExpectParent(Task task, Task expectedParent) {
Long parent = gtasksTaskListUpdater.parents.get(task.getId()); long parent = gtasksTaskListUpdater.parents.get(task.getId());
if(expectedParent == null) if(expectedParent == null)
assertNull("Task " + task.getValue(Task.TITLE) + " parent null", parent); assertEquals("Task " + task.getValue(Task.TITLE) + " parent null", -1L, parent);
else else
assertEquals("Task " + task.getValue(Task.TITLE) + " parent " + assertEquals("Task " + task.getValue(Task.TITLE) + " parent " +
expectedParent.getValue(Task.TITLE), Long.valueOf(expectedParent.getId()), parent); expectedParent.getValue(Task.TITLE), expectedParent.getId(), parent);
} }
@Override @Override
@ -153,8 +153,10 @@ public class GtasksTaskListUpdaterTest extends DatabaseTestCase {
PluginServices.getTaskService().save(task); PluginServices.getTaskService().save(task);
Metadata metadata = GtasksMetadata.createEmptyMetadata(task.getId()); Metadata metadata = GtasksMetadata.createEmptyMetadata(task.getId());
metadata.setValue(GtasksMetadata.LIST_ID, "1"); metadata.setValue(GtasksMetadata.LIST_ID, "1");
metadata.setValue(GtasksMetadata.ORDER, order); if(order != GtasksMetadata.VALUE_UNSET)
metadata.setValue(GtasksMetadata.INDENT, indent); metadata.setValue(GtasksMetadata.ORDER, order);
if(indent != GtasksMetadata.VALUE_UNSET)
metadata.setValue(GtasksMetadata.INDENT, indent);
PluginServices.getMetadataService().save(metadata); PluginServices.getMetadataService().save(metadata);
return task; return task;
} }

@ -0,0 +1,12 @@
package com.todoroo.astrid.provider;
import com.todoroo.andlib.data.AbstractDatabase;
import com.todoroo.astrid.test.DatabaseTestCase;
public class ProviderTestUtilities extends DatabaseTestCase {
public static final void setDatabaseOverride(AbstractDatabase database) {
Astrid3ContentProvider.setDatabaseOverride(database);
}
}

@ -5,6 +5,7 @@ import java.io.File;
import com.todoroo.andlib.test.TodorooTestCaseWithInjector; import com.todoroo.andlib.test.TodorooTestCaseWithInjector;
import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.legacy.AlarmDatabase; import com.todoroo.astrid.legacy.AlarmDatabase;
import com.todoroo.astrid.provider.ProviderTestUtilities;
import com.todoroo.astrid.service.AstridDependencyInjector; import com.todoroo.astrid.service.AstridDependencyInjector;
/** /**
@ -34,6 +35,8 @@ public class DatabaseTestCase extends TodorooTestCaseWithInjector {
// empty out test databases // empty out test databases
database.clear(); database.clear();
database.openForWriting(); database.openForWriting();
ProviderTestUtilities.setDatabaseOverride(database);
} }
/** /**

Loading…
Cancel
Save