1
0
Fork 0
fenix/app/src/test/java/org/mozilla/fenix/components/toolbar/BrowserInteractorTest.kt

66 lines
1.7 KiB
Kotlin
Raw Normal View History

package org.mozilla.fenix.components.toolbar
import io.mockk.mockk
import io.mockk.verify
import org.junit.Before
import org.junit.Test
class BrowserInteractorTest {
lateinit var browserToolbarController: BrowserToolbarController
lateinit var interactor: BrowserInteractor
@Before
fun setup() {
browserToolbarController = mockk(relaxed = true)
interactor = BrowserInteractor(
4281 remove qab (#6310) * For #4281: small ToolbarMenu refactor This makes it easier to see how items are ordered in the menuItems list * For 4281: add QAB buttons to menu * For 4281: removed menu back button per mocks I double checked with UX, and we'll be relying on the hardware back button for its functionality * For 4281: add content descriptions for bookmarking * For 4281: updated BrowserToolbarController for new functionality * For 4281: provided simple dependencies to browser controller More complex changes will be in a following commit, for review readability * For 4281: move toolbar controller dependencies up to BaseBrowserFragment The functionality they control is being moved into the toolbar menu, which is shared by both normal tabs and custom ones * For 4281: removed (now unused) code related to QAB * For 4281: fix test compilation after QAB removal Tests still need to be expanded to include added functionality * For 4281: updated menu to show if url is bookmarked This sloppy workaround is required because TwoStateButton requires that `isInPrimaryState` be a synchronous call, and checking whether or not the current site is bookmarked is quite slow (10-50 MS, in my tests). After days of work and many attempted solutions, this was the least abhorrent among them. https://github.com/mozilla-mobile/android-components/issues/4915 was opened against AC to evaluate potentially supporting async `isInPrimaryState` functions. https://github.com/mozilla-mobile/fenix/issues/6370 was opened against Fenix to investigate the unexpectedly slow call to `BookmarkStorage`. * For 4281: update reader mode switch * For 4281: selectively show/hide menu items * For 4281: add reader mode appearance * For 4281: update bookmark button when it is clicked * For 4281: removed unused QAB code * For 4281: removed QAB robot, updated UI tests * For 4281: removed QuickActionSheet metrics Since this behavior now lives in the toolbar, it is tracked via Event.BrowserMenuItemTapped * For 4281: fixed lint errors * For 4281: add new strings for buttons added to menu This is necessary because the location change (from QAB to toolbar menu) could affect the grammar in some languages * For 4281: remove outdated TODOs * For 4281: removed QAB container * For 4281: removed back button reference from UI test This button no longer exists * For 4821: Fixes a visual defect (extra padding on top of toolbar) * For 4281: update copy on reader mode * For 4281: fixed review nits
2019-11-12 02:10:14 +01:00
browserToolbarController
)
}
@Test
fun onTabCounterClicked() {
interactor.onTabCounterClicked()
verify { browserToolbarController.handleTabCounterClick() }
}
@Test
fun onTabCounterMenuItemTapped() {
val item: TabCounterMenuItem = mockk()
interactor.onTabCounterMenuItemTapped(item)
verify { browserToolbarController.handleTabCounterItemInteraction(item) }
}
@Test
fun onBrowserToolbarPaste() {
val pastedText = "Mozilla"
interactor.onBrowserToolbarPaste(pastedText)
verify { browserToolbarController.handleToolbarPaste(pastedText) }
}
@Test
fun onBrowserToolbarPasteAndGo() {
val pastedText = "Mozilla"
interactor.onBrowserToolbarPasteAndGo(pastedText)
verify { browserToolbarController.handleToolbarPasteAndGo(pastedText) }
}
@Test
fun onBrowserToolbarClicked() {
interactor.onBrowserToolbarClicked()
verify { browserToolbarController.handleToolbarClick() }
}
@Test
fun onBrowserToolbarMenuItemTapped() {
val item: ToolbarMenu.Item = mockk()
interactor.onBrowserToolbarMenuItemTapped(item)
verify { browserToolbarController.handleToolbarItemInteraction(item) }
}
}