From 651b2831fe2937e36290b2341a4a0f463cc0d472 Mon Sep 17 00:00:00 2001 From: Tiger Oakes Date: Thu, 11 Jun 2020 14:14:17 -0700 Subject: [PATCH] Fix tests in toolbar controller --- .../toolbar/BrowserToolbarController.kt | 15 +++----- .../DefaultBrowserToolbarControllerTest.kt | 37 +++++++++++++++---- 2 files changed, 36 insertions(+), 16 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt index 9d36bd094..6a79b1d9c 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/BrowserToolbarController.kt @@ -103,12 +103,12 @@ class DefaultBrowserToolbarController( override fun handleToolbarPasteAndGo(text: String) { if (text.isUrl()) { - activity.components.core.sessionManager.selectedSession?.searchTerms = "" + sessionManager.selectedSession?.searchTerms = "" activity.components.useCases.sessionUseCases.loadUrl.invoke(text) return } - activity.components.core.sessionManager.selectedSession?.searchTerms = text + sessionManager.selectedSession?.searchTerms = text activity.components.useCases.searchUseCases.defaultSearch.invoke(text) } @@ -139,20 +139,17 @@ class DefaultBrowserToolbarController( } override fun handleTabCounterItemInteraction(item: TabCounterMenuItem) { - val tabUseCases = activity.components.useCases.tabsUseCases when (item) { is TabCounterMenuItem.CloseTab -> { - activity.components.core.sessionManager.selectedSession?.let { + sessionManager.selectedSession?.let { // When closing the last tab we must show the undo snackbar in the home fragment - if (activity.components.core.sessionManager.sessionsOfType(it.private) - .count() == 1 - ) { + if (sessionManager.sessionsOfType(it.private).count() == 1) { // The tab tray always returns to normal mode so do that here too (activity as HomeActivity).browsingModeManager.mode = BrowsingMode.Normal navController.navigate(BrowserFragmentDirections.actionGlobalHome(it.id)) } else { onCloseTab.invoke(it) - tabUseCases.removeTab.invoke(it) + activity.components.useCases.tabsUseCases.removeTab.invoke(it) } } } @@ -285,7 +282,7 @@ class DefaultBrowserToolbarController( // Strip the CustomTabConfig to turn this Session into a regular tab and then select it customTabSession!!.customTabConfig = null - activity.components.core.sessionManager.select(customTabSession) + sessionManager.select(customTabSession) // Switch to the actual browser which should now display our new selected session activity.startActivity(openInFenixIntent) diff --git a/app/src/test/java/org/mozilla/fenix/components/toolbar/DefaultBrowserToolbarControllerTest.kt b/app/src/test/java/org/mozilla/fenix/components/toolbar/DefaultBrowserToolbarControllerTest.kt index 34086bdb3..636d96552 100644 --- a/app/src/test/java/org/mozilla/fenix/components/toolbar/DefaultBrowserToolbarControllerTest.kt +++ b/app/src/test/java/org/mozilla/fenix/components/toolbar/DefaultBrowserToolbarControllerTest.kt @@ -75,6 +75,7 @@ class DefaultBrowserToolbarControllerTest { private var analytics: Analytics = mockk(relaxed = true) private var navController: NavController = mockk(relaxed = true) private var findInPageLauncher: () -> Unit = mockk(relaxed = true) + private val sessionManager: SessionManager = mockk(relaxed = true) private val engineView: EngineView = mockk(relaxed = true) private val currentSession: Session = mockk(relaxed = true) private val openInFenixIntent: Intent = mockk(relaxed = true) @@ -115,7 +116,7 @@ class DefaultBrowserToolbarControllerTest { topSiteStorage = topSiteStorage, bookmarkTapped = mockk(), readerModeController = readerModeController, - sessionManager = mockk(), + sessionManager = sessionManager, sharedViewModel = mockk(), onTabCounterClicked = { }, onCloseTab = {} @@ -135,8 +136,9 @@ class DefaultBrowserToolbarControllerTest { every { analytics.metrics } returns metrics every { activity.components.useCases.sessionUseCases } returns sessionUseCases every { activity.components.useCases.searchUseCases } returns searchUseCases - every { activity.components.core.sessionManager.selectedSession } returns currentSession + every { activity.components.core.sessionManager } returns sessionManager every { activity.components.core.store } returns store + every { sessionManager.selectedSession } returns currentSession val onComplete = slot<() -> Unit>() every { browserAnimator.captureEngineViewAndDrawStatically(capture(onComplete)) } answers { onComplete.captured.invoke() } @@ -375,7 +377,7 @@ class DefaultBrowserToolbarControllerTest { topSiteStorage = topSiteStorage, bookmarkTapped = mockk(), readerModeController = mockk(), - sessionManager = mockk(), + sessionManager = sessionManager, sharedViewModel = mockk(), onTabCounterClicked = { }, onCloseTab = { } @@ -501,16 +503,14 @@ class DefaultBrowserToolbarControllerTest { topSiteStorage = topSiteStorage, bookmarkTapped = mockk(), readerModeController = mockk(), - sessionManager = mockk(), + sessionManager = sessionManager, sharedViewModel = mockk(), onTabCounterClicked = { }, onCloseTab = { } ) - val sessionManager: SessionManager = mockk(relaxed = true) val item = ToolbarMenu.Item.OpenInFenix - every { activity.components.core.sessionManager } returns sessionManager every { currentSession.customTabConfig } returns mockk() every { activity.startActivity(any()) } just Runs @@ -542,7 +542,7 @@ class DefaultBrowserToolbarControllerTest { topSiteStorage = topSiteStorage, bookmarkTapped = mockk(), readerModeController = mockk(), - sessionManager = mockk(), + sessionManager = sessionManager, sharedViewModel = mockk(), onTabCounterClicked = { }, onCloseTab = { } @@ -566,12 +566,35 @@ class DefaultBrowserToolbarControllerTest { verify { readerModeController.hideReaderView() } } + @Test + fun handleToolbarCloseTabPressWithLastPrivateSession() { + every { currentSession.id } returns "1" + val browsingModeManager = object : BrowsingModeManager { + override var mode = BrowsingMode.Private + } + val item = TabCounterMenuItem.CloseTab + val sessions = listOf( + mockk { + every { private } returns true + } + ) + + every { currentSession.private } returns true + every { sessionManager.sessions } returns sessions + every { activity.browsingModeManager } returns browsingModeManager + + controller.handleTabCounterItemInteraction(item) + verify { navController.navigate(BrowserFragmentDirections.actionGlobalHome("1")) } + assertEquals(BrowsingMode.Normal, browsingModeManager.mode) + } + @Test fun handleToolbarCloseTabPress() { val tabsUseCases: TabsUseCases = mockk(relaxed = true) val removeTabUseCase: TabsUseCases.RemoveTabUseCase = mockk(relaxed = true) val item = TabCounterMenuItem.CloseTab + every { sessionManager.sessions } returns emptyList() every { activity.components.useCases.tabsUseCases } returns tabsUseCases every { tabsUseCases.removeTab } returns removeTabUseCase