package com.todoroo.astrid.sync;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.sql.Criterion;
import com.todoroo.andlib.sql.Query;
import com.todoroo.astrid.data.RemoteModel;
import com.todoroo.astrid.data.SyncFlags;
import com.todoroo.astrid.data.TagData;
import com.todoroo.astrid.data.TagOutstanding;
import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.TaskOutstanding;
public class SyncModelTest extends NewSyncTestCase {
public void testCreateTaskMakesUuid() {
Task task = createTask();
assertFalse(RemoteModel.NO_UUID.equals(task.getValue(Task.UUID)));
}
public void testCreateTagMakesUuid() {
TagData tag = createTagData();
assertFalse(RemoteModel.NO_UUID.equals(tag.getValue(TagData.UUID)));
}
public void testChangeTaskMakesOutstandingEntries() {
Task task = createTask();
String newTitle = "changing task title";
task.setValue(Task.TITLE, newTitle);
taskDao.save(task);
TodorooCursor<TaskOutstanding> cursor = taskOutstandingDao.query(Query.select(TaskOutstanding.PROPERTIES)
.where(Criterion.and(TaskOutstanding.TASK_ID.eq(task.getId()),
TaskOutstanding.COLUMN_STRING.eq(Task.TITLE.name),
TaskOutstanding.VALUE_STRING.eq(newTitle))));
try {
assertTrue(cursor.getCount() > 0);
} finally {
cursor.close();
}
}
public void testUpdateMakesAllOutstandingEntries() {
String title = "Task Important";
createTask(title, true);
createTask("Task Not Important", true);
createTask(title, true);
Task template = new Task();
template.setValue(Task.IMPORTANCE, Task.IMPORTANCE_DO_OR_DIE);
taskDao.update(Task.TITLE.eq(title), template);
TodorooCursor<TaskOutstanding> cursor = taskOutstandingDao.query(Query.select(TaskOutstanding.PROPERTIES));
try {
assertEquals(2, cursor.getCount());
TaskOutstanding to = new TaskOutstanding();
for (cursor.moveToFirst(); !cursor.isAfterLast(); cursor.moveToNext()) {
to.readPropertiesFromCursor(cursor);
assertEquals(Task.IMPORTANCE.name, to.getValue(TaskOutstanding.COLUMN_STRING));
assertEquals(Task.IMPORTANCE_DO_OR_DIE, Integer.parseInt(to.getValue(TaskOutstanding.VALUE_STRING)));
}
} finally {
cursor.close();
}
}
public void testChangeTagMakesOutstandingEntries() {
TagData tag = createTagData();
String newName = "changing tag name";
tag.setValue(TagData.NAME, newName);
tagDataDao.saveExisting(tag);
TodorooCursor<TagOutstanding> cursor = tagOutstandingDao.query(Query.select(TagOutstanding.PROPERTIES)
.where(Criterion.and(TagOutstanding.TAG_DATA_ID.eq(tag.getId()),
TagOutstanding.COLUMN_STRING.eq(TagData.NAME.name),
TagOutstanding.VALUE_STRING.eq(newName))));
try {
assertTrue(cursor.getCount() > 0);
} finally {
cursor.close();
}
}
public void testSuppressionFlagSuppressesOutstandingEntries() {
Task task = createTask(true);
TodorooCursor<TagOutstanding> cursor = tagOutstandingDao.query(Query.select(TagOutstanding.PROPERTIES)
.where(TagOutstanding.TAG_DATA_ID.eq(task.getId())));
try {
assertEquals(0, cursor.getCount());
} finally {
cursor.close();
}
task.setValue(Task.TITLE, "new title");
task.putTransitory(SyncFlags.ACTFM_SUPPRESS_OUTSTANDING_ENTRIES, true);
taskDao.save(task);
cursor = tagOutstandingDao.query(Query.select(TagOutstanding.PROPERTIES)
.where(TagOutstanding.TAG_DATA_ID.eq(task.getId())));
try {
assertEquals(0, cursor.getCount());
} finally {
cursor.close();
}
}
}