For #28013 - Display correct hint for topic specific search engine

Since the search engines are split into two categories, general and
topic specific, the hint for each category is different.
This commit is contained in:
DreVla 2022-11-29 15:17:45 +02:00 committed by mergify[bot]
parent 7e9b7b9279
commit 60e09709ff
2 changed files with 78 additions and 0 deletions

View File

@ -149,6 +149,13 @@ class ToolbarView(
Core.TABS_SEARCH_ENGINE_ID -> context.getString(R.string.tab_search_hint)
else -> context.getString(R.string.application_search_hint)
}
SearchEngine.Type.BUNDLED -> {
if (!searchEngine.isGeneral) {
context.getString(R.string.application_search_hint)
} else {
context.getString(R.string.search_hint)
}
}
else ->
context.getString(R.string.search_hint)
}

View File

@ -30,6 +30,7 @@ import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.mozilla.fenix.search.SearchEngineSource
import org.mozilla.fenix.search.SearchFragmentState
import org.mozilla.fenix.utils.Settings
import java.util.UUID
@RunWith(FenixRobolectricTestRunner::class)
class ToolbarViewTest {
@ -49,6 +50,7 @@ class ToolbarViewTest {
every { name } returns "Search Engine"
every { icon } returns testContext.getDrawable(R.drawable.ic_search)!!.toBitmap()
every { type } returns SearchEngine.Type.BUNDLED
every { isGeneral } returns true
},
),
defaultEngine = null,
@ -158,6 +160,67 @@ class ToolbarViewTest {
verify { editToolbar.setIcon(any(), "Search Engine") }
}
@Test
fun `GIVEN a general search engine is default WHEN a topic specific engine is selected THEN the hint changes`() {
val topicSpecificEngine = buildSearchEngine(SearchEngine.Type.BUNDLED, false)
val toolbarView = buildToolbarView(false)
toolbarView.update(defaultState)
assertEquals(context.getString(R.string.search_hint), toolbarView.view.edit.hint)
toolbarView.update(defaultState.copy(searchEngineSource = SearchEngineSource.Default(topicSpecificEngine)))
assertEquals(context.getString(R.string.application_search_hint), toolbarView.view.edit.hint)
}
@Test
fun `GIVEN a topic specific engine is default WHEN a general engine is selected THEN the hint changes`() {
val topicSpecificEngine = buildSearchEngine(SearchEngine.Type.BUNDLED, false)
val toolbarView = buildToolbarView(false)
toolbarView.update(defaultState.copy(searchEngineSource = SearchEngineSource.Default(topicSpecificEngine)))
assertEquals(context.getString(R.string.application_search_hint), toolbarView.view.edit.hint)
toolbarView.update(defaultState)
assertEquals(context.getString(R.string.search_hint), toolbarView.view.edit.hint)
}
@Test
fun `GIVEN a topic specific engine is default WHEN a custom engine is selected THEN the hint changes`() {
val topicSpecificEngine = buildSearchEngine(SearchEngine.Type.BUNDLED, false)
val customEngine = buildSearchEngine(SearchEngine.Type.CUSTOM, true)
val toolbarView = buildToolbarView(false)
toolbarView.update(defaultState.copy(searchEngineSource = SearchEngineSource.Default(topicSpecificEngine)))
assertEquals(context.getString(R.string.application_search_hint), toolbarView.view.edit.hint)
toolbarView.update(defaultState.copy(searchEngineSource = SearchEngineSource.Default(customEngine)))
assertEquals(context.getString(R.string.search_hint), toolbarView.view.edit.hint)
}
@Test
fun `GIVEN a general engine is default WHEN a custom engine is selected THEN the hint does not change`() {
val customEngine = buildSearchEngine(SearchEngine.Type.CUSTOM, true)
val toolbarView = buildToolbarView(false)
toolbarView.update(defaultState)
assertEquals(context.getString(R.string.search_hint), toolbarView.view.edit.hint)
toolbarView.update(defaultState.copy(searchEngineSource = SearchEngineSource.Default(customEngine)))
assertEquals(context.getString(R.string.search_hint), toolbarView.view.edit.hint)
}
@Test
fun `GIVEN a custom engine is default WHEN a general engine is selected THEN the hint does not change`() {
val customEngine = buildSearchEngine(SearchEngine.Type.CUSTOM, true)
val toolbarView = buildToolbarView(false)
toolbarView.update(defaultState.copy(searchEngineSource = SearchEngineSource.Default(customEngine)))
assertEquals(context.getString(R.string.search_hint), toolbarView.view.edit.hint)
toolbarView.update(defaultState)
assertEquals(context.getString(R.string.search_hint), toolbarView.view.edit.hint)
}
private fun buildToolbarView(isPrivate: Boolean) = ToolbarView(
context,
Settings(context),
@ -166,4 +229,12 @@ class ToolbarViewTest {
view = toolbar,
fromHomeFragment = false,
)
private fun buildSearchEngine(type: SearchEngine.Type, isGeneral: Boolean) = SearchEngine(
id = UUID.randomUUID().toString(),
name = "General",
icon = testContext.getDrawable(R.drawable.ic_search)!!.toBitmap(),
type = type,
isGeneral = isGeneral,
)
}