From e91a2e61a214c57bf823ca5ab7bdd8ae0a4bb974 Mon Sep 17 00:00:00 2001 From: Christian Sadilek Date: Mon, 15 Jul 2019 12:39:56 -0400 Subject: [PATCH] For #3633: Add unit tests for SearchStore --- .../mozilla/fenix/search/SearchFragment.kt | 2 +- .../org/mozilla/fenix/search/SearchStore.kt | 4 +- .../mozilla/fenix/search/SearchStoreTest.kt | 56 +++++++++++++++++++ 3 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 app/src/test/java/org/mozilla/fenix/search/SearchStoreTest.kt diff --git a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt index 9a92eb3c3..14a338615 100644 --- a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt @@ -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) diff --git a/app/src/main/java/org/mozilla/fenix/search/SearchStore.kt b/app/src/main/java/org/mozilla/fenix/search/SearchStore.kt index ce90dd9f4..9c1c81c91 100644 --- a/app/src/main/java/org/mozilla/fenix/search/SearchStore.kt +++ b/app/src/main/java/org/mozilla/fenix/search/SearchStore.kt @@ -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) diff --git a/app/src/test/java/org/mozilla/fenix/search/SearchStoreTest.kt b/app/src/test/java/org/mozilla/fenix/search/SearchStoreTest.kt new file mode 100644 index 000000000..58b3e195e --- /dev/null +++ b/app/src/test/java/org/mozilla/fenix/search/SearchStoreTest.kt @@ -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 + ) +}