@@ -7,7 +7,9 @@ package org.mozilla.fenix.home.toolbar
77import androidx.navigation.NavController
88import androidx.navigation.NavDirections
99import androidx.navigation.NavOptions
10+ import io.mockk.Runs
1011import io.mockk.every
12+ import io.mockk.just
1113import io.mockk.mockk
1214import io.mockk.verify
1315import mozilla.components.browser.state.search.SearchEngine
@@ -22,11 +24,13 @@ import org.junit.Before
2224import org.junit.Rule
2325import org.junit.Test
2426import org.junit.runner.RunWith
25- import org.mozilla.fenix.BrowserDirection
27+ import org.mozilla.experiments.nimbus.NimbusEventStore
2628import org.mozilla.fenix.GleanMetrics.Events
27- import org.mozilla.fenix.HomeActivity
2829import org.mozilla.fenix.R
29- import org.mozilla.fenix.ext.settings
30+ import org.mozilla.fenix.components.AppStore
31+ import org.mozilla.fenix.components.NimbusComponents
32+ import org.mozilla.fenix.components.appstate.AppState
33+ import org.mozilla.fenix.components.usecases.FenixBrowserUseCases
3034import org.mozilla.fenix.helpers.FenixGleanTestRule
3135import org.mozilla.fenix.utils.Settings
3236import org.robolectric.RobolectricTestRunner
@@ -37,9 +41,17 @@ class DefaultToolbarControllerTest {
3741 @get:Rule
3842 val gleanTestRule = FenixGleanTestRule (testContext)
3943
40- private val activity : HomeActivity = mockk(relaxed = true )
44+ private val appStore : AppStore = mockk(relaxed = true )
4145 private val navController: NavController = mockk(relaxed = true )
4246 private val settings: Settings = mockk(relaxed = true )
47+ private val fenixBrowserUseCases: FenixBrowserUseCases = mockk(relaxed = true )
48+
49+ val nimbusEventsStore: NimbusEventStore = mockk {
50+ every { recordEvent(any()) } just Runs
51+ }
52+ private val nimbusComponents: NimbusComponents = mockk {
53+ every { events } returns nimbusEventsStore
54+ }
4355
4456 private val searchEngine = SearchEngine (
4557 id = " test" ,
@@ -61,10 +73,11 @@ class DefaultToolbarControllerTest {
6173 ),
6274 )
6375
76+ every { appStore.state } returns AppState ()
77+
6478 every { navController.currentDestination } returns mockk {
6579 every { id } returns R .id.homeFragment
6680 }
67- every { activity.settings() } returns settings
6881 }
6982
7083 @Test
@@ -76,11 +89,12 @@ class DefaultToolbarControllerTest {
7689 createController().handlePasteAndGo(clipboardText)
7790
7891 verify {
79- activity.openToBrowserAndLoad(
92+ navController.navigate(R .id.browserFragment)
93+ fenixBrowserUseCases.loadUrlOrSearch(
8094 searchTermOrURL = clipboardText,
8195 newTab = true ,
82- from = BrowserDirection . FromHome ,
83- engine = searchEngine,
96+ private = false ,
97+ searchEngine = searchEngine,
8498 )
8599 }
86100
@@ -90,11 +104,50 @@ class DefaultToolbarControllerTest {
90104 createController().handlePasteAndGo(clipboardText)
91105
92106 verify {
93- activity.openToBrowserAndLoad(
107+ navController.navigate(R .id.browserFragment)
108+ fenixBrowserUseCases.loadUrlOrSearch(
94109 searchTermOrURL = clipboardText,
95110 newTab = true ,
96- from = BrowserDirection .FromHome ,
97- engine = searchEngine,
111+ private = false ,
112+ searchEngine = searchEngine,
113+ )
114+ }
115+
116+ assertNotNull(Events .enteredUrl.testGetValue())
117+ }
118+
119+ @Test
120+ fun `GIVEN homepage as a new tab is enabled WHEN Paste & Go toolbar menu is clicked THEN open the browser with the clipboard text as the search term` () {
121+ every { settings.enableHomepageAsNewTab } returns true
122+
123+ assertNull(Events .enteredUrl.testGetValue())
124+ assertNull(Events .performedSearch.testGetValue())
125+
126+ var clipboardText = " text"
127+ createController().handlePasteAndGo(clipboardText)
128+
129+ verify {
130+ navController.navigate(R .id.browserFragment)
131+ fenixBrowserUseCases.loadUrlOrSearch(
132+ searchTermOrURL = clipboardText,
133+ newTab = false ,
134+ private = false ,
135+ searchEngine = searchEngine,
136+ )
137+ }
138+
139+ assertNotNull(Events .performedSearch.testGetValue())
140+
141+ clipboardText = " https://mozilla.org"
142+ createController().handlePasteAndGo(clipboardText)
143+
144+ verify {
145+ navController.navigate(R .id.browserFragment)
146+ fenixBrowserUseCases.loadUrlOrSearch(
147+ searchTermOrURL = clipboardText,
148+ newTab = false ,
149+ private = false ,
150+ searchEngine = searchEngine,
98151 )
99152 }
100153
@@ -134,8 +187,11 @@ class DefaultToolbarControllerTest {
134187 }
135188
136189 private fun createController () = DefaultToolbarController (
137- activity = activity,
138- store = store,
190+ appStore = appStore,
191+ browserStore = store,
192+ nimbusComponents = nimbusComponents,
139193 navController = navController,
194+ settings = settings,
195+ fenixBrowserUseCases = fenixBrowserUseCases,
140196 )
141197}
0 commit comments