diff --git a/app/src/test/java/org/mozilla/fenix/library/history/HistoryControllerTest.kt b/app/src/test/java/org/mozilla/fenix/library/history/HistoryControllerTest.kt index ea03f239d3..a1f062fb5c 100644 --- a/app/src/test/java/org/mozilla/fenix/library/history/HistoryControllerTest.kt +++ b/app/src/test/java/org/mozilla/fenix/library/history/HistoryControllerTest.kt @@ -41,28 +41,7 @@ class HistoryControllerTest { private val resources: Resources = mockk(relaxed = true) private val snackbar: FenixSnackbar = mockk(relaxed = true) private val clipboardManager: ClipboardManager = mockk(relaxed = true) - private val openInBrowser: (HistoryItem) -> Unit = mockk(relaxed = true) - private val openAndShowTray: (HistoryItem, BrowsingMode) -> Unit = mockk(relaxed = true) - private val displayDeleteAll: () -> Unit = mockk(relaxed = true) - private val invalidateOptionsMenu: () -> Unit = mockk(relaxed = true) - private val deleteHistoryItems: (Set) -> Unit = mockk(relaxed = true) - private val syncHistory: suspend () -> Unit = mockk(relaxed = true) private val metrics: MetricController = mockk(relaxed = true) - private val controller = DefaultHistoryController( - store, - navController, - resources, - snackbar, - clipboardManager, - scope, - openInBrowser, - openAndShowTray, - displayDeleteAll, - invalidateOptionsMenu, - deleteHistoryItems, - syncHistory, - metrics - ) @Before fun setUp() { @@ -76,36 +55,45 @@ class HistoryControllerTest { @Test fun onPressHistoryItemInNormalMode() { + var actualHistoryItem: HistoryItem? = null + val controller = createController(openInBrowser = { + actualHistoryItem = it + }) controller.handleOpen(historyItem) - - verify { - openInBrowser(historyItem) - } + assertEquals(historyItem, actualHistoryItem) } @Test fun onOpenItemInNormalMode() { + var actualHistoryItem: HistoryItem? = null + var actualBrowsingMode: BrowsingMode? = null + val controller = createController(openAndShowTray = { historyItem, browsingMode -> + actualHistoryItem = historyItem + actualBrowsingMode = browsingMode + }) controller.handleOpenInNewTab(historyItem, BrowsingMode.Normal) - - verify { - openAndShowTray(historyItem, BrowsingMode.Normal) - } + assertEquals(historyItem, actualHistoryItem) + assertEquals(BrowsingMode.Normal, actualBrowsingMode) } @Test fun onOpenItemInPrivateMode() { + var actualHistoryItem: HistoryItem? = null + var actualBrowsingMode: BrowsingMode? = null + val controller = createController(openAndShowTray = { historyItem, browsingMode -> + actualHistoryItem = historyItem + actualBrowsingMode = browsingMode + }) controller.handleOpenInNewTab(historyItem, BrowsingMode.Private) - - verify { - openAndShowTray(historyItem, BrowsingMode.Private) - } + assertEquals(historyItem, actualHistoryItem) + assertEquals(BrowsingMode.Private, actualBrowsingMode) } @Test fun onPressHistoryItemInEditMode() { every { state.mode } returns HistoryFragmentState.Mode.Editing(setOf()) - controller.handleSelect(historyItem) + createController().handleSelect(historyItem) verify { store.dispatch(HistoryFragmentAction.AddItemForRemoval(historyItem)) @@ -116,7 +104,7 @@ class HistoryControllerTest { fun onPressSelectedHistoryItemInEditMode() { every { state.mode } returns HistoryFragmentState.Mode.Editing(setOf(historyItem)) - controller.handleDeselect(historyItem) + createController().handleDeselect(historyItem) verify { store.dispatch(HistoryFragmentAction.RemoveItemForRemoval(historyItem)) @@ -127,7 +115,7 @@ class HistoryControllerTest { fun onSelectHistoryItemDuringSync() { every { state.mode } returns HistoryFragmentState.Mode.Syncing - controller.handleSelect(historyItem) + createController().handleSelect(historyItem) verify(exactly = 0) { store.dispatch(HistoryFragmentAction.AddItemForRemoval(historyItem)) @@ -138,14 +126,14 @@ class HistoryControllerTest { fun onBackPressedInNormalMode() { every { state.mode } returns HistoryFragmentState.Mode.Normal - assertFalse(controller.handleBackPressed()) + assertFalse(createController().handleBackPressed()) } @Test fun onBackPressedInEditMode() { every { state.mode } returns HistoryFragmentState.Mode.Editing(setOf()) - assertTrue(controller.handleBackPressed()) + assertTrue(createController().handleBackPressed()) verify { store.dispatch(HistoryFragmentAction.ExitEditMode) } @@ -153,38 +141,43 @@ class HistoryControllerTest { @Test fun onModeSwitched() { - controller.handleModeSwitched() + var invalidateOptionsMenuInvoked = false + val controller = createController(invalidateOptionsMenu = { + invalidateOptionsMenuInvoked = true + }) - verify { - invalidateOptionsMenu.invoke() - } + controller.handleModeSwitched() + assertTrue(invalidateOptionsMenuInvoked) } @Test fun onDeleteAll() { - controller.handleDeleteAll() + var displayDeleteAllInvoked = false + val controller = createController(displayDeleteAll = { + displayDeleteAllInvoked = true + }) - verify { - displayDeleteAll.invoke() - } + controller.handleDeleteAll() + assertTrue(displayDeleteAllInvoked) } @Test fun onDeleteSome() { val itemsToDelete = setOf(historyItem) + var actualItems: Set? = null + val controller = createController(deleteHistoryItems = { items -> + actualItems = items + }) controller.handleDeleteSome(itemsToDelete) - - verify { - deleteHistoryItems(itemsToDelete) - } + assertEquals(itemsToDelete, actualItems) } @Test fun onCopyItem() { val clipdata = slot() - controller.handleCopyUrl(historyItem) + createController().handleCopyUrl(historyItem) verify { clipboardManager.setPrimaryClip(capture(clipdata)) @@ -198,7 +191,7 @@ class HistoryControllerTest { @Test @Suppress("UNCHECKED_CAST") fun onShareItem() { - controller.handleShare(historyItem) + createController().handleShare(historyItem) verify { navController.navigate(directionsEq( @@ -211,16 +204,42 @@ class HistoryControllerTest { @Test fun onRequestSync() { - controller.handleRequestSync() - - verify(exactly = 2) { - store.dispatch(any()) - } + var syncHistoryInvoked = false + createController(syncHistory = { + syncHistoryInvoked = true + }).handleRequestSync() coVerifyOrder { store.dispatch(HistoryFragmentAction.StartSync) - syncHistory.invoke() store.dispatch(HistoryFragmentAction.FinishSync) } + + assertTrue(syncHistoryInvoked) + } + + @Suppress("LongParameterList") + private fun createController( + openInBrowser: (HistoryItem) -> Unit = { _ -> }, + openAndShowTray: (HistoryItem, BrowsingMode) -> Unit = { _, _ -> }, + displayDeleteAll: () -> Unit = { }, + invalidateOptionsMenu: () -> Unit = { }, + deleteHistoryItems: (Set) -> Unit = { _ -> }, + syncHistory: suspend () -> Unit = { } + ): HistoryController { + return DefaultHistoryController( + store, + navController, + resources, + snackbar, + clipboardManager, + scope, + openInBrowser, + openAndShowTray, + displayDeleteAll, + invalidateOptionsMenu, + deleteHistoryItems, + syncHistory, + metrics + ) } }