1
0
Fork 0

For #3633: Add unit tests for SearchStore

master
Christian Sadilek 2019-07-15 12:39:56 -04:00
parent 39fa62b22b
commit e91a2e61a2
3 changed files with 59 additions and 3 deletions

View File

@ -163,7 +163,7 @@ class SearchFragment : Fragment(), BackHandler {
search_shortcuts_button.setOnClickListener {
val isOpen = searchStore.state.showShortcutEnginePicker
searchStore.dispatch(SearchAction.SearchShortcutEnginePicker(!isOpen))
searchStore.dispatch(SearchAction.ShowSearchShortcutEnginePicker(!isOpen))
if (isOpen) {
requireComponents.analytics.metrics.track(Event.SearchShortcutMenuClosed)

View File

@ -48,7 +48,7 @@ data class SearchState(
*/
sealed class SearchAction : Action {
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()
}
@ -62,7 +62,7 @@ fun searchStateReducer(state: SearchState, action: SearchAction): SearchState {
searchEngineSource = SearchEngineSource.Shortcut(action.engine),
showShortcutEnginePicker = false
)
is SearchAction.SearchShortcutEnginePicker ->
is SearchAction.ShowSearchShortcutEnginePicker ->
state.copy(showShortcutEnginePicker = action.show)
is SearchAction.UpdateQuery ->
state.copy(query = action.query)

View File

@ -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
)
}