For #3633: Add unit tests for SearchStore
parent
39fa62b22b
commit
e91a2e61a2
|
@ -163,7 +163,7 @@ class SearchFragment : Fragment(), BackHandler {
|
||||||
|
|
||||||
search_shortcuts_button.setOnClickListener {
|
search_shortcuts_button.setOnClickListener {
|
||||||
val isOpen = searchStore.state.showShortcutEnginePicker
|
val isOpen = searchStore.state.showShortcutEnginePicker
|
||||||
searchStore.dispatch(SearchAction.SearchShortcutEnginePicker(!isOpen))
|
searchStore.dispatch(SearchAction.ShowSearchShortcutEnginePicker(!isOpen))
|
||||||
|
|
||||||
if (isOpen) {
|
if (isOpen) {
|
||||||
requireComponents.analytics.metrics.track(Event.SearchShortcutMenuClosed)
|
requireComponents.analytics.metrics.track(Event.SearchShortcutMenuClosed)
|
||||||
|
|
|
@ -48,7 +48,7 @@ data class SearchState(
|
||||||
*/
|
*/
|
||||||
sealed class SearchAction : Action {
|
sealed class SearchAction : Action {
|
||||||
data class SearchShortcutEngineSelected(val engine: SearchEngine) : SearchAction()
|
data class SearchShortcutEngineSelected(val engine: SearchEngine) : SearchAction()
|
||||||
data class SearchShortcutEnginePicker(val show: Boolean) : SearchAction()
|
data class ShowSearchShortcutEnginePicker(val show: Boolean) : SearchAction()
|
||||||
data class UpdateQuery(val query: String) : SearchAction()
|
data class UpdateQuery(val query: String) : SearchAction()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ fun searchStateReducer(state: SearchState, action: SearchAction): SearchState {
|
||||||
searchEngineSource = SearchEngineSource.Shortcut(action.engine),
|
searchEngineSource = SearchEngineSource.Shortcut(action.engine),
|
||||||
showShortcutEnginePicker = false
|
showShortcutEnginePicker = false
|
||||||
)
|
)
|
||||||
is SearchAction.SearchShortcutEnginePicker ->
|
is SearchAction.ShowSearchShortcutEnginePicker ->
|
||||||
state.copy(showShortcutEnginePicker = action.show)
|
state.copy(showShortcutEnginePicker = action.show)
|
||||||
is SearchAction.UpdateQuery ->
|
is SearchAction.UpdateQuery ->
|
||||||
state.copy(query = action.query)
|
state.copy(query = action.query)
|
||||||
|
|
|
@ -0,0 +1,56 @@
|
||||||
|
/* 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 io.mockk.mockk
|
||||||
|
import kotlinx.coroutines.runBlocking
|
||||||
|
import mozilla.components.browser.search.SearchEngine
|
||||||
|
import org.junit.Assert.assertEquals
|
||||||
|
import org.junit.Assert.assertNotSame
|
||||||
|
import org.junit.Test
|
||||||
|
|
||||||
|
class SearchStoreTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun updateQuery() = runBlocking {
|
||||||
|
val initialState = emptyDefaultState()
|
||||||
|
val store = SearchStore(initialState, ::searchStateReducer)
|
||||||
|
val query = "test query"
|
||||||
|
|
||||||
|
store.dispatch(SearchAction.UpdateQuery(query)).join()
|
||||||
|
assertNotSame(initialState, store.state)
|
||||||
|
assertEquals(query, store.state.query)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun selectSearchShortcutEngine() = runBlocking {
|
||||||
|
val initialState = emptyDefaultState()
|
||||||
|
val store = SearchStore(initialState, ::searchStateReducer)
|
||||||
|
val searchEngine: SearchEngine = mockk()
|
||||||
|
|
||||||
|
store.dispatch(SearchAction.SearchShortcutEngineSelected(searchEngine)).join()
|
||||||
|
assertNotSame(initialState, store.state)
|
||||||
|
assertEquals(SearchEngineSource.Shortcut(searchEngine), store.state.searchEngineSource)
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun showSearchShortcutEnginePicker() = runBlocking {
|
||||||
|
val initialState = emptyDefaultState()
|
||||||
|
val store = SearchStore(initialState, ::searchStateReducer)
|
||||||
|
|
||||||
|
store.dispatch(SearchAction.ShowSearchShortcutEnginePicker(true)).join()
|
||||||
|
assertNotSame(initialState, store.state)
|
||||||
|
assertEquals(true, store.state.showShortcutEnginePicker)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun emptyDefaultState(): SearchState = SearchState(
|
||||||
|
query = "",
|
||||||
|
searchEngineSource = mockk(),
|
||||||
|
showShortcutEnginePicker = false,
|
||||||
|
showSuggestions = false,
|
||||||
|
showVisitedSitesBookmarks = false,
|
||||||
|
session = null
|
||||||
|
)
|
||||||
|
}
|
Loading…
Reference in New Issue