diff --git a/app/src/test/java/org/isoron/uhabits/BaseUnitTest.java b/app/src/test/java/org/isoron/uhabits/BaseUnitTest.java index 0f3a9e298..20e3d2cd6 100644 --- a/app/src/test/java/org/isoron/uhabits/BaseUnitTest.java +++ b/app/src/test/java/org/isoron/uhabits/BaseUnitTest.java @@ -19,76 +19,34 @@ package org.isoron.uhabits; -import org.isoron.uhabits.commands.*; -import org.isoron.uhabits.intents.*; -import org.isoron.uhabits.io.*; import org.isoron.uhabits.models.*; -import org.isoron.uhabits.activities.common.dialogs.*; -import org.isoron.uhabits.tasks.*; +import org.isoron.uhabits.models.memory.*; import org.isoron.uhabits.utils.*; import org.junit.*; -import javax.inject.*; - public class BaseUnitTest { - // 8:00am, January 25th, 2015 (UTC) - public static final long FIXED_LOCAL_TIME = 1422172800000L; - - @Inject - protected ModelFactory modelFactory; - - @Inject - protected DialogFactory dialogFactory; - - @Inject - protected IntentFactory intentFactory; - - @Inject protected HabitList habitList; - @Inject - protected HabitLogger logger; - - @Inject - protected PendingIntentFactory pendingIntentFactory; - - @Inject - protected IntentScheduler intentScheduler; - - @Inject - protected DirFinder dirFinder; - - @Inject - protected CommandRunner commandRunner; - - protected TestComponent testComponent; - protected HabitFixtures fixtures; - protected SingleThreadTaskRunner taskRunner; - - public void log(String format, Object... args) - { - System.out.println(String.format(format, args)); - } + protected MemoryModelFactory modelFactory; @Before public void setUp() { + // 8:00am, January 25th, 2015 (UTC) + long FIXED_LOCAL_TIME = 1422172800000L; DateUtils.setFixedLocalTime(FIXED_LOCAL_TIME); - testComponent = DaggerTestComponent.create(); - HabitsApplication.setComponent(testComponent); - testComponent.inject(this); - fixtures = new HabitFixtures(modelFactory, habitList); - taskRunner = new SingleThreadTaskRunner(); + + modelFactory = new MemoryModelFactory(); + habitList = modelFactory.buildHabitList(); + fixtures = new HabitFixtures(modelFactory); } @After public void tearDown() { DateUtils.setFixedLocalTime(null); - fixtures.purgeHabits(); - } } diff --git a/app/src/test/java/org/isoron/uhabits/MockModule.java b/app/src/test/java/org/isoron/uhabits/MockModule.java deleted file mode 100644 index 1b31ed5e2..000000000 --- a/app/src/test/java/org/isoron/uhabits/MockModule.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * Copyright (C) 2016 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits; - -import org.isoron.uhabits.intents.*; -import org.isoron.uhabits.io.*; -import org.isoron.uhabits.models.*; -import org.isoron.uhabits.tasks.*; -import org.isoron.uhabits.activities.common.dialogs.*; -import org.isoron.uhabits.utils.*; -import org.isoron.uhabits.widgets.*; - -import javax.inject.*; - -import dagger.*; - -import static org.mockito.Mockito.*; - -@Module -public class MockModule -{ - @Provides - @Singleton - DialogFactory provideDialogFactory() - { - return mock(DialogFactory.class); - } - - @Provides - @Singleton - DirFinder provideDirFinder() - { - return mock(DirFinder.class); - } - - @Provides - Habit provideHabit() - { - return mock(Habit.class); - } - - @Provides - @Singleton - IntentFactory provideIntentFactory() - { - return mock(IntentFactory.class); - } - - @Provides - @Singleton - IntentScheduler provideIntentScheduler() - { - return mock(IntentScheduler.class); - } - - @Provides - @Singleton - HabitLogger provideLogger() - { - return mock(HabitLogger.class); - } - - @Singleton - @Provides - PendingIntentFactory providePendingIntentFactory() - { - return mock(PendingIntentFactory.class); - } - - @Singleton - @Provides - Preferences providePreferences() - { - return mock(Preferences.class); - } - - @Provides - @Singleton - ReminderScheduler provideReminderScheduler() - { - return mock(ReminderScheduler.class); - } - - @Provides - @Singleton - WidgetPreferences provideWidgetPreferences() - { - return mock(WidgetPreferences.class); - } - - @Provides - @Singleton - TaskRunner provideTaskRunner() - { - return new SingleThreadTaskRunner(); - } - - @Provides - @Singleton - WidgetUpdater provideWidgetUpdate() - { - return mock(WidgetUpdater.class); - } -} diff --git a/app/src/test/java/org/isoron/uhabits/TestComponent.java b/app/src/test/java/org/isoron/uhabits/TestComponent.java deleted file mode 100644 index f7d724275..000000000 --- a/app/src/test/java/org/isoron/uhabits/TestComponent.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright (C) 2016 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits; - -import org.isoron.uhabits.models.memory.*; - -import javax.inject.*; - -import dagger.*; - -@Singleton -@Component(modules = { MockModule.class, MemoryModelFactory.class }) -public interface TestComponent extends AppComponent -{ - void inject(BaseUnitTest baseUnitTest); -} - diff --git a/app/src/test/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreenTest.java b/app/src/test/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreenTest.java index 6a6264a00..3964f754e 100644 --- a/app/src/test/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreenTest.java +++ b/app/src/test/java/org/isoron/uhabits/activities/habits/list/ListHabitsScreenTest.java @@ -64,6 +64,14 @@ public class ListHabitsScreenTest extends BaseUnitTest private FilePickerDialogFactory filePickerDialogFactory; + private IntentFactory intentFactory; + + private DialogFactory dialogFactory; + + private DirFinder dirFinder; + + private CommandRunner commandRunner; + @Before @Override public void setUp() diff --git a/app/src/test/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListCacheTest.java b/app/src/test/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListCacheTest.java index 0d4e85951..feeec3585 100644 --- a/app/src/test/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListCacheTest.java +++ b/app/src/test/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListCacheTest.java @@ -22,6 +22,7 @@ package org.isoron.uhabits.activities.habits.list.model; import org.isoron.uhabits.*; import org.isoron.uhabits.commands.*; import org.isoron.uhabits.models.*; +import org.isoron.uhabits.tasks.*; import org.isoron.uhabits.utils.*; import org.junit.*; @@ -38,19 +39,22 @@ public class HabitCardListCacheTest extends BaseUnitTest private HabitCardListCache.Listener listener; + private CommandRunner commandRunner; + @Override public void setUp() { super.setUp(); - fixtures.purgeHabits(); - for (int i = 0; i < 10; i++) { - if (i == 3) fixtures.createLongHabit(); - else fixtures.createShortHabit(); + if (i == 3) habitList.add(fixtures.createLongHabit()); + else habitList.add(fixtures.createShortHabit()); } + SingleThreadTaskRunner taskRunner = new SingleThreadTaskRunner(); + commandRunner = new CommandRunner(taskRunner); + cache = new HabitCardListCache(habitList, commandRunner, taskRunner); cache.setCheckmarkCount(10); cache.refreshAllHabits(); diff --git a/app/src/test/java/org/isoron/uhabits/commands/CreateHabitCommandTest.java b/app/src/test/java/org/isoron/uhabits/commands/CreateHabitCommandTest.java index 527a391cf..b0c5fb84d 100644 --- a/app/src/test/java/org/isoron/uhabits/commands/CreateHabitCommandTest.java +++ b/app/src/test/java/org/isoron/uhabits/commands/CreateHabitCommandTest.java @@ -29,7 +29,6 @@ import static org.hamcrest.MatcherAssert.*; public class CreateHabitCommandTest extends BaseUnitTest { - private CreateHabitCommand command; private Habit model; @@ -44,7 +43,6 @@ public class CreateHabitCommandTest extends BaseUnitTest model.setName("New habit"); command = new CreateHabitCommand(modelFactory, habitList, model); - fixtures.purgeHabits(); } @Test diff --git a/app/src/test/java/org/isoron/uhabits/commands/DeleteHabitsCommandTest.java b/app/src/test/java/org/isoron/uhabits/commands/DeleteHabitsCommandTest.java index 03cc0d6e5..09b2871d5 100644 --- a/app/src/test/java/org/isoron/uhabits/commands/DeleteHabitsCommandTest.java +++ b/app/src/test/java/org/isoron/uhabits/commands/DeleteHabitsCommandTest.java @@ -33,7 +33,7 @@ public class DeleteHabitsCommandTest extends BaseUnitTest { private DeleteHabitsCommand command; - private LinkedList habits; + private LinkedList selected; @Rule public ExpectedException thrown = ExpectedException.none(); @@ -43,22 +43,22 @@ public class DeleteHabitsCommandTest extends BaseUnitTest public void setUp() { super.setUp(); - - fixtures.purgeHabits(); - habits = new LinkedList<>(); + selected = new LinkedList<>(); // Habits that should be deleted for (int i = 0; i < 3; i++) { Habit habit = fixtures.createShortHabit(); - habits.add(habit); + habitList.add(habit); + selected.add(habit); } // Extra habit that should not be deleted Habit extraHabit = fixtures.createShortHabit(); extraHabit.setName("extra"); + habitList.add(extraHabit); - command = new DeleteHabitsCommand(habitList, habits); + command = new DeleteHabitsCommand(habitList, selected); } @Test diff --git a/app/src/test/java/org/isoron/uhabits/commands/EditHabitCommandTest.java b/app/src/test/java/org/isoron/uhabits/commands/EditHabitCommandTest.java index 124f1194f..1b6a5f447 100644 --- a/app/src/test/java/org/isoron/uhabits/commands/EditHabitCommandTest.java +++ b/app/src/test/java/org/isoron/uhabits/commands/EditHabitCommandTest.java @@ -44,10 +44,12 @@ public class EditHabitCommandTest extends BaseUnitTest habit = fixtures.createShortHabit(); habit.setName("original"); habit.setFrequency(Frequency.DAILY); + habitList.add(habit); modified = fixtures.createEmptyHabit(); modified.copyFrom(habit); modified.setName("modified"); + habitList.add(modified); } @Test diff --git a/app/src/test/java/org/isoron/uhabits/models/CheckmarkListTest.java b/app/src/test/java/org/isoron/uhabits/models/CheckmarkListTest.java index 502e4fe45..17334de70 100644 --- a/app/src/test/java/org/isoron/uhabits/models/CheckmarkListTest.java +++ b/app/src/test/java/org/isoron/uhabits/models/CheckmarkListTest.java @@ -19,19 +19,15 @@ package org.isoron.uhabits.models; -import org.isoron.uhabits.BaseUnitTest; -import org.isoron.uhabits.models.Habit; -import org.isoron.uhabits.utils.DateUtils; -import org.junit.Test; +import org.isoron.uhabits.*; +import org.isoron.uhabits.utils.*; +import org.junit.*; -import java.io.IOException; -import java.io.StringWriter; +import java.io.*; -import static org.hamcrest.MatcherAssert.assertThat; -import static org.hamcrest.core.IsEqual.equalTo; -import static org.isoron.uhabits.models.Checkmark.CHECKED_EXPLICITLY; -import static org.isoron.uhabits.models.Checkmark.CHECKED_IMPLICITLY; -import static org.isoron.uhabits.models.Checkmark.UNCHECKED; +import static org.hamcrest.MatcherAssert.*; +import static org.hamcrest.core.IsEqual.*; +import static org.isoron.uhabits.models.Checkmark.*; public class CheckmarkListTest extends BaseUnitTest { @@ -46,7 +42,10 @@ public class CheckmarkListTest extends BaseUnitTest fixtures.createShortHabit(); nonDailyHabit = fixtures.createShortHabit(); + habitList.add(nonDailyHabit); + emptyHabit = fixtures.createEmptyHabit(); + habitList.add(emptyHabit); } @Test diff --git a/app/src/test/java/org/isoron/uhabits/models/HabitFixtures.java b/app/src/test/java/org/isoron/uhabits/models/HabitFixtures.java index e0d4a9b5d..f49db1320 100644 --- a/app/src/test/java/org/isoron/uhabits/models/HabitFixtures.java +++ b/app/src/test/java/org/isoron/uhabits/models/HabitFixtures.java @@ -29,12 +29,9 @@ public class HabitFixtures private final ModelFactory modelFactory; - private final HabitList habitList; - - public HabitFixtures(ModelFactory modelFactory, HabitList habitList) + public HabitFixtures(ModelFactory modelFactory) { this.modelFactory = modelFactory; - this.habitList = habitList; } public Habit createEmptyHabit() @@ -44,7 +41,6 @@ public class HabitFixtures habit.setDescription("Did you meditate this morning?"); habit.setColor(3); habit.setFrequency(Frequency.DAILY); - habitList.add(habit); return habit; } @@ -72,7 +68,6 @@ public class HabitFixtures habit.setName("Wake up early"); habit.setDescription("Did you wake up before 6am?"); habit.setFrequency(new Frequency(2, 3)); - habitList.add(habit); long timestamp = DateUtils.getStartOfToday(); for (boolean c : NON_DAILY_HABIT_CHECKS) @@ -83,9 +78,4 @@ public class HabitFixtures return habit; } - - public void purgeHabits() - { - habitList.removeAll(); - } } diff --git a/app/src/test/java/org/isoron/uhabits/models/HabitListTest.java b/app/src/test/java/org/isoron/uhabits/models/HabitListTest.java index 2d99cf9a8..b339843d7 100644 --- a/app/src/test/java/org/isoron/uhabits/models/HabitListTest.java +++ b/app/src/test/java/org/isoron/uhabits/models/HabitListTest.java @@ -44,14 +44,12 @@ public class HabitListTest extends BaseUnitTest public void setUp() { super.setUp(); - fixtures.purgeHabits(); - habitsArray = new ArrayList<>(); for (int i = 0; i < 10; i++) { Habit habit = fixtures.createEmptyHabit(); - habit.setId((long) i); + habitList.add(habit); habitsArray.add(habit); if (i % 3 == 0) diff --git a/app/src/test/java/org/isoron/uhabits/models/ScoreListTest.java b/app/src/test/java/org/isoron/uhabits/models/ScoreListTest.java index 1305a2426..b5e64a840 100644 --- a/app/src/test/java/org/isoron/uhabits/models/ScoreListTest.java +++ b/app/src/test/java/org/isoron/uhabits/models/ScoreListTest.java @@ -19,16 +19,12 @@ package org.isoron.uhabits.models; -import org.isoron.uhabits.BaseUnitTest; +import org.isoron.uhabits.*; import org.isoron.uhabits.utils.*; -import org.junit.Before; -import org.junit.Test; +import org.junit.*; -import java.io.IOException; -import java.io.StringWriter; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; +import java.io.*; +import java.util.*; import static org.hamcrest.CoreMatchers.*; import static org.hamcrest.MatcherAssert.*; @@ -175,13 +171,6 @@ public class ScoreListTest extends BaseUnitTest assertThat(writer.toString(), equalTo(expectedCSV)); } - private void log(List list) - { - SimpleDateFormat df = DateFormats.getCSVDateFormat(); - for (Score s : list) - log("%s %d", df.format(new Date(s.getTimestamp())), s.getValue()); - } - private void toggleRepetitions(final int from, final int to) { RepetitionList reps = habit.getRepetitions(); diff --git a/app/src/test/java/org/isoron/uhabits/models/StreakListTest.java b/app/src/test/java/org/isoron/uhabits/models/StreakListTest.java index 6ca9a3b5d..5d34c6fd5 100644 --- a/app/src/test/java/org/isoron/uhabits/models/StreakListTest.java +++ b/app/src/test/java/org/isoron/uhabits/models/StreakListTest.java @@ -137,11 +137,4 @@ public class StreakListTest extends BaseUnitTest s = streaks.getNewestComputed(); assertThat(s.getEnd(), equalTo(today - 12 * day)); } - - private void log(List sl) - { - for (Streak s : sl) - log("%5d -- %5d (%d)", (today - s.getEnd()) / day, - (today - s.getStart()) / day, s.getLength()); - } } \ No newline at end of file diff --git a/app/src/test/java/org/isoron/uhabits/utils/DateUtilsTest.java b/app/src/test/java/org/isoron/uhabits/utils/DateUtilsTest.java index ae46b3c0f..a5acab321 100644 --- a/app/src/test/java/org/isoron/uhabits/utils/DateUtilsTest.java +++ b/app/src/test/java/org/isoron/uhabits/utils/DateUtilsTest.java @@ -22,7 +22,6 @@ package org.isoron.uhabits.utils; import org.isoron.uhabits.*; import org.junit.*; -import java.text.*; import java.util.*; import static java.util.Calendar.*; @@ -142,11 +141,4 @@ public class DateUtilsTest extends BaseUnitTest cal.set(year, month, day); return cal.getTimeInMillis(); } - - private void log(long timestamp) - { - DateFormat df = SimpleDateFormat.getDateTimeInstance(); - df.setTimeZone(TimeZone.getTimeZone("GMT")); - log("%s", df.format(new Date(timestamp))); - } } diff --git a/app/src/test/java/org/isoron/uhabits/utils/ReminderSchedulerTest.java b/app/src/test/java/org/isoron/uhabits/utils/ReminderSchedulerTest.java index 84c2fbe8c..a2be3189a 100644 --- a/app/src/test/java/org/isoron/uhabits/utils/ReminderSchedulerTest.java +++ b/app/src/test/java/org/isoron/uhabits/utils/ReminderSchedulerTest.java @@ -22,6 +22,7 @@ package org.isoron.uhabits.utils; import android.app.*; import org.isoron.uhabits.*; +import org.isoron.uhabits.intents.*; import org.isoron.uhabits.models.*; import org.junit.*; @@ -36,12 +37,22 @@ public class ReminderSchedulerTest extends BaseUnitTest private ReminderScheduler reminderScheduler; + private HabitLogger logger; + + private PendingIntentFactory pendingIntentFactory; + + private IntentScheduler intentScheduler; + @Before @Override public void setUp() { super.setUp(); intent = mock(PendingIntent.class); + logger = mock(HabitLogger.class); + pendingIntentFactory = mock(PendingIntentFactory.class); + intentScheduler = mock(IntentScheduler.class); + reminderScheduler = new ReminderScheduler(pendingIntentFactory, intentScheduler, logger); @@ -78,15 +89,16 @@ public class ReminderSchedulerTest extends BaseUnitTest long now = 1422277200000L; // 13:00 jan 26, 2015 (UTC) DateUtils.setFixedLocalTime(now); - fixtures.purgeHabits(); - Habit h1 = fixtures.createEmptyHabit(); h1.setReminder(new Reminder(8, 30, WeekdayList.EVERY_DAY)); + habitList.add(h1); Habit h2 = fixtures.createEmptyHabit(); h2.setReminder(new Reminder(18, 30, WeekdayList.EVERY_DAY)); + habitList.add(h2); - fixtures.createEmptyHabit(); + Habit h3 = fixtures.createEmptyHabit(); + habitList.add(h3); reminderScheduler.schedule(habitList);