diff --git a/api/src/main/java/com/todoroo/andlib/service/AbstractDependencyInjector.java b/api/src/main/java/com/todoroo/andlib/service/AbstractDependencyInjector.java index 03e7f65fa..f42599980 100644 --- a/api/src/main/java/com/todoroo/andlib/service/AbstractDependencyInjector.java +++ b/api/src/main/java/com/todoroo/andlib/service/AbstractDependencyInjector.java @@ -96,7 +96,7 @@ abstract public class AbstractDependencyInjector { /** * Flush dependency injection cache. Useful for unit tests. */ - protected void flushCreated() { + protected void clear() { createdObjects.clear(); } diff --git a/astrid/src/instrumentTest/java/com/todoroo/andlib/test/TodorooTestCase.java b/astrid/src/instrumentTest/java/com/todoroo/andlib/test/TodorooTestCase.java index 11f6075bb..510121559 100644 --- a/astrid/src/instrumentTest/java/com/todoroo/andlib/test/TodorooTestCase.java +++ b/astrid/src/instrumentTest/java/com/todoroo/andlib/test/TodorooTestCase.java @@ -32,7 +32,7 @@ public class TodorooTestCase extends AndroidTestCase { super.setUp(); ContextManager.setContext(this.getContext()); - AstridDependencyInjector.flush(); + AstridDependencyInjector.reset(); DependencyInjectionService.getInstance().inject(this); setLocale(Locale.ENGLISH); } diff --git a/astrid/src/main/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java b/astrid/src/main/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java index 2fa6d27dc..7fa0bfbd0 100644 --- a/astrid/src/main/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java +++ b/astrid/src/main/java/com/todoroo/astrid/gtasks/sync/GtasksSyncService.java @@ -35,7 +35,7 @@ import java.io.IOException; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.Semaphore; -public final class GtasksSyncService { +public class GtasksSyncService { private static final String DEFAULT_LIST = "@default"; //$NON-NLS-1$ @Autowired MetadataService metadataService; diff --git a/astrid/src/main/java/com/todoroo/astrid/service/AstridDependencyInjector.java b/astrid/src/main/java/com/todoroo/astrid/service/AstridDependencyInjector.java index 2bb60ea3c..b14d037f0 100644 --- a/astrid/src/main/java/com/todoroo/astrid/service/AstridDependencyInjector.java +++ b/astrid/src/main/java/com/todoroo/astrid/service/AstridDependencyInjector.java @@ -115,7 +115,8 @@ public class AstridDependencyInjector extends AbstractDependencyInjector { /** * Flush dependency injection cache. Useful for unit tests. */ - public synchronized static void flush() { - instance.flushCreated(); + public synchronized static void reset() { + instance = null; + initialize(); } } diff --git a/astrid/src/test/java/com/todoroo/andlib/service/RobolectricTestDependencyInjector.java b/astrid/src/test/java/com/todoroo/andlib/service/RobolectricTestDependencyInjector.java index c82f76633..148e63175 100644 --- a/astrid/src/test/java/com/todoroo/andlib/service/RobolectricTestDependencyInjector.java +++ b/astrid/src/test/java/com/todoroo/andlib/service/RobolectricTestDependencyInjector.java @@ -27,12 +27,4 @@ public class RobolectricTestDependencyInjector extends AbstractDependencyInjecto DependencyInjectionService.getInstance().addInjector(instance); return instance; } - - /** - * Remove an installed TestDependencyInjector - */ - public static void deinitialize(RobolectricTestDependencyInjector instance) { - DependencyInjectionService.getInstance().removeInjector(instance); - } - } diff --git a/astrid/src/test/java/com/todoroo/andlib/test/TodorooRobolectricTestCase.java b/astrid/src/test/java/com/todoroo/andlib/test/TodorooRobolectricTestCase.java index 96ccf11b7..9b85805d0 100644 --- a/astrid/src/test/java/com/todoroo/andlib/test/TodorooRobolectricTestCase.java +++ b/astrid/src/test/java/com/todoroo/andlib/test/TodorooRobolectricTestCase.java @@ -11,31 +11,39 @@ import android.util.DisplayMetrics; import com.todoroo.andlib.service.ContextManager; import com.todoroo.andlib.service.DependencyInjectionService; +import com.todoroo.andlib.service.RobolectricTestDependencyInjector; import com.todoroo.astrid.service.AstridDependencyInjector; -import org.junit.After; import org.junit.Before; import org.robolectric.Robolectric; +import org.tasks.Broadcaster; import java.util.Locale; +import static org.mockito.Mockito.mock; + public class TodorooRobolectricTestCase { - static { - AstridDependencyInjector.initialize(); + private RobolectricTestDependencyInjector testInjector; + + protected T addInjectable(String name, T object) { + testInjector.addInjectable(name, object); + return object; } @Before - public void setUp() throws Exception { - ContextManager.setContext(getContext()); - AstridDependencyInjector.flush(); + public void before() throws Exception { + ContextManager.setContext(getRobolectricContext()); + AstridDependencyInjector.reset(); + testInjector = RobolectricTestDependencyInjector.initialize("test"); + addInjectable("broadcaster", mock(Broadcaster.class)); DependencyInjectionService.getInstance().inject(this); } /** * Loop through each locale and call runnable */ - public void forEachLocale(Runnable r) { + public static void forEachLocale(Runnable r) { Locale[] locales = Locale.getAvailableLocales(); for(Locale locale : locales) { setLocale(locale); @@ -47,15 +55,15 @@ public class TodorooRobolectricTestCase { /** * Sets locale */ - private void setLocale(Locale locale) { + private static void setLocale(Locale locale) { Locale.setDefault(locale); Configuration config = new Configuration(); config.locale = locale; - DisplayMetrics metrics = getContext().getResources().getDisplayMetrics(); - getContext().getResources().updateConfiguration(config, metrics); + DisplayMetrics metrics = getRobolectricContext().getResources().getDisplayMetrics(); + getRobolectricContext().getResources().updateConfiguration(config, metrics); } - protected Context getContext() { + public static Context getRobolectricContext() { return Robolectric.getShadowApplication().getApplicationContext(); } } diff --git a/astrid/src/test/java/com/todoroo/andlib/test/TodorooRobolectricTestCaseWithInjector.java b/astrid/src/test/java/com/todoroo/andlib/test/TodorooRobolectricTestCaseWithInjector.java deleted file mode 100644 index f991e62f6..000000000 --- a/astrid/src/test/java/com/todoroo/andlib/test/TodorooRobolectricTestCaseWithInjector.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.todoroo.andlib.test; - -import com.todoroo.andlib.service.RobolectricTestDependencyInjector; - -import org.junit.After; -import org.tasks.Broadcaster; - -import static org.mockito.Mockito.mock; - -abstract public class TodorooRobolectricTestCaseWithInjector extends TodorooRobolectricTestCase { - - protected RobolectricTestDependencyInjector testInjector; - - protected void addInjectables() { - } - - @Override - public void setUp() throws Exception { - testInjector = RobolectricTestDependencyInjector.initialize("test"); - testInjector.addInjectable("broadcaster", mock(Broadcaster.class)); - addInjectables(); - - super.setUp(); - } - - @After - public void after() throws Exception { - RobolectricTestDependencyInjector.deinitialize(testInjector); - } - -} diff --git a/astrid/src/test/java/com/todoroo/andlib/test/TranslationTests.java b/astrid/src/test/java/com/todoroo/andlib/test/TranslationTests.java index 2f73151da..b8e0a1927 100644 --- a/astrid/src/test/java/com/todoroo/andlib/test/TranslationTests.java +++ b/astrid/src/test/java/com/todoroo/andlib/test/TranslationTests.java @@ -150,7 +150,7 @@ abstract public class TranslationTests extends TodorooRobolectricTestCase { */ @Test public void testFormatStringsMatch() throws Exception { - final Resources r = getContext().getResources(); + final Resources r = getRobolectricContext().getResources(); final int[] strings = getResourceIds(getStringResources()); final FormatStringData[] formatStrings = new FormatStringData[strings.length]; @@ -199,7 +199,7 @@ abstract public class TranslationTests extends TodorooRobolectricTestCase { */ @Test public void testDateFormats() throws Exception { - final Resources r = getContext().getResources(); + final Resources r = getRobolectricContext().getResources(); final StringBuilder failures = new StringBuilder(); final int[] dateStrings = getDateFormatStrings(); @@ -236,7 +236,7 @@ abstract public class TranslationTests extends TodorooRobolectricTestCase { */ @Test public void testArraySizesMatch() throws Exception { - final Resources r = getContext().getResources(); + final Resources r = getRobolectricContext().getResources(); final int[] arrays = getResourceIds(getArrayResources()); final int[] sizes = new int[arrays.length]; final StringBuilder failures = new StringBuilder(); diff --git a/astrid/src/test/java/com/todoroo/andlib/utility/DateUtilitiesTest.java b/astrid/src/test/java/com/todoroo/andlib/utility/DateUtilitiesTest.java index ae61a4bc7..050c7dc27 100644 --- a/astrid/src/test/java/com/todoroo/andlib/utility/DateUtilitiesTest.java +++ b/astrid/src/test/java/com/todoroo/andlib/utility/DateUtilitiesTest.java @@ -5,8 +5,6 @@ */ package com.todoroo.andlib.utility; -import com.todoroo.andlib.test.TodorooRobolectricTestCase; - import org.joda.time.DateTime; import org.junit.After; import org.junit.Before; @@ -18,6 +16,8 @@ import org.tasks.Snippet; import java.util.Date; import java.util.Locale; +import static com.todoroo.andlib.test.TodorooRobolectricTestCase.forEachLocale; +import static com.todoroo.andlib.test.TodorooRobolectricTestCase.getRobolectricContext; import static com.todoroo.andlib.utility.DateUtilities.addCalendarMonthsToUnixtime; import static com.todoroo.andlib.utility.DateUtilities.clearTime; import static com.todoroo.andlib.utility.DateUtilities.getDateString; @@ -35,7 +35,7 @@ import static org.tasks.Freeze.freezeAt; import static org.tasks.date.DateTimeUtils.newDate; @RunWith(RobolectricTestRunner.class) -public class DateUtilitiesTest extends TodorooRobolectricTestCase { +public class DateUtilitiesTest { private static Locale defaultLocale; @@ -60,13 +60,13 @@ public class DateUtilitiesTest extends TodorooRobolectricTestCase { DateUtilities.is24HourOverride = false; for (int i = 0; i < 24; i++) { d.setHours(i); - DateUtilities.getTimeString(getContext(), d); + DateUtilities.getTimeString(getRobolectricContext(), d); } DateUtilities.is24HourOverride = true; for (int i = 0; i < 24; i++) { d.setHours(i); - DateUtilities.getTimeString(getContext(), d); + DateUtilities.getTimeString(getRobolectricContext(), d); } } }); @@ -206,12 +206,12 @@ public class DateUtilitiesTest extends TodorooRobolectricTestCase { assertTrue(isEndOfMonth(newDate(2014, 11, 30))); assertTrue(isEndOfMonth(newDate(2014, 12, 31))); } - + @Test public void notTheEndOfTheMonth() { - for(int month = 1 ; month <= 12 ; month++) { + for (int month = 1; month <= 12; month++) { int lastDay = new DateTime(2014, month, 1, 0, 0, 0, 0).dayOfMonth().getMaximumValue(); - for(int day = 1 ; day < lastDay ; day++) { + for (int day = 1; day < lastDay; day++) { assertFalse(isEndOfMonth(newDate(2014, month, day))); } } diff --git a/astrid/src/test/java/com/todoroo/astrid/data/TaskTest.java b/astrid/src/test/java/com/todoroo/astrid/data/TaskTest.java index d66690ba1..8c0c8d99f 100644 --- a/astrid/src/test/java/com/todoroo/astrid/data/TaskTest.java +++ b/astrid/src/test/java/com/todoroo/astrid/data/TaskTest.java @@ -242,17 +242,6 @@ public class TaskTest { }}); } - @Test - public void testDefaults() { - AstridPreferences.setPreferenceDefaults(); - ContentValues defaults = new Task().getDefaultValues(); - assertTrue(defaults.containsKey(Task.TITLE.name)); - assertTrue(defaults.containsKey(Task.DUE_DATE.name)); - assertTrue(defaults.containsKey(Task.HIDE_UNTIL.name)); - assertTrue(defaults.containsKey(Task.COMPLETION_DATE.name)); - assertTrue(defaults.containsKey(Task.IMPORTANCE.name)); - } - @Test public void testSanity() { assertTrue(Task.IMPORTANCE_DO_OR_DIE < Task.IMPORTANCE_MUST_DO); diff --git a/astrid/src/test/java/com/todoroo/astrid/gtasks/GtasksDetailExposerTest.java b/astrid/src/test/java/com/todoroo/astrid/gtasks/GtasksDetailExposerTest.java index e0074000d..81d16bf08 100644 --- a/astrid/src/test/java/com/todoroo/astrid/gtasks/GtasksDetailExposerTest.java +++ b/astrid/src/test/java/com/todoroo/astrid/gtasks/GtasksDetailExposerTest.java @@ -4,13 +4,15 @@ import android.content.Context; import android.content.Intent; import com.google.api.services.tasks.model.TaskList; -import com.todoroo.andlib.test.TodorooRobolectricTestCaseWithInjector; +import com.todoroo.andlib.service.Autowired; +import com.todoroo.andlib.test.TodorooRobolectricTestCase; import com.todoroo.astrid.api.AstridApiConstants; import com.todoroo.astrid.data.Metadata; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.service.MetadataService; import com.todoroo.astrid.service.TaskService; +import org.junit.After; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; @@ -20,32 +22,29 @@ import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @RunWith(RobolectricTestRunner.class) -public class GtasksDetailExposerTest extends TodorooRobolectricTestCaseWithInjector { +public class GtasksDetailExposerTest extends TodorooRobolectricTestCase { private Context context; private RobolectricGtasksPreferenceService gtasksPreferenceService; - @Override - protected void addInjectables() { - testInjector.addInjectable("gtasksPreferenceService", gtasksPreferenceService); - } + @Autowired + private GtasksListService gtasksListService; @Override - public void setUp() throws Exception { - gtasksPreferenceService = new RobolectricGtasksPreferenceService(); + public void before() throws Exception { context = mock(Context.class); - new GtasksListService().addNewList( - new TaskList().setId("list_id").setTitle("list_title")); - super.setUp(); + super.before(); + + gtasksPreferenceService = addInjectable("gtasksPreferenceService", new RobolectricGtasksPreferenceService()); + gtasksListService.addNewList( + new TaskList().setId("list_id").setTitle("list_title")); } - @Override + @After public void after() throws Exception { verify(context).getApplicationContext(); verifyNoMoreInteractions(context); - - super.after(); } @Test diff --git a/astrid/src/test/java/com/todoroo/astrid/model/TaskTest.java b/astrid/src/test/java/com/todoroo/astrid/model/TaskTest.java index 47672307e..83e1e0a5e 100644 --- a/astrid/src/test/java/com/todoroo/astrid/model/TaskTest.java +++ b/astrid/src/test/java/com/todoroo/astrid/model/TaskTest.java @@ -1,11 +1,13 @@ package com.todoroo.astrid.model; +import android.content.ContentValues; + import com.todoroo.andlib.data.Property; -import com.todoroo.andlib.test.TodorooRobolectricTestCaseWithInjector; +import com.todoroo.andlib.test.TodorooRobolectricTestCase; import com.todoroo.astrid.data.Task; import com.todoroo.astrid.service.TaskService; +import com.todoroo.astrid.utility.AstridPreferences; -import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RobolectricTestRunner; @@ -13,18 +15,21 @@ import org.tasks.Snippet; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertTrue; import static org.tasks.Freeze.freezeClock; -import static org.tasks.RemoteModelHelpers.compareRemoteModel; import static org.tasks.RemoteModelHelpers.asQueryProperties; +import static org.tasks.RemoteModelHelpers.compareRemoteModel; import static org.tasks.date.DateTimeUtils.currentTimeMillis; @RunWith(RobolectricTestRunner.class) -public class TaskTest extends TodorooRobolectricTestCaseWithInjector { +public class TaskTest extends TodorooRobolectricTestCase { private TaskService taskService; - @Before - public void before() { + @Override + public void before() throws Exception { + super.before(); + taskService = new TaskService(); } @@ -51,5 +56,14 @@ public class TaskTest extends TodorooRobolectricTestCaseWithInjector { compareRemoteModel(task, fromDb); } - + @Test + public void testDefaults() { + AstridPreferences.setPreferenceDefaults(); + ContentValues defaults = new Task().getDefaultValues(); + assertTrue(defaults.containsKey(Task.TITLE.name)); + assertTrue(defaults.containsKey(Task.DUE_DATE.name)); + assertTrue(defaults.containsKey(Task.HIDE_UNTIL.name)); + assertTrue(defaults.containsKey(Task.COMPLETION_DATE.name)); + assertTrue(defaults.containsKey(Task.IMPORTANCE.name)); + } } diff --git a/astrid/src/test/java/com/todoroo/astrid/repeats/AdvancedRepeatTest.java b/astrid/src/test/java/com/todoroo/astrid/repeats/AdvancedRepeatTest.java index ca9bb5fd1..6067b4f5e 100644 --- a/astrid/src/test/java/com/todoroo/astrid/repeats/AdvancedRepeatTest.java +++ b/astrid/src/test/java/com/todoroo/astrid/repeats/AdvancedRepeatTest.java @@ -40,8 +40,8 @@ public class AdvancedRepeatTest extends TodorooRobolectricTestCase { private RRule rrule; @Before - public void setUp() throws Exception { - super.setUp(); + public void before() throws Exception { + super.before(); task = new Task(); task.setValue(Task.COMPLETION_DATE, DateUtilities.now()); rrule = new RRule(); diff --git a/astrid/src/test/java/com/todoroo/astrid/test/AstridTranslationTest.java b/astrid/src/test/java/com/todoroo/astrid/test/AstridTranslationTest.java index 2d2deebaa..63db76208 100644 --- a/astrid/src/test/java/com/todoroo/astrid/test/AstridTranslationTest.java +++ b/astrid/src/test/java/com/todoroo/astrid/test/AstridTranslationTest.java @@ -57,7 +57,7 @@ public class AstridTranslationTest extends TranslationTests { */ @Test public void testSpecialStringsMatch() throws Exception { - final Resources r = getContext().getResources(); + final Resources r = getRobolectricContext().getResources(); final StringBuilder failures = new StringBuilder(); forEachLocale(new Runnable() {