diff --git a/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListAdapter.java b/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListAdapter.java
index 90822a68c..dc8670453 100644
--- a/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListAdapter.java
+++ b/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListAdapter.java
@@ -199,6 +199,12 @@ public class HabitCardListAdapter
observable.notifyListeners();
}
+ @Override
+ public void onRefreshFinished()
+ {
+ observable.notifyListeners();
+ }
+
/**
* Removes a list of habits from the adapter.
*
diff --git a/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListCache.java b/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListCache.java
index f821a76b1..f6358a7bb 100644
--- a/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListCache.java
+++ b/app/src/main/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListCache.java
@@ -190,6 +190,8 @@ public class HabitCardListCache implements CommandRunner.Listener
default void onItemMoved(int oldPosition, int newPosition) {}
default void onItemRemoved(int position) {}
+
+ default void onRefreshFinished() {}
}
private class CacheData
@@ -319,6 +321,7 @@ public class HabitCardListCache implements CommandRunner.Listener
public void onPostExecute()
{
currentFetchTask = null;
+ listener.onRefreshFinished();
}
@Override
diff --git a/app/src/main/java/org/isoron/uhabits/models/memory/MemoryHabitList.java b/app/src/main/java/org/isoron/uhabits/models/memory/MemoryHabitList.java
index faa835b68..e014107ce 100644
--- a/app/src/main/java/org/isoron/uhabits/models/memory/MemoryHabitList.java
+++ b/app/src/main/java/org/isoron/uhabits/models/memory/MemoryHabitList.java
@@ -70,7 +70,7 @@ public class MemoryHabitList extends HabitList
return null;
}
- @Nullable
+ @NonNull
@Override
public Habit getByPosition(int position)
{
diff --git a/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLiteHabitList.java b/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLiteHabitList.java
index cd738881d..1c1e7d950 100644
--- a/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLiteHabitList.java
+++ b/app/src/main/java/org/isoron/uhabits/models/sqlite/SQLiteHabitList.java
@@ -41,7 +41,7 @@ public class SQLiteHabitList extends HabitList
private final SQLiteUtils sqlite;
- private ModelFactory modelFactory;
+ private final ModelFactory modelFactory;
public SQLiteHabitList(@NonNull ModelFactory modelFactory)
{
@@ -52,9 +52,12 @@ public class SQLiteHabitList extends HabitList
sqlite = new SQLiteUtils<>(HabitRecord.class);
}
- protected SQLiteHabitList(@NonNull HabitMatcher filter)
+ protected SQLiteHabitList(@NonNull ModelFactory modelFactory,
+ @NonNull HabitMatcher filter)
{
super(filter);
+ this.modelFactory = modelFactory;
+
if (cache == null) cache = new HashMap<>();
sqlite = new SQLiteUtils<>(HabitRecord.class);
}
@@ -105,7 +108,7 @@ public class SQLiteHabitList extends HabitList
}
@Override
- @Nullable
+ @NonNull
public Habit getByPosition(int position)
{
return toList().get(position);
@@ -115,7 +118,7 @@ public class SQLiteHabitList extends HabitList
@Override
public HabitList getFiltered(HabitMatcher filter)
{
- return new SQLiteHabitList(filter);
+ return new SQLiteHabitList(modelFactory, filter);
}
@Override
diff --git a/app/src/test/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListAdapterTest.java b/app/src/test/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListAdapterTest.java
deleted file mode 100644
index aa8fb199c..000000000
--- a/app/src/test/java/org/isoron/uhabits/activities/habits/list/model/HabitCardListAdapterTest.java
+++ /dev/null
@@ -1,112 +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.activities.habits.list.model;
-
-import org.isoron.uhabits.BaseUnitTest;
-import org.junit.Before;
-import org.junit.Test;
-
-public class HabitCardListAdapterTest extends BaseUnitTest
-{
- @Override
- @Before
- public void setUp()
- {
- super.setUp();
- }
-
- @Test
- public void testSelection() throws Exception
- {
-
- }
-
- @Test
- public void testGetCount() throws Exception
- {
-
- }
-
- @Test
- public void testGetItem() throws Exception
- {
-
- }
-
- @Test
- public void testGetItemId() throws Exception
- {
-
- }
-
- @Test
- public void testGetSelected() throws Exception
- {
-
- }
-
- @Test
- public void testGetView() throws Exception
- {
-
- }
-
- @Test
- public void testIsSelectionEmpty() throws Exception
- {
-
- }
-
- @Test
- public void testOnAttached() throws Exception
- {
-
- }
-
- @Test
- public void testOnCacheRefresh() throws Exception
- {
-
- }
-
- @Test
- public void testOnDetached() throws Exception
- {
-
- }
-
- @Test
- public void testReorder() throws Exception
- {
-
- }
-
- @Test
- public void testSetListView() throws Exception
- {
-
- }
-
- @Test
- public void testToggleSelection() throws Exception
- {
-
- }
-}
\ No newline at end of file
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 feeec3585..2db4bf71a 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
@@ -82,6 +82,7 @@ public class HabitCardListCacheTest extends BaseUnitTest
null);
verify(listener).onItemRemoved(0);
+ verify(listener).onRefreshFinished();
assertThat(cache.getHabitCount(), equalTo(9));
}
@@ -94,6 +95,7 @@ public class HabitCardListCacheTest extends BaseUnitTest
h2.getId());
verify(listener).onItemChanged(2);
+ verify(listener).onRefreshFinished();
verifyNoMoreInteractions(listener);
}
@@ -128,9 +130,18 @@ public class HabitCardListCacheTest extends BaseUnitTest
cache.refreshAllHabits();
verify(listener).onItemRemoved(0);
verify(listener).onItemRemoved(3);
+ verify(listener).onRefreshFinished();
assertThat(cache.getHabitCount(), equalTo(8));
}
+ @Test
+ public void testRefreshWithNoChanges()
+ {
+ cache.refreshAllHabits();
+ verify(listener).onRefreshFinished();
+ verifyNoMoreInteractions(listener);
+ }
+
@Test
public void testReorder_onCache()
{
@@ -170,6 +181,7 @@ public class HabitCardListCacheTest extends BaseUnitTest
verify(listener).onItemMoved(5, 4);
verify(listener).onItemMoved(6, 5);
verify(listener).onItemMoved(7, 6);
+ verify(listener).onRefreshFinished();
verifyNoMoreInteractions(listener);
}