[fenix] For https://github.com/mozilla-mobile/fenix/issues/8800 - add tests for dismissing highlighted items
parent
7675d3113a
commit
6d6db30a48
@ -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])
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue