Skip to content

Commit 47f93ef

Browse files
authored
Merge pull request #1400 from hiroaki404/test/improve_bookmark_viewmodel_coverage
improve BookmarksViewModelTest coverage
2 parents 69f11b9 + 5b99313 commit 47f93ef

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

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

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,9 @@ import org.junit.Before
3131
import org.junit.Rule
3232
import org.junit.Test
3333
import kotlin.test.assertEquals
34+
import kotlin.test.assertFalse
3435
import kotlin.test.assertIs
36+
import kotlin.test.assertTrue
3537

3638
/**
3739
* To learn more about how this test handles Flows created with stateIn, see
@@ -86,5 +88,49 @@ class BookmarksViewModelTest {
8688
val item = viewModel.feedUiState.value
8789
assertIs<Success>(item)
8890
assertEquals(item.feed.size, 0)
91+
assertTrue(viewModel.shouldDisplayUndoBookmark)
92+
}
93+
94+
@Test
95+
fun feedUiState_resourceIsViewed_setResourcesViewed() = runTest {
96+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedUiState.collect() }
97+
98+
// Given
99+
newsRepository.sendNewsResources(newsResourcesTestData)
100+
userDataRepository.setNewsResourceBookmarked(newsResourcesTestData[0].id, true)
101+
val itemBeforeViewed = viewModel.feedUiState.value
102+
assertIs<Success>(itemBeforeViewed)
103+
assertFalse(itemBeforeViewed.feed.first().hasBeenViewed)
104+
105+
// When
106+
viewModel.setNewsResourceViewed(newsResourcesTestData[0].id, true)
107+
108+
// Then
109+
val item = viewModel.feedUiState.value
110+
assertIs<Success>(item)
111+
assertTrue(item.feed.first().hasBeenViewed)
112+
}
113+
114+
@Test
115+
fun feedUiState_undoneBookmarkRemoval_bookmarkIsRestored() = runTest {
116+
backgroundScope.launch(UnconfinedTestDispatcher()) { viewModel.feedUiState.collect() }
117+
118+
// Given
119+
newsRepository.sendNewsResources(newsResourcesTestData)
120+
userDataRepository.setNewsResourceBookmarked(newsResourcesTestData[0].id, true)
121+
viewModel.removeFromSavedResources(newsResourcesTestData[0].id)
122+
assertTrue(viewModel.shouldDisplayUndoBookmark)
123+
val itemBeforeUndo = viewModel.feedUiState.value
124+
assertIs<Success>(itemBeforeUndo)
125+
assertEquals(0, itemBeforeUndo.feed.size)
126+
127+
// When
128+
viewModel.undoBookmarkRemoval()
129+
130+
// Then
131+
assertFalse(viewModel.shouldDisplayUndoBookmark)
132+
val item = viewModel.feedUiState.value
133+
assertIs<Success>(item)
134+
assertEquals(1, item.feed.size)
89135
}
90136
}

0 commit comments

Comments
 (0)