Attempt to fix unit test dependency injection in static context

Tim Su 16 years ago
parent 0e1b749aee
commit deab128d61

@ -0,0 +1,106 @@
/**
* See the file "LICENSE" for the full license governing this code.
*/
package com.todoroo.astrid.alarms;
import android.content.ContentValues;
import com.todoroo.andlib.data.AbstractModel;
import com.todoroo.andlib.data.Property;
import com.todoroo.andlib.data.Table;
import com.todoroo.andlib.data.TodorooCursor;
import com.todoroo.andlib.data.Property.IntegerProperty;
import com.todoroo.andlib.data.Property.LongProperty;
import com.todoroo.astrid.model.Metadata;
import com.todoroo.astrid.model.Task;
/**
* Data Model which represents an alarm
*
* @author Tim Su <tim@todoroo.com>
*
*/
@SuppressWarnings("nls")
public class Alarm extends AbstractModel {
// --- table
public static final Table TABLE = new Table("alarm", Alarm.class);
// --- properties
/** ID */
public static final LongProperty ID = new LongProperty(
TABLE, ID_PROPERTY_NAME);
/** Associated Task */
public static final LongProperty TASK = new LongProperty(
TABLE, "task");
/** Associated Task */
public static final IntegerProperty TIME = new IntegerProperty(
TABLE, "time");
/** Associated Task */
public static final IntegerProperty TYPE = new IntegerProperty(
TABLE, "type");
/** List of all properties for this model */
public static final Property<?>[] PROPERTIES = generateProperties(Alarm.class);
// --- constants
/** this alarm was already triggered */
public static final int TYPE_TRIGGERED = 0;
/** this alarm is single-shot */
public static final int TYPE_SINGLE = 1;
/** this alarm repeats itself until turned off */
public static final int TYPE_REPEATING = 2;
// --- defaults
/** Default values container */
private static final ContentValues defaultValues = new ContentValues();
static {
defaultValues.put(TYPE.name, TYPE_SINGLE);
}
@Override
public ContentValues getDefaultValues() {
return defaultValues;
}
// --- data access boilerplate
public Alarm() {
super();
}
public Alarm(TodorooCursor<Metadata> cursor) {
this();
readPropertiesFromCursor(cursor);
}
public void readFromCursor(TodorooCursor<Metadata> cursor) {
super.readPropertiesFromCursor(cursor);
}
@Override
public long getId() {
return getIdHelper(ID);
};
// --- parcelable helpers
private static final Creator<Task> CREATOR = new ModelCreator<Task>(Task.class);
@Override
protected Creator<? extends AbstractModel> getCreator() {
return CREATOR;
}
}

@ -0,0 +1,34 @@
package com.todoroo.astrid.alarms;
import android.content.Context;
import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.astrid.dao.MetadataDao;
import com.todoroo.astrid.service.MetadataService;
/**
* Provides operations for working with alerts
*
* @author Tim Su <tim@todoroo.com>
*
*/
@SuppressWarnings("nls")
public class AlarmService {
/**
* Metadata key for # of alarms
*/
public static final String ALARM_COUNT = "alarms-count";
@Autowired
private MetadataDao metadataDao;
@Autowired
private MetadataService metadataService;
public AlarmService(@SuppressWarnings("unused") Context context) {
DependencyInjectionService.getInstance().inject(this);
}
}

@ -0,0 +1,82 @@
/*
* Copyright (c) 2009, Todoroo Inc
* All Rights Reserved
* http://www.todoroo.com
*/
package com.todoroo.astrid.alarms;
import com.todoroo.andlib.data.AbstractDatabase;
import com.todoroo.andlib.data.Table;
/**
* Database wrapper
*
* @author Tim Su <tim@todoroo.com>
*
*/
@SuppressWarnings("nls")
public class AlarmsDatabase extends AbstractDatabase {
// --- constants
/**
* Database version number. This variable must be updated when database
* tables are updated, as it determines whether a database needs updating.
*/
public static final int VERSION = 1;
/**
* Database name (must be unique)
*/
private static final String NAME = "alarms";
/**
* List of table/ If you're adding a new table, add it to this list and
* also make sure that our SQLite helper does the right thing.
*/
public static final Table[] TABLES = new Table[] {
Alarm.TABLE
};
// --- implementation
@Override
protected String getName() {
return NAME;
}
@Override
protected int getVersion() {
return VERSION;
}
@Override
public Table[] getTables() {
return TABLES;
}
@Override
protected void onCreateTables() {
StringBuilder sql = new StringBuilder();
sql.append("CREATE INDEX IF NOT EXISTS a_task ON ").
append(Alarm.TABLE).append('(').
append(Alarm.TASK.name).
append(')');
database.execSQL(sql.toString());
sql.setLength(0);
sql.append("CREATE INDEX IF NOT EXISTS a_timetype ON ").
append(Alarm.TABLE).append('(').
append(Alarm.TIME.name).append(',').
append(Alarm.TYPE.name).
append(')');
database.execSQL(sql.toString());
}
@Override
protected boolean onUpgrade(int oldVersion, int newVersion) {
return false;
}
}

@ -152,4 +152,5 @@ public class AstridDependencyInjector implements AbstractDependencyInjector {
AstridDependencyInjector() { AstridDependencyInjector() {
// prevent instantiation // prevent instantiation
} }
} }

@ -3,10 +3,10 @@ package com.todoroo.astrid.test;
import java.io.File; import java.io.File;
import com.todoroo.andlib.service.Autowired; import com.todoroo.andlib.service.Autowired;
import com.todoroo.andlib.service.DependencyInjectionService;
import com.todoroo.andlib.service.TestDependencyInjector; import com.todoroo.andlib.service.TestDependencyInjector;
import com.todoroo.andlib.test.TodorooTestCase; import com.todoroo.andlib.test.TodorooTestCase;
import com.todoroo.astrid.dao.Database; import com.todoroo.astrid.dao.Database;
import com.todoroo.astrid.service.AstridDependencyInjector;
/** /**
* Test case that automatically sets up and tears down a test database * Test case that automatically sets up and tears down a test database
@ -26,8 +26,7 @@ public class DatabaseTestCase extends TodorooTestCase {
public Database database; public Database database;
static { static {
AstridDependencyInjector.initialize(); // initialize test dependency injector
TestDependencyInjector injector = TestDependencyInjector.initialize("db"); TestDependencyInjector injector = TestDependencyInjector.initialize("db");
injector.addInjectable("tasksTable", TASKS_TEST); injector.addInjectable("tasksTable", TASKS_TEST);
injector.addInjectable("tagsTable", TAGS_TEST); injector.addInjectable("tagsTable", TAGS_TEST);
@ -41,16 +40,17 @@ public class DatabaseTestCase extends TodorooTestCase {
protected void setUp() throws Exception { protected void setUp() throws Exception {
super.setUp(); super.setUp();
// create new test database DependencyInjectionService.getInstance().inject(this);
database.clear();
database.openForWriting();
// clear legacy databases // empty out test databases
database.clear();
deleteDatabase(TASKS_TEST); deleteDatabase(TASKS_TEST);
deleteDatabase(TAGS_TEST); deleteDatabase(TAGS_TEST);
deleteDatabase(TAG_TASK_TEST); deleteDatabase(TAG_TASK_TEST);
deleteDatabase(ALERTS_TEST); deleteDatabase(ALERTS_TEST);
deleteDatabase(SYNC_TEST); deleteDatabase(SYNC_TEST);
database.openForWriting();
} }
private void deleteDatabase(String database) { private void deleteDatabase(String database) {

@ -35,7 +35,7 @@ public class Astrid2To3UpgradeTests extends DatabaseTestCase {
assertEquals(old.getTime() / 1000L, newDate); assertEquals(old.getTime() / 1000L, newDate);
} }
public void xtestEmptyUpgrade() { public void testEmptyUpgrade() {
TaskController taskController = new TaskController(getContext()); TaskController taskController = new TaskController(getContext());
taskController.open(); taskController.open();
assertEquals(0, taskController.getAllTaskIdentifiers().size()); assertEquals(0, taskController.getAllTaskIdentifiers().size());
@ -107,7 +107,7 @@ public class Astrid2To3UpgradeTests extends DatabaseTestCase {
} }
public void xtestTagTableUpgrade() { public void testTagTableUpgrade() {
TaskController taskController = new TaskController(getContext()); TaskController taskController = new TaskController(getContext());
taskController.open(); taskController.open();
TagController tagController = new TagController(getContext()); TagController tagController = new TagController(getContext());

Loading…
Cancel
Save