@@ -49,12 +49,10 @@ import org.junit.Assert.*
4949import org.junit.Before
5050import org.junit.Rule
5151import org.junit.Test
52- import org.mockito.ArgumentCaptor
53- import org.mockito.ArgumentMatchers
54- import org.mockito.Mock
52+ import org.mockito.*
53+ import org.mockito.ArgumentCaptor.forClass
5554import org.mockito.Mockito.never
5655import org.mockito.Mockito.verify
57- import org.mockito.MockitoAnnotations
5856
5957class BrowserViewModelTest {
6058
@@ -78,7 +76,7 @@ class BrowserViewModelTest {
7876 lateinit var mockQueryObserver: Observer <String >
7977
8078 @Mock
81- lateinit var mockNavigationObserver : Observer <Command >
79+ lateinit var mockCommandObserver : Observer <Command >
8280
8381 @Mock
8482 lateinit var mockTermsOfServiceStore: TermsOfServiceStore
@@ -121,7 +119,7 @@ class BrowserViewModelTest {
121119 appConfigurationDao = appConfigurationDao)
122120
123121 testee.url.observeForever(mockQueryObserver)
124- testee.command.observeForever(mockNavigationObserver )
122+ testee.command.observeForever(mockCommandObserver )
125123
126124 whenever(mockOmnibarConverter.convertQueryToUri(any())).thenReturn(Uri .parse(" duckduckgo.com" ))
127125
@@ -132,7 +130,7 @@ class BrowserViewModelTest {
132130 testee.onCleared()
133131 db.close()
134132 testee.url.removeObserver(mockQueryObserver)
135- testee.command.removeObserver(mockNavigationObserver )
133+ testee.command.removeObserver(mockCommandObserver )
136134 }
137135
138136 @Test
@@ -242,8 +240,8 @@ class BrowserViewModelTest {
242240 @Test
243241 fun whenSharedTextReceivedThenNavigationTriggered () {
244242 testee.onSharedTextReceived(" http://example.com" )
245- val captor: ArgumentCaptor <Command > = ArgumentCaptor . forClass(Command ::class .java)
246- verify(mockNavigationObserver , times(2 )).onChanged(captor.capture())
243+ val captor: ArgumentCaptor <Command > = forClass(Command ::class .java)
244+ verify(mockCommandObserver , times(2 )).onChanged(captor.capture())
247245 assertNotNull(captor.value)
248246 assertTrue(captor.value is Navigate )
249247 }
@@ -263,13 +261,13 @@ class BrowserViewModelTest {
263261 @Test
264262 fun whenUserDismissesKeyboardBeforeBrowserShownThenShouldNavigateToLandingPage () {
265263 testee.userDismissedKeyboard()
266- verify(mockNavigationObserver ).onChanged(ArgumentMatchers .any(LandingPage ::class .java))
264+ verify(mockCommandObserver ).onChanged(ArgumentMatchers .any(LandingPage ::class .java))
267265 }
268266
269267 @Test
270268 fun whenUserDismissesKeyboardAfterBrowserShownThenShouldNotNavigateToLandingPage () {
271269 testee.urlChanged(" " )
272- verify(mockNavigationObserver , never()).onChanged(ArgumentMatchers .any(LandingPage ::class .java))
270+ verify(mockCommandObserver , never()).onChanged(ArgumentMatchers .any(LandingPage ::class .java))
273271 }
274272
275273 @Test
@@ -387,4 +385,18 @@ class BrowserViewModelTest {
387385 testee.onOmnibarInputStateChanged(" " , true )
388386 assertFalse(testee.viewState.value!! .showAutoCompleteSuggestions)
389387 }
388+
389+ @Test
390+ fun whenEnteringEmptyQueryThenHideKeyboardCommandNotIssued () {
391+ testee.onUserSubmittedQuery(" " )
392+ verify(mockCommandObserver, never()).onChanged(Mockito .any(Command .HideKeyboard .javaClass))
393+ }
394+
395+ @Test
396+ fun whenEnteringNonEmptyQueryThenHideKeyboardCommandIssued () {
397+ val captor = ArgumentCaptor .forClass(BrowserViewModel .Command ::class .java)
398+ testee.onUserSubmittedQuery(" foo" )
399+ verify(mockCommandObserver, Mockito .atLeastOnce()).onChanged(captor.capture())
400+ assertTrue(captor.value == Command .HideKeyboard )
401+ }
390402}
0 commit comments