This commit is contained in:
HissPirat 2020-07-20 10:16:58 +02:00
parent 969cead41d
commit 56792111da
4 changed files with 56 additions and 22 deletions

View File

@ -25,6 +25,7 @@ import io.mockk.mockk
import io.reactivex.plugins.RxJavaPlugins import io.reactivex.plugins.RxJavaPlugins
import io.reactivex.processors.PublishProcessor import io.reactivex.processors.PublishProcessor
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith import org.junit.jupiter.api.extension.ExtendWith
@ -73,8 +74,8 @@ internal class BookmarkViewModelTest {
} }
@Test @Test
fun `Initial state is initialising a bookmark state`() { fun `Initial state returns initial state`() {
viewModel.state.test().assertValue(bookmarkState()) assertThat(viewModel.initialState()).isEqualTo(bookmarkState())
} }
@Test @Test

View File

@ -26,21 +26,6 @@ import org.kiwix.kiwixmobile.core.page.historyState
internal class HistoryStateTest { internal class HistoryStateTest {
@Test
internal fun `visiblePageItems returns history from all books when showAll is true`() {
val item = historyItem(isSelected = false)
assertThat(historyState(listOf(item), showAll = true).visiblePageItems)
.isEqualTo(listOf(DateItem(item.dateString), item))
}
@Test
internal fun `visiblePageItems returns history from current book when showAll is false`() {
val item1 = historyItem(isSelected = false, zimId = "id1")
val item2 = historyItem(isSelected = false, zimId = "id2")
assertThat(historyState(listOf(item1, item2), showAll = false, zimId = "id1").visiblePageItems)
.isEqualTo(listOf(DateItem(item1.dateString), item1))
}
@Test @Test
internal fun `visiblePageItems returns history based on filter`() { internal fun `visiblePageItems returns history based on filter`() {
val matchingItem = historyItem(historyTitle = "Title") val matchingItem = historyItem(historyTitle = "Title")

View File

@ -8,6 +8,7 @@ import io.reactivex.plugins.RxJavaPlugins
import io.reactivex.processors.PublishProcessor import io.reactivex.processors.PublishProcessor
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
import io.reactivex.schedulers.TestScheduler import io.reactivex.schedulers.TestScheduler
import org.assertj.core.api.Assertions.assertThat
import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import org.junit.jupiter.api.extension.ExtendWith import org.junit.jupiter.api.extension.ExtendWith
@ -57,8 +58,8 @@ internal class HistoryViewModelTest {
} }
@Test @Test
fun `Initial state is initialising a history state`() { fun `Initial state returns initial state`() {
viewModel.state.test().assertValue(historyState()) assertThat(viewModel.initialState()).isEqualTo(historyState())
} }
@Test @Test

View File

@ -22,6 +22,8 @@ import com.jraska.livedata.test
import io.mockk.clearAllMocks import io.mockk.clearAllMocks
import io.mockk.every import io.mockk.every
import io.mockk.mockk import io.mockk.mockk
import io.mockk.mockkObject
import io.mockk.verify
import io.reactivex.plugins.RxJavaPlugins import io.reactivex.plugins.RxJavaPlugins
import io.reactivex.processors.PublishProcessor import io.reactivex.processors.PublishProcessor
import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.Schedulers
@ -34,6 +36,12 @@ import org.kiwix.kiwixmobile.core.page.PageImpl
import org.kiwix.kiwixmobile.core.page.adapter.Page import org.kiwix.kiwixmobile.core.page.adapter.Page
import org.kiwix.kiwixmobile.core.page.pageState import org.kiwix.kiwixmobile.core.page.pageState
import org.kiwix.kiwixmobile.core.page.viewmodel.Action.Exit import org.kiwix.kiwixmobile.core.page.viewmodel.Action.Exit
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.OnItemClick
import org.kiwix.kiwixmobile.core.page.viewmodel.Action.OnItemLongClick
import org.kiwix.kiwixmobile.core.page.viewmodel.Action.UpdatePages
import org.kiwix.kiwixmobile.core.page.viewmodel.Action.UserClickedShowAllToggle
import org.kiwix.kiwixmobile.core.page.viewmodel.effects.OpenPage import org.kiwix.kiwixmobile.core.page.viewmodel.effects.OpenPage
import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer import org.kiwix.kiwixmobile.core.reader.ZimReaderContainer
import org.kiwix.kiwixmobile.core.search.viewmodel.effects.Finish import org.kiwix.kiwixmobile.core.search.viewmodel.effects.Finish
@ -78,18 +86,37 @@ internal class PageViewModelTest {
viewModel.state.test().assertValue(pageState()) viewModel.state.test().assertValue(pageState())
} }
@Test
fun `ExitActionModeMenu calls deslectAllPages`() {
mockkObject(viewModel)
viewModel.actions.offer(ExitActionModeMenu)
verify {
viewModel.deselectAllPages(pageState())
}
}
@Test
fun `UserClickedDeleteButton calls offerShowDeleteDialog`() {
mockkObject(viewModel)
val action = UserClickedShowAllToggle(true)
viewModel.actions.offer(action)
verify {
viewModel.offerUpdateToShowAllToggle(action, pageState())
}
}
@Test @Test
internal fun `OnItemClick selects item if one is selected`() { internal fun `OnItemClick selects item if one is selected`() {
val page = PageImpl(isSelected = true) val page = PageImpl(isSelected = true)
viewModel.state.postValue(TestablePageState(listOf(page))) viewModel.state.postValue(TestablePageState(listOf(page)))
viewModel.actions.offer(Action.OnItemClick(page)) viewModel.actions.offer(OnItemClick(page))
viewModel.state.test().assertValue(TestablePageState(listOf(PageImpl()))) viewModel.state.test().assertValue(TestablePageState(listOf(PageImpl())))
} }
@Test @Test
internal fun `OnItemClick offers OpenPage if none is selected`() { internal fun `OnItemClick offers OpenPage if none is selected`() {
viewModel.state.postValue(TestablePageState(listOf(PageImpl()))) viewModel.state.postValue(TestablePageState(listOf(PageImpl())))
viewModel.effects.test().also { viewModel.actions.offer(Action.OnItemClick(PageImpl())) } viewModel.effects.test().also { viewModel.actions.offer(OnItemClick(PageImpl())) }
.assertValue(OpenPage(PageImpl(), zimReaderContainer)) .assertValue(OpenPage(PageImpl(), zimReaderContainer))
viewModel.state.test().assertValue(TestablePageState(listOf(PageImpl()))) viewModel.state.test().assertValue(TestablePageState(listOf(PageImpl())))
} }
@ -98,7 +125,27 @@ internal class PageViewModelTest {
internal fun `OnItemLongClick selects item if none is selected`() { internal fun `OnItemLongClick selects item if none is selected`() {
val page = PageImpl() val page = PageImpl()
viewModel.state.postValue(TestablePageState(listOf(page))) viewModel.state.postValue(TestablePageState(listOf(page)))
viewModel.actions.offer(Action.OnItemLongClick(page)) viewModel.actions.offer(OnItemLongClick(page))
viewModel.state.test().assertValue(TestablePageState(listOf(PageImpl(isSelected = true)))) viewModel.state.test().assertValue(TestablePageState(listOf(PageImpl(isSelected = true))))
} }
@Test
fun `Filter calls updatePagesBasedOnFilter`() {
mockkObject(viewModel)
val action = Filter("filter")
viewModel.actions.offer(action)
verify {
viewModel.updatePagesBasedOnFilter(pageState(), action)
}
}
@Test
fun `UpdatePages calls updatePages`() {
mockkObject(viewModel)
val action = UpdatePages(emptyList())
viewModel.actions.offer(action)
verify {
viewModel.updatePages(pageState(), action)
}
}
} }