1
0
Fork 0
fenix/app/src/test/java/org/mozilla/fenix/search/SearchInteractorTest.kt

157 lines
5.0 KiB
Kotlin
Raw Normal View History

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.search
import androidx.navigation.NavController
import androidx.navigation.NavDirections
import io.mockk.Runs
import io.mockk.every
import io.mockk.just
import io.mockk.mockk
import io.mockk.verify
import mozilla.components.browser.search.SearchEngine
import mozilla.components.browser.search.SearchEngineManager
import org.junit.Test
import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.ext.metrics
import org.mozilla.fenix.ext.searchEngineManager
class SearchInteractorTest {
@Test
fun onUrlCommitted() {
val context: HomeActivity = mockk()
val store: SearchStore = mockk()
val state: SearchState = mockk()
val searchEngineManager: SearchEngineManager = mockk(relaxed = true)
val searchEngine = SearchEngineSource.Default(mockk())
every { context.metrics } returns mockk(relaxed = true)
every { context.searchEngineManager } returns searchEngineManager
every { context.openToBrowserAndLoad(any(), any(), any(), any(), any(), any()) } just Runs
every { store.state } returns state
every { state.session } returns null
every { state.searchEngineSource } returns searchEngine
val interactor = SearchInteractor(context, mockk(), store)
interactor.onUrlCommitted("test")
verify {
context.openToBrowserAndLoad(
searchTermOrURL = "test",
newTab = true,
from = BrowserDirection.FromSearch,
engine = searchEngine.searchEngine
)
}
}
@Test
fun onEditingCanceled() {
val navController: NavController = mockk(relaxed = true)
val interactor = SearchInteractor(mockk(), navController, mockk())
interactor.onEditingCanceled()
verify {
navController.navigateUp()
}
}
@Test
fun onTextChanged() {
val store: SearchStore = mockk(relaxed = true)
val interactor = SearchInteractor(mockk(), mockk(), store)
interactor.onTextChanged("test")
verify { store.dispatch(SearchAction.UpdateQuery("test")) }
}
@Test
fun onUrlTapped() {
val context: HomeActivity = mockk()
val store: SearchStore = mockk()
val state: SearchState = mockk()
every { context.metrics } returns mockk(relaxed = true)
every { context.openToBrowserAndLoad(any(), any(), any()) } just Runs
every { store.state } returns state
every { state.session } returns null
val interactor = SearchInteractor(context, mockk(), store)
interactor.onUrlTapped("test")
verify {
context.openToBrowserAndLoad(
"test",
true,
BrowserDirection.FromSearch
)
}
}
@Test
fun onSearchTermsTapped() {
val context: HomeActivity = mockk()
val store: SearchStore = mockk()
val state: SearchState = mockk()
val searchEngineManager: SearchEngineManager = mockk(relaxed = true)
val searchEngine = SearchEngineSource.Default(mockk())
every { context.metrics } returns mockk(relaxed = true)
every { context.searchEngineManager } returns searchEngineManager
every { context.openToBrowserAndLoad(any(), any(), any(), any(), any(), any()) } just Runs
every { store.state } returns state
every { state.session } returns null
every { state.searchEngineSource } returns searchEngine
val interactor = SearchInteractor(context, mockk(), store)
interactor.onSearchTermsTapped("test")
verify { context.openToBrowserAndLoad(
searchTermOrURL = "test",
newTab = true,
from = BrowserDirection.FromSearch,
engine = searchEngine.searchEngine,
forceSearch = true
) }
}
@Test
fun onSearchShortcutEngineSelected() {
val context: HomeActivity = mockk(relaxed = true)
every { context.metrics } returns mockk(relaxed = true)
val store: SearchStore = mockk(relaxed = true)
val interactor = SearchInteractor(context, mockk(), store)
val searchEngine: SearchEngine = mockk(relaxed = true)
interactor.onSearchShortcutEngineSelected(searchEngine)
verify { store.dispatch(SearchAction.SearchShortcutEngineSelected(searchEngine)) }
}
@Test
fun onClickSearchEngineSettings() {
val navController: NavController = mockk()
val interactor = SearchInteractor(mockk(), navController, mockk())
every { navController.navigate(any() as NavDirections) } just Runs
interactor.onClickSearchEngineSettings()
verify {
navController.navigate(SearchFragmentDirections.actionSearchFragmentToSearchEngineFragment())
}
}
}