diff --git a/core/src/test/java/org/kiwix/kiwixmobile/core/page/bookmark/viewmodel/BookmarkViewModelTest.kt b/core/src/test/java/org/kiwix/kiwixmobile/core/page/bookmark/viewmodel/BookmarkViewModelTest.kt index 3881eabe5..c68c89f3b 100644 --- a/core/src/test/java/org/kiwix/kiwixmobile/core/page/bookmark/viewmodel/BookmarkViewModelTest.kt +++ b/core/src/test/java/org/kiwix/kiwixmobile/core/page/bookmark/viewmodel/BookmarkViewModelTest.kt @@ -25,6 +25,7 @@ import io.mockk.mockk import io.reactivex.plugins.RxJavaPlugins import io.reactivex.processors.PublishProcessor import io.reactivex.schedulers.Schedulers +import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith @@ -73,8 +74,8 @@ internal class BookmarkViewModelTest { } @Test - fun `Initial state is initialising a bookmark state`() { - viewModel.state.test().assertValue(bookmarkState()) + fun `Initial state returns initial state`() { + assertThat(viewModel.initialState()).isEqualTo(bookmarkState()) } @Test diff --git a/core/src/test/java/org/kiwix/kiwixmobile/core/page/history/viewmodel/HistoryStateTest.kt b/core/src/test/java/org/kiwix/kiwixmobile/core/page/history/viewmodel/HistoryStateTest.kt index da2dc5159..d79589991 100644 --- a/core/src/test/java/org/kiwix/kiwixmobile/core/page/history/viewmodel/HistoryStateTest.kt +++ b/core/src/test/java/org/kiwix/kiwixmobile/core/page/history/viewmodel/HistoryStateTest.kt @@ -26,21 +26,6 @@ import org.kiwix.kiwixmobile.core.page.historyState 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 internal fun `visiblePageItems returns history based on filter`() { val matchingItem = historyItem(historyTitle = "Title") diff --git a/core/src/test/java/org/kiwix/kiwixmobile/core/page/history/viewmodel/HistoryViewModelTest.kt b/core/src/test/java/org/kiwix/kiwixmobile/core/page/history/viewmodel/HistoryViewModelTest.kt index 2dc1111fc..0e96e8e3d 100644 --- a/core/src/test/java/org/kiwix/kiwixmobile/core/page/history/viewmodel/HistoryViewModelTest.kt +++ b/core/src/test/java/org/kiwix/kiwixmobile/core/page/history/viewmodel/HistoryViewModelTest.kt @@ -8,6 +8,7 @@ import io.reactivex.plugins.RxJavaPlugins import io.reactivex.processors.PublishProcessor import io.reactivex.schedulers.Schedulers import io.reactivex.schedulers.TestScheduler +import org.assertj.core.api.Assertions.assertThat import org.junit.jupiter.api.BeforeEach import org.junit.jupiter.api.Test import org.junit.jupiter.api.extension.ExtendWith @@ -57,8 +58,8 @@ internal class HistoryViewModelTest { } @Test - fun `Initial state is initialising a history state`() { - viewModel.state.test().assertValue(historyState()) + fun `Initial state returns initial state`() { + assertThat(viewModel.initialState()).isEqualTo(historyState()) } @Test diff --git a/core/src/test/java/org/kiwix/kiwixmobile/core/page/viewmodel/PageViewModelTest.kt b/core/src/test/java/org/kiwix/kiwixmobile/core/page/viewmodel/PageViewModelTest.kt index e3b487924..71a5ba29f 100644 --- a/core/src/test/java/org/kiwix/kiwixmobile/core/page/viewmodel/PageViewModelTest.kt +++ b/core/src/test/java/org/kiwix/kiwixmobile/core/page/viewmodel/PageViewModelTest.kt @@ -22,6 +22,8 @@ import com.jraska.livedata.test import io.mockk.clearAllMocks import io.mockk.every import io.mockk.mockk +import io.mockk.mockkObject +import io.mockk.verify import io.reactivex.plugins.RxJavaPlugins import io.reactivex.processors.PublishProcessor 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.pageState 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.reader.ZimReaderContainer import org.kiwix.kiwixmobile.core.search.viewmodel.effects.Finish @@ -78,18 +86,37 @@ internal class PageViewModelTest { 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 internal fun `OnItemClick selects item if one is selected`() { val page = PageImpl(isSelected = true) viewModel.state.postValue(TestablePageState(listOf(page))) - viewModel.actions.offer(Action.OnItemClick(page)) + viewModel.actions.offer(OnItemClick(page)) viewModel.state.test().assertValue(TestablePageState(listOf(PageImpl()))) } @Test internal fun `OnItemClick offers OpenPage if none is selected`() { 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)) viewModel.state.test().assertValue(TestablePageState(listOf(PageImpl()))) } @@ -98,7 +125,27 @@ internal class PageViewModelTest { internal fun `OnItemLongClick selects item if none is selected`() { val page = PageImpl() 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)))) } + + @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) + } + } }