#2154 updated historyviewmodel tests

This commit is contained in:
HissPirat 2020-07-22 15:04:18 +02:00
parent f5f404a860
commit 7ea60e6e3f

View File

@ -1,6 +1,5 @@
package org.kiwix.kiwixmobile.core.page.history.viewmodel
import com.jraska.livedata.test
import io.mockk.clearAllMocks
import io.mockk.every
import io.mockk.mockk
@ -18,11 +17,8 @@ import org.kiwix.kiwixmobile.core.page.history.viewmodel.effects.ShowDeleteHisto
import org.kiwix.kiwixmobile.core.page.history.viewmodel.effects.UpdateAllHistoryPreference
import org.kiwix.kiwixmobile.core.page.historyItem
import org.kiwix.kiwixmobile.core.page.historyState
import org.kiwix.kiwixmobile.core.page.viewmodel.Action.ExitActionModeMenu
import org.kiwix.kiwixmobile.core.page.viewmodel.Action.Filter
import org.kiwix.kiwixmobile.core.page.viewmodel.Action.UpdatePages
import org.kiwix.kiwixmobile.core.page.viewmodel.Action.UserClickedDeleteButton
import org.kiwix.kiwixmobile.core.page.viewmodel.Action.UserClickedDeleteSelectedPages
import org.kiwix.kiwixmobile.core.page.viewmodel.Action.UserClickedShowAllToggle
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer
import org.kiwix.kiwixmobile.core.utils.SharedPreferenceUtil
@ -63,46 +59,55 @@ internal class HistoryViewModelTest {
}
@Test
internal fun `ExitActionModeMenu deselects history items`() {
viewModel.state.postValue(historyState(historyItems = listOf(historyItem(isSelected = true))))
viewModel.actions.offer(ExitActionModeMenu)
viewModel.state.test().assertValue(
historyState(historyItems = listOf(historyItem(isSelected = false)))
fun `updatePagesBasedOnFilter returns state with searchTerm`() {
assertThat(viewModel.updatePagesBasedOnFilter(historyState(), Filter("searchTerm")))
.isEqualTo(
historyState(searchTerm = "searchTerm")
)
}
@Test
internal fun `UserClickedDeleteButton offers ShowDeleteHistoryDialog`() {
viewModel.effects.test().also { viewModel.actions.offer(UserClickedDeleteButton) }
.assertValue(ShowDeleteHistoryDialog(viewModel.effects, historyState(), historyDao))
viewModel.state.test().assertValue(historyState())
fun `updatePages return state with history items`() {
assertThat(viewModel.updatePages(historyState(), UpdatePages(listOf(historyItem())))).isEqualTo(
historyState(listOf(historyItem()))
)
}
@Test
internal fun `UserClickedDeleteSelectedHistoryItems offers ShowDeleteHistoryDialog`() {
viewModel.effects.test().also { viewModel.actions.offer(UserClickedDeleteSelectedPages) }
.assertValue(ShowDeleteHistoryDialog(viewModel.effects, historyState(), historyDao))
viewModel.state.test().assertValue(historyState())
fun `offerUpdateToShowAllToggle offers UpdateAllHistoryPreference`() {
viewModel.effects.test().also {
viewModel.offerUpdateToShowAllToggle(
UserClickedShowAllToggle(false), historyState()
)
}.assertValues(UpdateAllHistoryPreference(sharedPreferenceUtil, false))
}
@Test
internal fun `UserClickedShowAllToggle offers UpdateAllHistoryPreference`() {
viewModel.effects.test()
.also { viewModel.actions.offer(UserClickedShowAllToggle(false)) }
.assertValue(UpdateAllHistoryPreference(sharedPreferenceUtil, false))
viewModel.state.test().assertValue(historyState(showAll = false))
fun `offerUpdateToShowAllToggle returns state with showAll set to input value`() {
assertThat(
viewModel.offerUpdateToShowAllToggle(
UserClickedShowAllToggle(false),
historyState()
)
).isEqualTo(historyState(showAll = false))
}
@Test
fun `Filter updates search term`() {
val searchTerm = "searchTerm"
viewModel.actions.offer(Filter(searchTerm))
viewModel.state.test().assertValue(historyState(searchTerm = searchTerm))
fun `createDeletePageDialogEffect returns ShowDeleteHistoryDialog`() {
assertThat(viewModel.createDeletePageDialogEffect(historyState())).isEqualTo(
ShowDeleteHistoryDialog(viewModel.effects, historyState(), historyDao)
)
}
@Test
internal fun `UpdatePages updates history`() {
viewModel.actions.offer(UpdatePages(listOf(historyItem())))
viewModel.state.test().assertValue(historyState(listOf(historyItem())))
fun `deselectAllPages returns state with all pages deselected`() {
assertThat(viewModel.deselectAllPages(historyState(listOf(historyItem(isSelected = true)))))
.isEqualTo(historyState(listOf(historyItem(isSelected = false))))
}
@Test
fun `copyWithNewItems returns state with new items`() {
assertThat(viewModel.copyWithNewItems(historyState(), listOf(historyItem(isSelected = true))))
.isEqualTo(historyState(listOf(historyItem(isSelected = true))))
}
}