@@ -36,6 +36,7 @@ import com.google.samples.apps.nowinandroid.core.datastore.test.testUserPreferen
3636import com.google.samples.apps.nowinandroid.core.model.data.NewsResource
3737import com.google.samples.apps.nowinandroid.core.network.model.NetworkChangeList
3838import com.google.samples.apps.nowinandroid.core.network.model.NetworkNewsResource
39+ import com.google.samples.apps.nowinandroid.core.testing.notifications.TestNotifier
3940import kotlinx.coroutines.flow.first
4041import kotlinx.coroutines.test.TestScope
4142import kotlinx.coroutines.test.UnconfinedTestDispatcher
@@ -58,6 +59,8 @@ class OfflineFirstNewsRepositoryTest {
5859
5960 private lateinit var network: TestNiaNetworkDataSource
6061
62+ private lateinit var notifier: TestNotifier
63+
6164 private lateinit var synchronizer: Synchronizer
6265
6366 @get:Rule
@@ -68,6 +71,7 @@ class OfflineFirstNewsRepositoryTest {
6871 newsResourceDao = TestNewsResourceDao ()
6972 topicDao = TestTopicDao ()
7073 network = TestNiaNetworkDataSource ()
74+ notifier = TestNotifier ()
7175 synchronizer = TestSynchronizer (
7276 NiaPreferencesDataSource (
7377 tmpFolder.testUserPreferencesDataStore(testScope),
@@ -78,6 +82,7 @@ class OfflineFirstNewsRepositoryTest {
7882 newsResourceDao = newsResourceDao,
7983 topicDao = topicDao,
8084 network = network,
85+ notifier = notifier,
8186 )
8287 }
8388
@@ -145,6 +150,12 @@ class OfflineFirstNewsRepositoryTest {
145150 expected = network.latestChangeListVersion(CollectionType .NewsResources ),
146151 actual = synchronizer.getChangeListVersions().newsResourceVersion,
147152 )
153+
154+ // Notifier should have been called with new news resources
155+ assertEquals(
156+ expected = newsResourcesFromDb.map(NewsResource ::id).sorted(),
157+ actual = notifier.addedNewsResources.first().map(NewsResource ::id).sorted(),
158+ )
148159 }
149160
150161 @Test
@@ -186,6 +197,13 @@ class OfflineFirstNewsRepositoryTest {
186197 expected = network.latestChangeListVersion(CollectionType .NewsResources ),
187198 actual = synchronizer.getChangeListVersions().newsResourceVersion,
188199 )
200+
201+ // Notifier should have been called with news resources from network that are not
202+ // deleted
203+ assertEquals(
204+ expected = (newsResourcesFromNetwork.map(NewsResource ::id) - deletedItems).sorted(),
205+ actual = notifier.addedNewsResources.first().map(NewsResource ::id).sorted(),
206+ )
189207 }
190208
191209 @Test
@@ -225,6 +243,12 @@ class OfflineFirstNewsRepositoryTest {
225243 expected = changeList.last().changeListVersion,
226244 actual = synchronizer.getChangeListVersions().newsResourceVersion,
227245 )
246+
247+ // Notifier should have been called with only added news resources from network
248+ assertEquals(
249+ expected = newsResourcesFromNetwork.map(NewsResource ::id).sorted(),
250+ actual = notifier.addedNewsResources.first().map(NewsResource ::id).sorted(),
251+ )
228252 }
229253
230254 @Test
0 commit comments