From 717b999ad323114140118ea5fde5779073e32e86 Mon Sep 17 00:00:00 2001 From: mike a Date: Wed, 5 Jul 2023 16:46:55 +0900 Subject: [PATCH] =?UTF-8?q?Bug=201826470=20=E2=80=93=20fixed=20an=20edge?= =?UTF-8?q?=20case=20when=20cached=20values=20affected=20unified=20search?= =?UTF-8?q?=20feature?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../fenix/search/SearchFragmentStore.kt | 3 +- .../fenix/search/SearchFragmentStoreTest.kt | 174 ++++++++++++++++++ 2 files changed, 176 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/mozilla/fenix/search/SearchFragmentStore.kt b/app/src/main/java/org/mozilla/fenix/search/SearchFragmentStore.kt index a508b781d..57f5a7243 100644 --- a/app/src/main/java/org/mozilla/fenix/search/SearchFragmentStore.kt +++ b/app/src/main/java/org/mozilla/fenix/search/SearchFragmentStore.kt @@ -261,7 +261,8 @@ private fun searchStateReducer(state: SearchFragmentState, action: SearchFragmen state.copy( searchEngineSource = SearchEngineSource.Default(action.engine), showSearchSuggestions = shouldShowSearchSuggestions(action.browsingMode, action.settings), - showSearchShortcuts = action.settings.shouldShowSearchShortcuts, + showSearchShortcuts = action.settings.shouldShowSearchShortcuts && + !action.settings.showUnifiedSearchFeature, showClipboardSuggestions = action.settings.shouldShowClipboardSuggestions, showSearchTermHistory = action.settings.showUnifiedSearchFeature && action.settings.shouldShowHistorySuggestions, diff --git a/app/src/test/java/org/mozilla/fenix/search/SearchFragmentStoreTest.kt b/app/src/test/java/org/mozilla/fenix/search/SearchFragmentStoreTest.kt index 6c033db7d..2847305c4 100644 --- a/app/src/test/java/org/mozilla/fenix/search/SearchFragmentStoreTest.kt +++ b/app/src/test/java/org/mozilla/fenix/search/SearchFragmentStoreTest.kt @@ -177,6 +177,180 @@ class SearchFragmentStoreTest { assertEquals(query, store.state.query) } + @Test + fun `GIVEN search shortcuts are disabled and unified search is enabled in settings WHEN the default search engine is selected THEN search shortcuts are not displayed`() = runTest { + val initialState = emptyDefaultState(showHistorySuggestionsForCurrentEngine = false) + val store = SearchFragmentStore(initialState) + every { settings.showUnifiedSearchFeature } returns true + every { settings.shouldShowSearchShortcuts } returns false + + store.dispatch( + SearchFragmentAction.SearchDefaultEngineSelected( + engine = searchEngine, + browsingMode = BrowsingMode.Normal, + settings = settings, + ), + ).join() + + assertNotSame(initialState, store.state) + assertFalse(store.state.showSearchShortcuts) + } + + @Test + fun `GIVEN search shortcuts are enabled and unified search is disabled in settings WHEN the default search engine is selected THEN search shortcuts are displayed`() = runTest { + val initialState = emptyDefaultState(showHistorySuggestionsForCurrentEngine = false) + val store = SearchFragmentStore(initialState) + every { settings.showUnifiedSearchFeature } returns false + every { settings.shouldShowSearchShortcuts } returns true + + store.dispatch( + SearchFragmentAction.SearchDefaultEngineSelected( + engine = searchEngine, + browsingMode = BrowsingMode.Normal, + settings = settings, + ), + ).join() + + assertNotSame(initialState, store.state) + assertTrue(store.state.showSearchShortcuts) + } + + @Test + fun `GIVEN search shortcuts and unified search are both enabled in settings WHEN the default search engine is selected THEN search shortcuts are not displayed`() = runTest { + val initialState = emptyDefaultState(showHistorySuggestionsForCurrentEngine = false) + val store = SearchFragmentStore(initialState) + every { settings.showUnifiedSearchFeature } returns true + every { settings.shouldShowSearchShortcuts } returns true + + store.dispatch( + SearchFragmentAction.SearchDefaultEngineSelected( + engine = searchEngine, + browsingMode = BrowsingMode.Normal, + settings = settings, + ), + ).join() + + assertNotSame(initialState, store.state) + assertFalse(store.state.showSearchShortcuts) + } + + @Test + fun `GIVEN search shortcuts and unified search are both disabled in settings WHEN the default search engine is selected THEN search shortcuts are not displayed`() = runTest { + val initialState = emptyDefaultState(showHistorySuggestionsForCurrentEngine = false) + val store = SearchFragmentStore(initialState) + every { settings.showUnifiedSearchFeature } returns true + every { settings.shouldShowSearchShortcuts } returns true + + store.dispatch( + SearchFragmentAction.SearchDefaultEngineSelected( + engine = searchEngine, + browsingMode = BrowsingMode.Normal, + settings = settings, + ), + ).join() + + assertNotSame(initialState, store.state) + assertFalse(store.state.showSearchShortcuts) + } + + // non default tests + + @Test + fun `GIVEN search shortcuts are disabled and unified search is enabled in settings WHEN the search engine shortcut is selected THEN search shortcuts are not displayed`() = runTest { + val initialState = emptyDefaultState(showHistorySuggestionsForCurrentEngine = false) + val store = SearchFragmentStore(initialState) + every { settings.shouldShowSearchShortcuts } returns false + every { settings.showUnifiedSearchFeature } returns true + + val newEngine: SearchEngine = mockk { + every { id } returns "DuckDuckGo" + every { isGeneral } returns true + } + + store.dispatch( + SearchFragmentAction.SearchShortcutEngineSelected( + engine = newEngine, + browsingMode = BrowsingMode.Normal, + settings = settings, + ), + ).join() + + assertNotSame(initialState, store.state) + assertFalse(store.state.showSearchShortcuts) + } + + @Test + fun `GIVEN search shortcuts are enabled and unified search is disabled in settings WHEN the search engine shortcut is selected THEN search shortcuts are displayed`() = runTest { + val initialState = emptyDefaultState(showHistorySuggestionsForCurrentEngine = false) + val store = SearchFragmentStore(initialState) + every { settings.shouldShowSearchShortcuts } returns true + every { settings.showUnifiedSearchFeature } returns false + + val newEngine: SearchEngine = mockk { + every { id } returns "DuckDuckGo" + every { isGeneral } returns true + } + + store.dispatch( + SearchFragmentAction.SearchDefaultEngineSelected( + engine = newEngine, + browsingMode = BrowsingMode.Normal, + settings = settings, + ), + ).join() + + assertNotSame(initialState, store.state) + assertTrue(store.state.showSearchShortcuts) + } + + @Test + fun `GIVEN search shortcuts and unified search are both enabled in settings WHEN the search engine shortcut is selected THEN search shortcuts are not displayed`() = runTest { + val initialState = emptyDefaultState(showHistorySuggestionsForCurrentEngine = false) + val store = SearchFragmentStore(initialState) + every { settings.shouldShowSearchShortcuts } returns true + every { settings.showUnifiedSearchFeature } returns true + + val newEngine: SearchEngine = mockk { + every { id } returns "DuckDuckGo" + every { isGeneral } returns true + } + + store.dispatch( + SearchFragmentAction.SearchDefaultEngineSelected( + engine = newEngine, + browsingMode = BrowsingMode.Normal, + settings = settings, + ), + ).join() + + assertNotSame(initialState, store.state) + assertFalse(store.state.showSearchShortcuts) + } + + @Test + fun `GIVEN search shortcuts and unified search are both disabled in settings WHEN the search engine shortcut is selected THEN search shortcuts are not displayed`() = runTest { + val initialState = emptyDefaultState(showHistorySuggestionsForCurrentEngine = false) + val store = SearchFragmentStore(initialState) + every { settings.shouldShowSearchShortcuts } returns true + every { settings.showUnifiedSearchFeature } returns true + + val newEngine: SearchEngine = mockk { + every { id } returns "DuckDuckGo" + every { isGeneral } returns true + } + + store.dispatch( + SearchFragmentAction.SearchDefaultEngineSelected( + engine = newEngine, + browsingMode = BrowsingMode.Normal, + settings = settings, + ), + ).join() + + assertNotSame(initialState, store.state) + assertFalse(store.state.showSearchShortcuts) + } + @Test fun `WHEN the search engine is the default one THEN search suggestions providers are updated`() = runTest { val initialState = emptyDefaultState(showHistorySuggestionsForCurrentEngine = false)