Skip to content

Commit f42afb5

Browse files
authored
Merge pull request #1585 from saeedishayan76/change-unitTest
change collectJob to backgroundScope coroutine
2 parents 4699fa9 + 987e87f commit f42afb5

File tree

6 files changed

+33
-106
lines changed

6 files changed

+33
-106
lines changed

feature/bookmarks/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/bookmarks/BookmarksViewModelTest.kt

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -64,20 +64,18 @@ class BookmarksViewModelTest {
6464

6565
@Test
6666
fun oneBookmark_showsInFeed() = runTest {
67-
val collectJob = launch(UnconfinedTestDispatcher()) { viewModel.feedUiState.collect() }
67+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedUiState.collect() }
6868

6969
newsRepository.sendNewsResources(newsResourcesTestData)
7070
userDataRepository.setNewsResourceBookmarked(newsResourcesTestData[0].id, true)
7171
val item = viewModel.feedUiState.value
7272
assertIs<Success>(item)
7373
assertEquals(item.feed.size, 1)
74-
75-
collectJob.cancel()
7674
}
7775

7876
@Test
7977
fun oneBookmark_whenRemoving_removesFromFeed() = runTest {
80-
val collectJob = launch(UnconfinedTestDispatcher()) { viewModel.feedUiState.collect() }
78+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedUiState.collect() }
8179
// Set the news resources to be used by this test
8280
newsRepository.sendNewsResources(newsResourcesTestData)
8381
// Start with the resource saved
@@ -88,7 +86,5 @@ class BookmarksViewModelTest {
8886
val item = viewModel.feedUiState.value
8987
assertIs<Success>(item)
9088
assertEquals(item.feed.size, 0)
91-
92-
collectJob.cancel()
9389
}
9490
}

feature/foryou/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/foryou/ForYouViewModelTest.kt

Lines changed: 18 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -98,9 +98,8 @@ class ForYouViewModelTest {
9898

9999
@Test
100100
fun stateIsLoadingWhenFollowedTopicsAreLoading() = runTest {
101-
val collectJob1 =
102-
launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() }
103-
val collectJob2 = launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() }
101+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() }
102+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() }
104103

105104
topicsRepository.sendTopics(sampleTopics)
106105

@@ -109,31 +108,24 @@ class ForYouViewModelTest {
109108
viewModel.onboardingUiState.value,
110109
)
111110
assertEquals(NewsFeedUiState.Loading, viewModel.feedState.value)
112-
113-
collectJob1.cancel()
114-
collectJob2.cancel()
115111
}
116112

117113
@Test
118114
fun stateIsLoadingWhenAppIsSyncingWithNoInterests() = runTest {
119115
syncManager.setSyncing(true)
120116

121-
val collectJob =
122-
launch(UnconfinedTestDispatcher()) { viewModel.isSyncing.collect() }
117+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.isSyncing.collect() }
123118

124119
assertEquals(
125120
true,
126121
viewModel.isSyncing.value,
127122
)
128-
129-
collectJob.cancel()
130123
}
131124

132125
@Test
133126
fun onboardingStateIsLoadingWhenTopicsAreLoading() = runTest {
134-
val collectJob1 =
135-
launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() }
136-
val collectJob2 = launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() }
127+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() }
128+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() }
137129

138130
userDataRepository.setFollowedTopicIds(emptySet())
139131

@@ -142,16 +134,12 @@ class ForYouViewModelTest {
142134
viewModel.onboardingUiState.value,
143135
)
144136
assertEquals(NewsFeedUiState.Success(emptyList()), viewModel.feedState.value)
145-
146-
collectJob1.cancel()
147-
collectJob2.cancel()
148137
}
149138

150139
@Test
151140
fun onboardingIsShownWhenNewsResourcesAreLoading() = runTest {
152-
val collectJob1 =
153-
launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() }
154-
val collectJob2 = launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() }
141+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() }
142+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() }
155143

156144
topicsRepository.sendTopics(sampleTopics)
157145
userDataRepository.setFollowedTopicIds(emptySet())
@@ -202,16 +190,12 @@ class ForYouViewModelTest {
202190
),
203191
viewModel.feedState.value,
204192
)
205-
206-
collectJob1.cancel()
207-
collectJob2.cancel()
208193
}
209194

210195
@Test
211196
fun onboardingIsShownAfterLoadingEmptyFollowedTopics() = runTest {
212-
val collectJob1 =
213-
launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() }
214-
val collectJob2 = launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() }
197+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() }
198+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() }
215199

216200
topicsRepository.sendTopics(sampleTopics)
217201
userDataRepository.setFollowedTopicIds(emptySet())
@@ -263,16 +247,12 @@ class ForYouViewModelTest {
263247
),
264248
viewModel.feedState.value,
265249
)
266-
267-
collectJob1.cancel()
268-
collectJob2.cancel()
269250
}
270251

271252
@Test
272253
fun onboardingIsNotShownAfterUserDismissesOnboarding() = runTest {
273-
val collectJob1 =
274-
launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() }
275-
val collectJob2 = launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() }
254+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() }
255+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() }
276256

277257
topicsRepository.sendTopics(sampleTopics)
278258

@@ -299,16 +279,12 @@ class ForYouViewModelTest {
299279
),
300280
viewModel.feedState.value,
301281
)
302-
303-
collectJob1.cancel()
304-
collectJob2.cancel()
305282
}
306283

307284
@Test
308285
fun topicSelectionUpdatesAfterSelectingTopic() = runTest {
309-
val collectJob1 =
310-
launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() }
311-
val collectJob2 = launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() }
286+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() }
287+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() }
312288

313289
topicsRepository.sendTopics(sampleTopics)
314290
userDataRepository.setFollowedTopicIds(emptySet())
@@ -352,16 +328,12 @@ class ForYouViewModelTest {
352328
),
353329
viewModel.feedState.value,
354330
)
355-
356-
collectJob1.cancel()
357-
collectJob2.cancel()
358331
}
359332

360333
@Test
361334
fun topicSelectionUpdatesAfterUnselectingTopic() = runTest {
362-
val collectJob1 =
363-
launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() }
364-
val collectJob2 = launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() }
335+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() }
336+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() }
365337

366338
topicsRepository.sendTopics(sampleTopics)
367339
userDataRepository.setFollowedTopicIds(emptySet())
@@ -416,16 +388,12 @@ class ForYouViewModelTest {
416388
),
417389
viewModel.feedState.value,
418390
)
419-
420-
collectJob1.cancel()
421-
collectJob2.cancel()
422391
}
423392

424393
@Test
425394
fun newsResourceSelectionUpdatesAfterLoadingFollowedTopics() = runTest {
426-
val collectJob1 =
427-
launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() }
428-
val collectJob2 = launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() }
395+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.onboardingUiState.collect() }
396+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedState.collect() }
429397

430398
val followedTopicIds = setOf("1")
431399
val userData = emptyUserData.copy(
@@ -460,15 +428,11 @@ class ForYouViewModelTest {
460428
),
461429
viewModel.feedState.value,
462430
)
463-
464-
collectJob1.cancel()
465-
collectJob2.cancel()
466431
}
467432

468433
@Test
469434
fun deepLinkedNewsResourceIsFetchedAndResetAfterViewing() = runTest {
470-
val collectJob =
471-
launch(UnconfinedTestDispatcher()) { viewModel.deepLinkedNewsResource.collect() }
435+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.deepLinkedNewsResource.collect() }
472436

473437
newsRepository.sendNewsResources(sampleNewsResources)
474438
userDataRepository.setUserData(emptyUserData)
@@ -503,8 +467,6 @@ class ForYouViewModelTest {
503467
),
504468
),
505469
)
506-
507-
collectJob.cancel()
508470
}
509471

510472
@Test

feature/interests/src/test/kotlin/com/google/samples/apps/nowinandroid/interests/InterestsViewModelTest.kt

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -80,17 +80,15 @@ class InterestsViewModelTest {
8080

8181
@Test
8282
fun uiState_whenFollowedTopicsAreLoading_thenShowLoading() = runTest {
83-
val collectJob = launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() }
83+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() }
8484

8585
userDataRepository.setFollowedTopicIds(emptySet())
8686
assertEquals(InterestsUiState.Loading, viewModel.uiState.value)
87-
88-
collectJob.cancel()
8987
}
9088

9189
@Test
9290
fun uiState_whenFollowingNewTopic_thenShowUpdatedTopics() = runTest {
93-
val collectJob = launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() }
91+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() }
9492

9593
val toggleTopicId = testOutputTopics[1].topic.id
9694
topicsRepository.sendTopics(testInputTopics.map { it.topic })
@@ -114,13 +112,11 @@ class InterestsViewModelTest {
114112
),
115113
viewModel.uiState.value,
116114
)
117-
118-
collectJob.cancel()
119115
}
120116

121117
@Test
122118
fun uiState_whenUnfollowingTopics_thenShowUpdatedTopics() = runTest {
123-
val collectJob = launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() }
119+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.uiState.collect() }
124120

125121
val toggleTopicId = testOutputTopics[1].topic.id
126122

@@ -147,8 +143,6 @@ class InterestsViewModelTest {
147143
),
148144
viewModel.uiState.value,
149145
)
150-
151-
collectJob.cancel()
152146
}
153147
}
154148

feature/search/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/search/SearchViewModelTest.kt

Lines changed: 4 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -85,53 +85,41 @@ class SearchViewModelTest {
8585
fun stateIsEmptyQuery_withEmptySearchQuery() = runTest {
8686
searchContentsRepository.addNewsResources(newsResourcesTestData)
8787
searchContentsRepository.addTopics(topicsTestData)
88-
val collectJob =
89-
launch(UnconfinedTestDispatcher()) { viewModel.searchResultUiState.collect() }
88+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.searchResultUiState.collect() }
9089

9190
viewModel.onSearchQueryChanged("")
9291

9392
assertEquals(EmptyQuery, viewModel.searchResultUiState.value)
94-
95-
collectJob.cancel()
9693
}
9794

9895
@Test
9996
fun emptyResultIsReturned_withNotMatchingQuery() = runTest {
100-
val collectJob =
101-
launch(UnconfinedTestDispatcher()) { viewModel.searchResultUiState.collect() }
97+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.searchResultUiState.collect() }
10298

10399
viewModel.onSearchQueryChanged("XXX")
104100
searchContentsRepository.addNewsResources(newsResourcesTestData)
105101
searchContentsRepository.addTopics(topicsTestData)
106102

107103
val result = viewModel.searchResultUiState.value
108104
assertIs<SearchResultUiState.Success>(result)
109-
110-
collectJob.cancel()
111105
}
112106

113107
@Test
114108
fun recentSearches_verifyUiStateIsSuccess() = runTest {
115-
val collectJob =
116-
launch(UnconfinedTestDispatcher()) { viewModel.recentSearchQueriesUiState.collect() }
109+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.recentSearchQueriesUiState.collect() }
117110
viewModel.onSearchTriggered("kotlin")
118111

119112
val result = viewModel.recentSearchQueriesUiState.value
120113
assertIs<Success>(result)
121-
122-
collectJob.cancel()
123114
}
124115

125116
@Test
126117
fun searchNotReady_withNoFtsTableEntity() = runTest {
127-
val collectJob =
128-
launch(UnconfinedTestDispatcher()) { viewModel.searchResultUiState.collect() }
118+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.searchResultUiState.collect() }
129119

130120
viewModel.onSearchQueryChanged("")
131121

132122
assertEquals(SearchNotReady, viewModel.searchResultUiState.value)
133-
134-
collectJob.cancel()
135123
}
136124

137125
@Test

feature/settings/src/test/kotlin/com/google/samples/apps/nowinandroid/feature/settings/SettingsViewModelTest.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,7 @@ class SettingsViewModelTest {
5252

5353
@Test
5454
fun stateIsSuccessAfterUserDataLoaded() = runTest {
55-
val collectJob =
56-
launch(UnconfinedTestDispatcher()) { viewModel.settingsUiState.collect() }
55+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.settingsUiState.collect() }
5756

5857
userDataRepository.setThemeBrand(ANDROID)
5958
userDataRepository.setDarkThemeConfig(DARK)
@@ -68,7 +67,5 @@ class SettingsViewModelTest {
6867
),
6968
viewModel.settingsUiState.value,
7069
)
71-
72-
collectJob.cancel()
7370
}
7471
}

0 commit comments

Comments
 (0)