Skip to content

Commit 1e77eaf

Browse files
authored
trim user input on submission (#137)
1 parent 466be49 commit 1e77eaf

File tree

2 files changed

+18
-8
lines changed

2 files changed

+18
-8
lines changed

app/src/androidTest/java/com/duckduckgo/app/browser/BrowserViewModelTest.kt

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import android.arch.persistence.room.Room
2424
import android.net.Uri
2525
import android.support.test.InstrumentationRegistry
2626
import com.duckduckgo.app.autocomplete.api.AutoCompleteApi
27+
import com.duckduckgo.app.blockingObserve
2728
import com.duckduckgo.app.bookmarks.db.BookmarkEntity
2829
import com.duckduckgo.app.bookmarks.db.BookmarksDao
2930
import com.duckduckgo.app.bookmarks.ui.BookmarksActivity
@@ -45,7 +46,9 @@ import com.duckduckgo.app.settings.db.SettingsDataStore
4546
import com.duckduckgo.app.trackerdetection.model.TrackerNetwork
4647
import com.duckduckgo.app.trackerdetection.model.TrackerNetworks
4748
import com.duckduckgo.app.trackerdetection.model.TrackingEvent
49+
import com.nhaarman.mockito_kotlin.any
4850
import com.nhaarman.mockito_kotlin.doReturn
51+
import com.nhaarman.mockito_kotlin.mock
4952
import com.nhaarman.mockito_kotlin.whenever
5053
import org.junit.After
5154
import org.junit.Assert.*
@@ -100,11 +103,7 @@ class BrowserViewModelTest {
100103
private lateinit var db: AppDatabase
101104
private lateinit var appConfigurationDao: AppConfigurationDao
102105

103-
private val testOmnibarConverter: OmnibarEntryConverter = object : OmnibarEntryConverter {
104-
override fun convertUri(input: String): String = "duckduckgo.com"
105-
override fun isWebUrl(inputQuery: String): Boolean = true
106-
override fun convertQueryToUri(inputQuery: String): Uri = Uri.parse("duckduckgo.com")
107-
}
106+
private val mockOmnibarConverter: OmnibarEntryConverter = mock()
108107

109108
private lateinit var testee: BrowserViewModel
110109

@@ -118,7 +117,7 @@ class BrowserViewModelTest {
118117
appConfigurationDao = db.appConfigurationDao()
119118

120119
testee = BrowserViewModel(
121-
queryUrlConverter = testOmnibarConverter,
120+
queryUrlConverter = mockOmnibarConverter,
122121
duckDuckGoUrlDetector = DuckDuckGoUrlDetector(),
123122
termsOfServiceStore = mockTermsOfServiceStore,
124123
trackerNetworks = TrackerNetworks(),
@@ -132,6 +131,9 @@ class BrowserViewModelTest {
132131

133132
testee.url.observeForever(mockQueryObserver)
134133
testee.command.observeForever(mockNavigationObserver)
134+
135+
whenever(mockOmnibarConverter.convertQueryToUri(any())).thenReturn(Uri.parse("duckduckgo.com"))
136+
135137
}
136138

137139
@After
@@ -142,6 +144,13 @@ class BrowserViewModelTest {
142144
testee.command.removeObserver(mockNavigationObserver)
143145
}
144146

147+
@Test
148+
fun whenSubmittedQueryHasWhitespaceItIsTrimmed() {
149+
testee.onUserSubmittedQuery(" nytimes.com ")
150+
verify(mockOmnibarConverter).isWebUrl("nytimes.com")
151+
assertEquals("nytimes.com", testee.viewState.value!!.omnibarText)
152+
}
153+
145154
@Test
146155
fun whenBookmarksResultCodeIsOpenUrlThenNavigate() {
147156
testee.receivedBookmarksResult(BookmarksActivity.OPEN_URL_RESULT_CODE, "www.example.com")

app/src/main/java/com/duckduckgo/app/browser/BrowserViewModel.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -153,10 +153,11 @@ class BrowserViewModel(
153153
if (input.isBlank()) {
154154
return
155155
}
156-
url.value = buildUrl(input)
156+
val trimmedInput = input.trim()
157+
url.value = buildUrl(trimmedInput)
157158
viewState.value = currentViewState().copy(
158159
showClearButton = false,
159-
omnibarText = input,
160+
omnibarText = trimmedInput,
160161
showAutoCompleteSuggestions = false,
161162
autoCompleteSearchResults = AutoCompleteResult("", emptyList()))
162163
}

0 commit comments

Comments
 (0)