1
0
Fork 0

For #8800 - add tests for dismissing highlighted items

master
Mihai Branescu 2020-03-02 18:34:57 +02:00
parent 485efacd33
commit b0e4453fb7
5 changed files with 227 additions and 5 deletions

View File

@ -127,7 +127,7 @@ class ReaderViewTest {
}.close { } }.close { }
readerViewRobot { readerViewRobot {
verifyReaderViewDetected(true) verifyReaderViewDetected(false)
} }
} }

View File

@ -54,4 +54,13 @@ class BrowserInteractorTest {
verify { browserToolbarController.handleToolbarItemInteraction(item) } verify { browserToolbarController.handleToolbarItemInteraction(item) }
} }
@Test
fun onBrowserMenuDismissed() {
val itemList: List<ToolbarMenu.Item> = listOf()
interactor.onBrowserMenuDismissed(itemList)
verify { browserToolbarController.handleBrowserMenuDismissed(itemList) }
}
} }

View File

@ -34,10 +34,13 @@ import mozilla.components.feature.session.SessionUseCases
import mozilla.components.feature.tab.collections.TabCollection import mozilla.components.feature.tab.collections.TabCollection
import mozilla.components.feature.tabs.TabsUseCases import mozilla.components.feature.tabs.TabsUseCases
import org.junit.After import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.TestApplication
import org.mozilla.fenix.browser.BrowserAnimator import org.mozilla.fenix.browser.BrowserAnimator
import org.mozilla.fenix.browser.BrowserFragment import org.mozilla.fenix.browser.BrowserFragment
import org.mozilla.fenix.browser.BrowserFragmentDirections import org.mozilla.fenix.browser.BrowserFragmentDirections
@ -51,12 +54,17 @@ import org.mozilla.fenix.components.metrics.Event
import org.mozilla.fenix.components.metrics.MetricController import org.mozilla.fenix.components.metrics.MetricController
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.nav import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.toTab import org.mozilla.fenix.ext.toTab
import org.mozilla.fenix.home.Tab import org.mozilla.fenix.home.Tab
import org.mozilla.fenix.settings.deletebrowsingdata.deleteAndQuit import org.mozilla.fenix.settings.deletebrowsingdata.deleteAndQuit
import org.robolectric.RobolectricTestRunner
import org.robolectric.annotation.Config
@ExperimentalCoroutinesApi @ExperimentalCoroutinesApi
@UseExperimental(ObsoleteCoroutinesApi::class) @UseExperimental(ObsoleteCoroutinesApi::class)
@RunWith(RobolectricTestRunner::class)
@Config(application = TestApplication::class)
class DefaultBrowserToolbarControllerTest { class DefaultBrowserToolbarControllerTest {
private val mainThreadSurrogate = newSingleThreadContext("UI thread") private val mainThreadSurrogate = newSingleThreadContext("UI thread")
@ -126,6 +134,12 @@ class DefaultBrowserToolbarControllerTest {
every { browserAnimator.captureEngineViewAndDrawStatically(capture(onComplete)) } answers { onComplete.captured.invoke() } every { browserAnimator.captureEngineViewAndDrawStatically(capture(onComplete)) } answers { onComplete.captured.invoke() }
} }
@After
fun tearDown() {
Dispatchers.resetMain() // reset main dispatcher to the original Main dispatcher
mainThreadSurrogate.close()
}
@Test @Test
fun handleBrowserToolbarPaste() { fun handleBrowserToolbarPaste() {
every { currentSession.id } returns "1" every { currentSession.id } returns "1"
@ -164,10 +178,41 @@ class DefaultBrowserToolbarControllerTest {
} }
} }
@After @Test
fun tearDown() { fun `handle BrowserMenu dismissed with all options available`() = runBlockingTest {
Dispatchers.resetMain() // reset main dispatcher to the original Main dispatcher val itemList: List<ToolbarMenu.Item> = listOf(
mainThreadSurrogate.close() ToolbarMenu.Item.AddToHomeScreen,
ToolbarMenu.Item.ReaderMode(true),
ToolbarMenu.Item.OpenInApp
)
val activity = HomeActivity()
controller = DefaultBrowserToolbarController(
activity = activity,
navController = navController,
browsingModeManager = browsingModeManager,
findInPageLauncher = findInPageLauncher,
engineView = engineView,
browserAnimator = browserAnimator,
customTabSession = null,
getSupportUrl = getSupportUrl,
openInFenixIntent = openInFenixIntent,
scope = this,
swipeRefresh = swipeRefreshLayout,
tabCollectionStorage = tabCollectionStorage,
topSiteStorage = topSiteStorage,
bookmarkTapped = mockk(),
readerModeController = mockk(),
sessionManager = mockk(),
store = mockk()
)
controller.handleBrowserMenuDismissed(itemList)
assertEquals(true, activity.settings().installPwaOpened)
assertEquals(true, activity.settings().readerModeOpened)
assertEquals(true, activity.settings().openInAppOpened)
} }
@Test @Test

View File

@ -0,0 +1,129 @@
package org.mozilla.fenix.components.toolbar
import android.content.Context
import androidx.lifecycle.LifecycleOwner
import io.mockk.every
import io.mockk.mockk
import io.mockk.mockkStatic
import io.mockk.spyk
import mozilla.components.browser.session.Session
import mozilla.components.browser.session.SessionManager
import mozilla.components.concept.storage.BookmarksStorage
import mozilla.components.feature.app.links.AppLinkRedirect
import mozilla.components.feature.app.links.AppLinksUseCases
import org.junit.Assert.assertEquals
import org.junit.Before
import org.junit.Test
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.utils.Settings
class DefaultToolbarMenuTest {
private lateinit var defaultToolbarMenu: DefaultToolbarMenu
private val context: Context = mockk(relaxed = true)
private val sessionManager: SessionManager = mockk(relaxed = true)
private val onItemTapped: (ToolbarMenu.Item) -> Unit = {}
private val lifecycleOwner: LifecycleOwner = mockk(relaxed = true)
private val bookmarksStorage: BookmarksStorage = mockk(relaxed = true)
@Before
fun setUp() {
defaultToolbarMenu = spyk(
DefaultToolbarMenu(
context,
sessionManager,
hasAccountProblem = false,
shouldReverseItems = false,
onItemTapped = onItemTapped,
lifecycleOwner = lifecycleOwner,
bookmarksStorage = bookmarksStorage
)
)
val settings = Settings.getInstance(context, true)
mockkStatic("org.mozilla.fenix.ext.ContextKt")
every { context.settings() } returns settings
}
@Test
fun `get all low prio highlight items`() {
every { context.components.useCases.webAppUseCases.isPinningSupported() } returns true
every { context.components.useCases.webAppUseCases.isInstallable() } returns true
val getAppLinkRedirect: AppLinksUseCases.GetAppLinkRedirect = mockk(relaxed = true)
every { context.components.useCases.appLinksUseCases.appLinkRedirect } returns getAppLinkRedirect
val appLinkRedirect: AppLinkRedirect = mockk(relaxed = true)
every { appLinkRedirect.hasExternalApp() } returns true
every { getAppLinkRedirect(any()) } returns appLinkRedirect
val session: Session = mockk(relaxed = true)
every { session.readerable } returns true
every { sessionManager.selectedSession } returns session
val list = defaultToolbarMenu.getLowPrioHighlightItems()
assertEquals(ToolbarMenu.Item.AddToHomeScreen, list[0])
assertEquals(ToolbarMenu.Item.ReaderMode(false), list[1])
assertEquals(ToolbarMenu.Item.OpenInApp, list[2])
}
@Test
fun `get all low prio highlight items without AddToHomeScreen`() {
val settings = Settings.getInstance(context, true)
mockkStatic("org.mozilla.fenix.ext.ContextKt")
every { context.settings() } returns settings
every { context.components.useCases.webAppUseCases.isPinningSupported() } returns false
val getAppLinkRedirect: AppLinksUseCases.GetAppLinkRedirect = mockk(relaxed = true)
every { context.components.useCases.appLinksUseCases.appLinkRedirect } returns getAppLinkRedirect
val appLinkRedirect: AppLinkRedirect = mockk(relaxed = true)
every { appLinkRedirect.hasExternalApp() } returns true
every { getAppLinkRedirect(any()) } returns appLinkRedirect
val session: Session = mockk(relaxed = true)
every { session.readerable } returns true
every { sessionManager.selectedSession } returns session
val list = defaultToolbarMenu.getLowPrioHighlightItems()
assertEquals(ToolbarMenu.Item.ReaderMode(false), list[0])
assertEquals(ToolbarMenu.Item.OpenInApp, list[1])
}
@Test
fun `get all low prio highlight items without ReaderMode`() {
every { context.components.useCases.webAppUseCases.isPinningSupported() } returns true
every { context.components.useCases.webAppUseCases.isInstallable() } returns true
val getAppLinkRedirect: AppLinksUseCases.GetAppLinkRedirect = mockk(relaxed = true)
every { context.components.useCases.appLinksUseCases.appLinkRedirect } returns getAppLinkRedirect
every { getAppLinkRedirect(any()).hasExternalApp() } returns true
val list = defaultToolbarMenu.getLowPrioHighlightItems()
assertEquals(ToolbarMenu.Item.AddToHomeScreen, list[0])
assertEquals(ToolbarMenu.Item.OpenInApp, list[1])
}
@Test
fun `get all low prio highlight items without OpenInApp`() {
every { context.components.useCases.webAppUseCases.isPinningSupported() } returns true
every { context.components.useCases.webAppUseCases.isInstallable() } returns true
val session: Session = mockk(relaxed = true)
every { session.readerable } returns true
every { sessionManager.selectedSession } returns session
val getAppLinkRedirect: AppLinksUseCases.GetAppLinkRedirect = mockk(relaxed = true)
every { context.components.useCases.appLinksUseCases.appLinkRedirect } returns getAppLinkRedirect
every { getAppLinkRedirect(any()).hasExternalApp() } returns false
val list = defaultToolbarMenu.getLowPrioHighlightItems()
assertEquals(ToolbarMenu.Item.AddToHomeScreen, list[0])
assertEquals(ToolbarMenu.Item.ReaderMode(false), list[1])
}
}

View File

@ -294,6 +294,45 @@ class SettingsTest {
assertFalse(settings.shouldUseTrackingProtection) assertFalse(settings.shouldUseTrackingProtection)
} }
@Test
fun shouldSetReaderModeOpened() {
// When
// Then
assertFalse(settings.readerModeOpened)
// When
settings.readerModeOpened = true
// Then
assertTrue(settings.readerModeOpened)
}
@Test
fun shouldSetOpenInAppOpened() {
// When
// Then
assertFalse(settings.openInAppOpened)
// When
settings.openInAppOpened = true
// Then
assertTrue(settings.openInAppOpened)
}
@Test
fun shouldSetInstallPwaOpened() {
// When
// Then
assertFalse(settings.installPwaOpened)
// When
settings.installPwaOpened = true
// Then
assertTrue(settings.installPwaOpened)
}
@Test @Test
fun shouldUseTrackingProtectionStrict() { fun shouldUseTrackingProtectionStrict() {
// When // When