For #22569: Remove allopen plugin and Mockable annotations
This commit is contained in:
parent
b41542dc5e
commit
8de4c0b4db
|
@ -237,18 +237,6 @@ android {
|
|||
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------------------------
|
||||
// Set up kotlin-allopen plugin for writing tests
|
||||
// -------------------------------------------------------------------------------------------------
|
||||
|
||||
boolean hasTest = gradle.startParameter.taskNames.find { it.contains("test") || it.contains("Test") } != null
|
||||
if (hasTest) {
|
||||
apply plugin: 'kotlin-allopen'
|
||||
allOpen {
|
||||
annotation("org.mozilla.fenix.utils.OpenClass")
|
||||
}
|
||||
}
|
||||
|
||||
android.applicationVariants.all { variant ->
|
||||
|
||||
// -------------------------------------------------------------------------------------------------
|
||||
|
|
|
@ -379,8 +379,9 @@ abstract class BaseBrowserFragment :
|
|||
)
|
||||
|
||||
_browserToolbarView = BrowserToolbarView(
|
||||
context = context,
|
||||
container = binding.browserLayout,
|
||||
toolbarPosition = context.settings().toolbarPosition,
|
||||
settings = context.settings(),
|
||||
interactor = browserToolbarInteractor,
|
||||
customTabSession = customTabSessionId?.let { store.state.findCustomTab(it) },
|
||||
lifecycleOwner = viewLifecycleOwner
|
||||
|
|
|
@ -26,7 +26,6 @@ import org.mozilla.fenix.experiments.NimbusFeatures
|
|||
import org.mozilla.fenix.experiments.createNimbus
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.perf.lazyMonitored
|
||||
import org.mozilla.fenix.utils.Mockable
|
||||
import org.mozilla.geckoview.BuildConfig.MOZ_APP_BUILDID
|
||||
import org.mozilla.geckoview.BuildConfig.MOZ_APP_VENDOR
|
||||
import org.mozilla.geckoview.BuildConfig.MOZ_APP_VERSION
|
||||
|
@ -35,7 +34,6 @@ import org.mozilla.geckoview.BuildConfig.MOZ_UPDATE_CHANNEL
|
|||
/**
|
||||
* Component group for all functionality related to analytics e.g. crash reporting and telemetry.
|
||||
*/
|
||||
@Mockable
|
||||
class Analytics(
|
||||
private val context: Context
|
||||
) {
|
||||
|
|
|
@ -45,14 +45,12 @@ import org.mozilla.fenix.ext.components
|
|||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.perf.lazyMonitored
|
||||
import org.mozilla.fenix.sync.SyncedTabsIntegration
|
||||
import org.mozilla.fenix.utils.Mockable
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
|
||||
/**
|
||||
* Component group for background services. These are the components that need to be accessed from within a
|
||||
* background worker.
|
||||
*/
|
||||
@Mockable
|
||||
@Suppress("LongParameterList")
|
||||
class BackgroundServices(
|
||||
private val context: Context,
|
||||
|
|
|
@ -35,7 +35,6 @@ import org.mozilla.fenix.perf.StartupStateProvider
|
|||
import org.mozilla.fenix.perf.StrictModeManager
|
||||
import org.mozilla.fenix.perf.lazyMonitored
|
||||
import org.mozilla.fenix.utils.ClipboardHandler
|
||||
import org.mozilla.fenix.utils.Mockable
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
import org.mozilla.fenix.wifi.WifiConnectionMonitor
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
@ -49,7 +48,6 @@ private const val AMO_COLLECTION_MAX_CACHE_AGE = 2 * 24 * 60L // Two days in min
|
|||
* Note: these aren't just "components" from "android-components": they're any "component" that
|
||||
* can be considered a building block of our app.
|
||||
*/
|
||||
@Mockable
|
||||
class Components(private val context: Context) {
|
||||
val backgroundServices by lazyMonitored {
|
||||
BackgroundServices(
|
||||
|
|
|
@ -83,7 +83,6 @@ import org.mozilla.fenix.perf.lazyMonitored
|
|||
import org.mozilla.fenix.settings.SupportUtils
|
||||
import org.mozilla.fenix.settings.advanced.getSelectedLocale
|
||||
import org.mozilla.fenix.telemetry.TelemetryMiddleware
|
||||
import org.mozilla.fenix.utils.Mockable
|
||||
import org.mozilla.fenix.utils.getUndoDelay
|
||||
import org.mozilla.geckoview.GeckoRuntime
|
||||
import java.util.concurrent.TimeUnit
|
||||
|
@ -91,7 +90,6 @@ import java.util.concurrent.TimeUnit
|
|||
/**
|
||||
* Component group for all core browser functionality.
|
||||
*/
|
||||
@Mockable
|
||||
@Suppress("LargeClass")
|
||||
class Core(
|
||||
private val context: Context,
|
||||
|
|
|
@ -22,9 +22,7 @@ import org.mozilla.fenix.R
|
|||
import org.mozilla.fenix.databinding.FenixSnackbarBinding
|
||||
import org.mozilla.fenix.ext.increaseTapArea
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.utils.Mockable
|
||||
|
||||
@Mockable
|
||||
class FenixSnackbar private constructor(
|
||||
parent: ViewGroup,
|
||||
private val binding: FenixSnackbarBinding,
|
||||
|
|
|
@ -17,7 +17,6 @@ import mozilla.components.feature.findinpage.FindInPageFeature
|
|||
import mozilla.components.feature.findinpage.view.FindInPageView
|
||||
import mozilla.components.support.base.feature.LifecycleAwareFeature
|
||||
import org.mozilla.fenix.components.FindInPageIntegration.ToolbarInfo
|
||||
import org.mozilla.fenix.utils.Mockable
|
||||
|
||||
/**
|
||||
* BrowserFragment delegate to handle all layout updates needed to show or hide the find in page bar.
|
||||
|
@ -28,7 +27,6 @@ import org.mozilla.fenix.utils.Mockable
|
|||
* to suit the find in page bar.
|
||||
* @param toolbarInfo [ToolbarInfo] used to configure the [BrowserToolbar] while the find in page bar is shown.
|
||||
*/
|
||||
@Mockable
|
||||
class FindInPageIntegration(
|
||||
private val store: BrowserStore,
|
||||
private val sessionId: String? = null,
|
||||
|
|
|
@ -22,12 +22,10 @@ import mozilla.components.support.migration.state.MigrationStore
|
|||
import org.mozilla.fenix.customtabs.FennecWebAppIntentProcessor
|
||||
import org.mozilla.fenix.home.intent.FennecBookmarkShortcutsIntentProcessor
|
||||
import org.mozilla.fenix.perf.lazyMonitored
|
||||
import org.mozilla.fenix.utils.Mockable
|
||||
|
||||
/**
|
||||
* Component group for miscellaneous components.
|
||||
*/
|
||||
@Mockable
|
||||
@Suppress("LongParameterList")
|
||||
class IntentProcessors(
|
||||
private val context: Context,
|
||||
|
|
|
@ -12,10 +12,8 @@ import kotlinx.coroutines.withContext
|
|||
import mozilla.components.concept.engine.permission.SitePermissions
|
||||
import mozilla.components.concept.engine.permission.SitePermissionsStorage
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.utils.Mockable
|
||||
import kotlin.coroutines.CoroutineContext
|
||||
|
||||
@Mockable
|
||||
class PermissionStorage(
|
||||
private val context: Context,
|
||||
@VisibleForTesting internal val dispatcher: CoroutineContext = Dispatchers.IO,
|
||||
|
|
|
@ -16,12 +16,10 @@ import org.mozilla.fenix.R
|
|||
import org.mozilla.fenix.ext.getPreferenceKey
|
||||
import org.mozilla.fenix.perf.lazyMonitored
|
||||
import org.mozilla.fenix.settings.SupportUtils
|
||||
import org.mozilla.fenix.utils.Mockable
|
||||
|
||||
/**
|
||||
* Component group which encapsulates foreground-friendly services.
|
||||
*/
|
||||
@Mockable
|
||||
class Services(
|
||||
private val context: Context,
|
||||
private val accountManager: FxaAccountManager
|
||||
|
|
|
@ -23,9 +23,7 @@ import org.mozilla.fenix.ext.components
|
|||
import org.mozilla.fenix.ext.toShortUrl
|
||||
import org.mozilla.fenix.home.sessioncontrol.viewholders.CollectionViewHolder
|
||||
import org.mozilla.fenix.perf.StrictModeManager
|
||||
import org.mozilla.fenix.utils.Mockable
|
||||
|
||||
@Mockable
|
||||
class TabCollectionStorage(
|
||||
private val context: Context,
|
||||
strictMode: StrictModeManager,
|
||||
|
|
|
@ -25,13 +25,11 @@ import mozilla.components.feature.top.sites.TopSitesUseCases
|
|||
import mozilla.components.support.locale.LocaleUseCases
|
||||
import org.mozilla.fenix.components.bookmarks.BookmarksUseCase
|
||||
import org.mozilla.fenix.perf.lazyMonitored
|
||||
import org.mozilla.fenix.utils.Mockable
|
||||
|
||||
/**
|
||||
* Component group for all use cases. Use cases are provided by feature
|
||||
* modules and can be triggered by UI interactions.
|
||||
*/
|
||||
@Mockable
|
||||
@Suppress("LongParameterList")
|
||||
class UseCases(
|
||||
private val context: Context,
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
package org.mozilla.fenix.components.toolbar
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Color
|
||||
import android.view.HapticFeedbackConstants
|
||||
import android.view.LayoutInflater
|
||||
|
@ -28,30 +29,29 @@ import org.mozilla.fenix.customtabs.CustomTabToolbarIntegration
|
|||
import org.mozilla.fenix.customtabs.CustomTabToolbarMenu
|
||||
import org.mozilla.fenix.ext.bookmarkStorage
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.theme.ThemeManager
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
import org.mozilla.fenix.utils.ToolbarPopupWindow
|
||||
import java.lang.ref.WeakReference
|
||||
import mozilla.components.browser.toolbar.behavior.ToolbarPosition as MozacToolbarPosition
|
||||
|
||||
@SuppressWarnings("LargeClass")
|
||||
class BrowserToolbarView(
|
||||
private val container: ViewGroup,
|
||||
private val toolbarPosition: ToolbarPosition,
|
||||
context: Context,
|
||||
container: ViewGroup,
|
||||
private val settings: Settings,
|
||||
private val interactor: BrowserToolbarInteractor,
|
||||
private val customTabSession: CustomTabSessionState?,
|
||||
private val lifecycleOwner: LifecycleOwner
|
||||
) {
|
||||
|
||||
private val settings = container.context.settings()
|
||||
|
||||
@LayoutRes
|
||||
private val toolbarLayout = when (settings.toolbarPosition) {
|
||||
ToolbarPosition.BOTTOM -> R.layout.component_bottom_browser_toolbar
|
||||
ToolbarPosition.TOP -> R.layout.component_browser_top_toolbar
|
||||
}
|
||||
|
||||
private val layout = LayoutInflater.from(container.context)
|
||||
private val layout = LayoutInflater.from(context)
|
||||
.inflate(toolbarLayout, container, true)
|
||||
|
||||
@VisibleForTesting
|
||||
|
@ -78,7 +78,7 @@ class BrowserToolbarView(
|
|||
true
|
||||
}
|
||||
|
||||
with(container.context) {
|
||||
with(context) {
|
||||
val isPinningSupported = components.useCases.webAppUseCases.isPinningSupported()
|
||||
|
||||
view.apply {
|
||||
|
@ -94,22 +94,22 @@ class BrowserToolbarView(
|
|||
false
|
||||
}
|
||||
|
||||
display.progressGravity = when (toolbarPosition) {
|
||||
display.progressGravity = when (settings.toolbarPosition) {
|
||||
ToolbarPosition.BOTTOM -> DisplayToolbar.Gravity.TOP
|
||||
ToolbarPosition.TOP -> DisplayToolbar.Gravity.BOTTOM
|
||||
}
|
||||
|
||||
val primaryTextColor = ContextCompat.getColor(
|
||||
container.context,
|
||||
ThemeManager.resolveAttribute(R.attr.primaryText, container.context)
|
||||
context,
|
||||
ThemeManager.resolveAttribute(R.attr.primaryText, context)
|
||||
)
|
||||
val secondaryTextColor = ContextCompat.getColor(
|
||||
container.context,
|
||||
ThemeManager.resolveAttribute(R.attr.secondaryText, container.context)
|
||||
context,
|
||||
ThemeManager.resolveAttribute(R.attr.secondaryText, context)
|
||||
)
|
||||
val separatorColor = ContextCompat.getColor(
|
||||
container.context,
|
||||
ThemeManager.resolveAttribute(R.attr.toolbarDivider, container.context)
|
||||
context,
|
||||
ThemeManager.resolveAttribute(R.attr.toolbarDivider, context)
|
||||
)
|
||||
|
||||
display.urlFormatter = { url -> URLStringUtils.toDisplayUrl(url) }
|
||||
|
@ -137,7 +137,7 @@ class BrowserToolbarView(
|
|||
context = this,
|
||||
store = components.core.store,
|
||||
sessionId = customTabSession?.id,
|
||||
shouldReverseItems = toolbarPosition == ToolbarPosition.TOP,
|
||||
shouldReverseItems = settings.toolbarPosition == ToolbarPosition.TOP,
|
||||
onItemTapped = {
|
||||
it.performHapticIfNeeded(view)
|
||||
interactor.onBrowserToolbarMenuItemTapped(it)
|
||||
|
|
|
@ -21,7 +21,6 @@ import mozilla.components.support.ktx.android.os.resetAfter
|
|||
import org.mozilla.fenix.Config
|
||||
import org.mozilla.fenix.components.Components
|
||||
import org.mozilla.fenix.utils.ManufacturerCodes
|
||||
import org.mozilla.fenix.utils.Mockable
|
||||
import java.util.concurrent.Executors
|
||||
import java.util.concurrent.atomic.AtomicLong
|
||||
|
||||
|
@ -33,8 +32,7 @@ private val mainLooper = Looper.getMainLooper()
|
|||
/**
|
||||
* Manages strict mode settings for the application.
|
||||
*/
|
||||
@Mockable
|
||||
class StrictModeManager(
|
||||
open class StrictModeManager(
|
||||
config: Config,
|
||||
|
||||
// Ideally, we'd pass in a more specific value but there is a circular dependency: StrictMode
|
||||
|
@ -112,7 +110,7 @@ class StrictModeManager(
|
|||
*
|
||||
* @return the value returned by [functionBlock].
|
||||
*/
|
||||
fun <R> resetAfter(policy: StrictMode.ThreadPolicy, functionBlock: () -> R): R {
|
||||
open fun <R> resetAfter(policy: StrictMode.ThreadPolicy, functionBlock: () -> R): R {
|
||||
fun instrumentedFunctionBlock(): R {
|
||||
val startProfilerTime = components.core.engine.profiler?.getProfilerTime()
|
||||
|
||||
|
|
|
@ -190,6 +190,7 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
|
|||
|
||||
toolbarView = ToolbarView(
|
||||
requireContext(),
|
||||
requireContext().settings(),
|
||||
interactor,
|
||||
historyStorageProvider(),
|
||||
isPrivate,
|
||||
|
|
|
@ -19,8 +19,8 @@ import mozilla.components.support.ktx.android.content.getColorFromAttr
|
|||
import mozilla.components.support.ktx.android.content.res.resolveAttribute
|
||||
import mozilla.components.support.ktx.android.view.hideKeyboard
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.search.SearchFragmentState
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
|
||||
/**
|
||||
* Interface for the Toolbar Interactor. This interface is implemented by objects that want
|
||||
|
@ -53,6 +53,7 @@ interface ToolbarInteractor {
|
|||
@Suppress("LongParameterList")
|
||||
class ToolbarView(
|
||||
private val context: Context,
|
||||
settings: Settings,
|
||||
private val interactor: ToolbarInteractor,
|
||||
private val historyStorage: HistoryStorage?,
|
||||
private val isPrivate: Boolean,
|
||||
|
@ -115,7 +116,7 @@ class ToolbarView(
|
|||
|
||||
val engineForSpeculativeConnects = if (!isPrivate) engine else null
|
||||
|
||||
if (context.settings().shouldAutocompleteInAwesomebar) {
|
||||
if (settings.shouldAutocompleteInAwesomebar) {
|
||||
ToolbarAutocompleteFeature(
|
||||
view,
|
||||
engineForSpeculativeConnects
|
||||
|
|
|
@ -1,20 +0,0 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.fenix.utils
|
||||
|
||||
// Annotations for testing.
|
||||
|
||||
/**
|
||||
* Annotate a class with [OpenClass] to open a class for mocking purposes while keeping it final in release builds
|
||||
*/
|
||||
@Target(AnnotationTarget.ANNOTATION_CLASS)
|
||||
annotation class OpenClass
|
||||
|
||||
/**
|
||||
* Annotate a class with [Mockable] to make it extensible in debug builds
|
||||
*/
|
||||
@OpenClass
|
||||
@Target(AnnotationTarget.CLASS)
|
||||
annotation class Mockable
|
|
@ -22,6 +22,8 @@ import org.junit.Test
|
|||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.AppRequestInterceptor.Companion.HIGH_RISK_ERROR_PAGES
|
||||
import org.mozilla.fenix.AppRequestInterceptor.Companion.LOW_AND_MEDIUM_RISK_ERROR_PAGES
|
||||
import org.mozilla.fenix.components.Services
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.isOnline
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
|
||||
|
@ -64,6 +66,7 @@ class AppRequestInterceptorTest {
|
|||
|
||||
@Test
|
||||
fun `GIVEN request to install add-on WHEN on a different domain THEN no add-on installation is started`() {
|
||||
every { testContext.components.services } returns Services(testContext, mockk(relaxed = true))
|
||||
val result = interceptor.onLoadRequest(
|
||||
engineSession = mockk(),
|
||||
uri = "https://addons.mozilla.org/android/downloads/file/12345678/test.xpi",
|
||||
|
@ -81,6 +84,7 @@ class AppRequestInterceptorTest {
|
|||
|
||||
@Test
|
||||
fun `GIVEN invalid request to install add-on WHEN on same domain and triggered by user THEN no add-on installation is started`() {
|
||||
every { testContext.components.services } returns Services(testContext, mockk(relaxed = true))
|
||||
val result = interceptor.onLoadRequest(
|
||||
engineSession = mockk(),
|
||||
uri = "https://addons.mozilla.org/android/downloads/file/12345678/test.invalid",
|
||||
|
@ -98,6 +102,7 @@ class AppRequestInterceptorTest {
|
|||
|
||||
@Test
|
||||
fun `GIVEN request to install add-on WHEN not triggered by user THEN no add-on installation is started`() {
|
||||
every { testContext.components.services } returns Services(testContext, mockk(relaxed = true))
|
||||
val result = interceptor.onLoadRequest(
|
||||
engineSession = mockk(),
|
||||
uri = "https://addons.mozilla.org/android/downloads/file/12345678/test.xpi",
|
||||
|
@ -115,6 +120,7 @@ class AppRequestInterceptorTest {
|
|||
|
||||
@Test
|
||||
fun `GIVEN any request WHEN on same domain and triggered by user THEN no add-on installation is started`() {
|
||||
every { testContext.components.services } returns Services(testContext, mockk(relaxed = true))
|
||||
val result = interceptor.onLoadRequest(
|
||||
engineSession = mockk(),
|
||||
uri = "https://blog.mozilla.org/blog/2020/10/20/mozilla-reaction-to-u-s-v-google/",
|
||||
|
@ -132,6 +138,7 @@ class AppRequestInterceptorTest {
|
|||
|
||||
@Test
|
||||
fun `onErrorRequest results in correct error page for low risk level error`() {
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
setOf(
|
||||
ErrorType.UNKNOWN,
|
||||
ErrorType.ERROR_NET_INTERRUPT,
|
||||
|
@ -165,6 +172,7 @@ class AppRequestInterceptorTest {
|
|||
|
||||
@Test
|
||||
fun `onErrorRequest results in correct error page for medium risk level error`() {
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
setOf(
|
||||
ErrorType.ERROR_SECURITY_BAD_CERT,
|
||||
ErrorType.ERROR_SECURITY_SSL,
|
||||
|
@ -182,6 +190,7 @@ class AppRequestInterceptorTest {
|
|||
|
||||
@Test
|
||||
fun `onErrorRequest results in correct error page for high risk level error`() {
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
setOf(
|
||||
ErrorType.ERROR_SAFEBROWSING_HARMFUL_URI,
|
||||
ErrorType.ERROR_SAFEBROWSING_MALWARE_URI,
|
||||
|
|
|
@ -30,6 +30,7 @@ import org.mozilla.fenix.components.metrics.Event
|
|||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.helpers.perf.TestStrictModeManager
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
|
@ -60,6 +61,7 @@ class HomeActivityTest {
|
|||
|
||||
@Test
|
||||
fun `getModeFromIntentOrLastKnown returns mode from settings when intent does not set`() {
|
||||
every { testContext.settings() } returns Settings(testContext)
|
||||
every { activity.applicationContext } returns testContext
|
||||
testContext.settings().lastKnownMode = BrowsingMode.Private
|
||||
|
||||
|
@ -68,6 +70,7 @@ class HomeActivityTest {
|
|||
|
||||
@Test
|
||||
fun `getModeFromIntentOrLastKnown returns mode from intent when set`() {
|
||||
every { testContext.settings() } returns Settings(testContext)
|
||||
testContext.settings().lastKnownMode = BrowsingMode.Normal
|
||||
|
||||
val intent = Intent()
|
||||
|
@ -139,6 +142,7 @@ class HomeActivityTest {
|
|||
|
||||
@Test
|
||||
fun `GIVEN the user has been away for a long time WHEN the user opens the app THEN do start on home`() {
|
||||
every { testContext.components.strictMode } returns TestStrictModeManager()
|
||||
val settings: Settings = mockk()
|
||||
val startingIntent = Intent().apply {
|
||||
action = Intent.ACTION_MAIN
|
||||
|
@ -153,6 +157,7 @@ class HomeActivityTest {
|
|||
|
||||
@Test
|
||||
fun `GIVEN the user has been away for a long time WHEN opening a link THEN do not start on home`() {
|
||||
every { testContext.components.strictMode } returns TestStrictModeManager()
|
||||
val settings: Settings = mockk()
|
||||
val startingIntent = Intent().apply {
|
||||
action = Intent.ACTION_VIEW
|
||||
|
|
|
@ -16,7 +16,6 @@ import io.mockk.unmockkStatic
|
|||
import io.mockk.verify
|
||||
import kotlinx.coroutines.test.runBlockingTest
|
||||
import mozilla.components.feature.intent.processing.IntentProcessor
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.After
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertTrue
|
||||
|
@ -28,6 +27,7 @@ import org.mozilla.fenix.customtabs.ExternalAppBrowserActivity
|
|||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.helpers.perf.TestStrictModeManager
|
||||
import org.mozilla.fenix.shortcut.NewTabShortcutIntentProcessor
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
import org.robolectric.Robolectric
|
||||
|
@ -201,10 +201,7 @@ class IntentReceiverActivityTest {
|
|||
every { activity.settings() } returns settings
|
||||
every { activity.components.analytics } returns mockk(relaxed = true)
|
||||
every { activity.components.intentProcessors } returns intentProcessors
|
||||
|
||||
// For some reason, activity.components doesn't return application.components, which is the
|
||||
// globally defined TestComponents, so we redirect it.
|
||||
every { activity.components.strictMode } returns testContext.components.strictMode
|
||||
every { activity.components.strictMode } returns TestStrictModeManager()
|
||||
}
|
||||
|
||||
private inline fun <reified T : IntentProcessor> mockIntentProcessor(): T {
|
||||
|
|
|
@ -26,20 +26,24 @@ import mozilla.components.ui.widgets.VerticalSwipeRefreshLayout
|
|||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class BaseBrowserFragmentTest {
|
||||
private lateinit var fragment: TestBaseBrowserFragment
|
||||
private lateinit var swipeRefreshLayout: VerticalSwipeRefreshLayout
|
||||
private lateinit var engineView: EngineView
|
||||
private lateinit var settings: Settings
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
fragment = spyk(TestBaseBrowserFragment())
|
||||
swipeRefreshLayout = mockk(relaxed = true)
|
||||
engineView = mockk(relaxed = true)
|
||||
settings = mockk(relaxed = true)
|
||||
every { testContext.components.settings } returns settings
|
||||
every { fragment.isAdded } returns true
|
||||
every { fragment.activity } returns mockk()
|
||||
every { fragment.requireContext() } returns testContext
|
||||
|
@ -50,8 +54,8 @@ class BaseBrowserFragmentTest {
|
|||
|
||||
@Test
|
||||
fun `initializeEngineView should setDynamicToolbarMaxHeight to 0 if top toolbar is forced for a11y`() {
|
||||
every { testContext.settings().shouldUseBottomToolbar } returns false
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns true
|
||||
every { settings.shouldUseBottomToolbar } returns false
|
||||
every { settings.shouldUseFixedTopToolbar } returns true
|
||||
|
||||
fragment.initializeEngineView(13)
|
||||
|
||||
|
@ -60,8 +64,8 @@ class BaseBrowserFragmentTest {
|
|||
|
||||
@Test
|
||||
fun `initializeEngineView should setDynamicToolbarMaxHeight to 0 if bottom toolbar is forced for a11y`() {
|
||||
every { testContext.settings().shouldUseBottomToolbar } returns true
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns true
|
||||
every { settings.shouldUseBottomToolbar } returns true
|
||||
every { settings.shouldUseFixedTopToolbar } returns true
|
||||
|
||||
fragment.initializeEngineView(13)
|
||||
|
||||
|
@ -70,8 +74,8 @@ class BaseBrowserFragmentTest {
|
|||
|
||||
@Test
|
||||
fun `initializeEngineView should setDynamicToolbarMaxHeight to toolbar height if dynamic toolbar is enabled`() {
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns false
|
||||
every { testContext.settings().isDynamicToolbarEnabled } returns true
|
||||
every { settings.shouldUseFixedTopToolbar } returns false
|
||||
every { settings.isDynamicToolbarEnabled } returns true
|
||||
|
||||
fragment.initializeEngineView(13)
|
||||
|
||||
|
@ -80,8 +84,8 @@ class BaseBrowserFragmentTest {
|
|||
|
||||
@Test
|
||||
fun `initializeEngineView should setDynamicToolbarMaxHeight to 0 if dynamic toolbar is disabled`() {
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns false
|
||||
every { testContext.settings().isDynamicToolbarEnabled } returns false
|
||||
every { settings.shouldUseFixedTopToolbar } returns false
|
||||
every { settings.isDynamicToolbarEnabled } returns false
|
||||
|
||||
fragment.initializeEngineView(13)
|
||||
|
||||
|
@ -90,8 +94,8 @@ class BaseBrowserFragmentTest {
|
|||
|
||||
@Test
|
||||
fun `initializeEngineView should set EngineViewBrowserToolbarBehavior when dynamic toolbar is enabled`() {
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns false
|
||||
every { testContext.settings().isDynamicToolbarEnabled } returns true
|
||||
every { settings.shouldUseFixedTopToolbar } returns false
|
||||
every { settings.isDynamicToolbarEnabled } returns true
|
||||
val params: CoordinatorLayout.LayoutParams = mockk(relaxed = true)
|
||||
every { params.behavior } returns mockk(relaxed = true)
|
||||
every { swipeRefreshLayout.layoutParams } returns params
|
||||
|
@ -106,8 +110,8 @@ class BaseBrowserFragmentTest {
|
|||
|
||||
@Test
|
||||
fun `initializeEngineView should set toolbar height as EngineView parent's bottom margin when using bottom toolbar`() {
|
||||
every { testContext.settings().isDynamicToolbarEnabled } returns false
|
||||
every { testContext.settings().shouldUseBottomToolbar } returns true
|
||||
every { settings.isDynamicToolbarEnabled } returns false
|
||||
every { settings.shouldUseBottomToolbar } returns true
|
||||
|
||||
fragment.initializeEngineView(13)
|
||||
|
||||
|
@ -116,8 +120,8 @@ class BaseBrowserFragmentTest {
|
|||
|
||||
@Test
|
||||
fun `initializeEngineView should set toolbar height as EngineView parent's bottom margin if top toolbar is forced for a11y`() {
|
||||
every { testContext.settings().shouldUseBottomToolbar } returns false
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns true
|
||||
every { settings.shouldUseBottomToolbar } returns false
|
||||
every { settings.shouldUseFixedTopToolbar } returns true
|
||||
|
||||
fragment.initializeEngineView(13)
|
||||
|
||||
|
@ -126,8 +130,8 @@ class BaseBrowserFragmentTest {
|
|||
|
||||
@Test
|
||||
fun `initializeEngineView should set toolbar height as EngineView parent's bottom margin if bottom toolbar is forced for a11y`() {
|
||||
every { testContext.settings().shouldUseBottomToolbar } returns true
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns true
|
||||
every { settings.shouldUseBottomToolbar } returns true
|
||||
every { settings.shouldUseFixedTopToolbar } returns true
|
||||
|
||||
fragment.initializeEngineView(13)
|
||||
|
||||
|
|
|
@ -5,18 +5,22 @@
|
|||
package org.mozilla.fenix.browser.infobanner
|
||||
|
||||
import androidx.coordinatorlayout.widget.CoordinatorLayout
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.spyk
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertNull
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class DynamicInfoBannerTest {
|
||||
@Test
|
||||
fun `showBanner should set DynamicInfoBannerBehavior as behavior if scrollWithTopToolbar`() {
|
||||
every { testContext.components.settings } returns mockk(relaxed = true)
|
||||
val banner = spyk(
|
||||
DynamicInfoBanner(
|
||||
testContext, CoordinatorLayout(testContext), true, "", ""
|
||||
|
@ -30,6 +34,7 @@ class DynamicInfoBannerTest {
|
|||
|
||||
@Test
|
||||
fun `showBanner should not set a behavior if not scrollWithTopToolbar`() {
|
||||
every { testContext.components.settings } returns mockk(relaxed = true)
|
||||
val banner = spyk(
|
||||
DynamicInfoBanner(
|
||||
testContext, CoordinatorLayout(testContext), false, "", ""
|
||||
|
|
|
@ -6,10 +6,11 @@ package org.mozilla.fenix.collections
|
|||
|
||||
import io.mockk.MockKAnnotations
|
||||
import io.mockk.every
|
||||
import io.mockk.impl.annotations.MockK
|
||||
import io.mockk.mockk
|
||||
import kotlinx.coroutines.CompletableDeferred
|
||||
import mozilla.components.browser.state.state.BrowserState
|
||||
import mozilla.components.browser.state.state.createTab
|
||||
import mozilla.components.browser.state.store.BrowserStore
|
||||
import mozilla.components.lib.publicsuffixlist.PublicSuffixList
|
||||
import mozilla.components.support.test.robolectric.createAddedTestFragment
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
|
@ -18,8 +19,10 @@ import org.junit.Assert.assertTrue
|
|||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.components.TabCollectionStorage
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.helpers.perf.TestStrictModeManager
|
||||
|
||||
private const val URL_MOZILLA = "www.mozilla.org"
|
||||
private const val SESSION_ID_MOZILLA = "0"
|
||||
|
@ -29,7 +32,7 @@ private const val SESSION_ID_BCC = "1"
|
|||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class CollectionCreationFragmentTest {
|
||||
|
||||
@MockK(relaxed = true) private lateinit var publicSuffixList: PublicSuffixList
|
||||
private val publicSuffixList = mockk<PublicSuffixList>(relaxed = true)
|
||||
|
||||
private val sessionMozilla = createTab(URL_MOZILLA, id = SESSION_ID_MOZILLA)
|
||||
private val sessionBcc = createTab(URL_BCC, id = SESSION_ID_BCC)
|
||||
|
@ -42,13 +45,16 @@ class CollectionCreationFragmentTest {
|
|||
MockKAnnotations.init(this)
|
||||
every { publicSuffixList.stripPublicSuffix(URL_MOZILLA) } returns CompletableDeferred(URL_MOZILLA)
|
||||
every { publicSuffixList.stripPublicSuffix(URL_BCC) } returns CompletableDeferred(URL_BCC)
|
||||
every { testContext.components.publicSuffixList } returns publicSuffixList
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `creation dialog shows and can be dismissed`() {
|
||||
val store = testContext.components.core.store
|
||||
every { store.state } returns state
|
||||
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
every { testContext.components.core.store } returns BrowserStore(state)
|
||||
every { testContext.components.core.tabCollectionStorage } returns TabCollectionStorage(
|
||||
testContext, TestStrictModeManager()
|
||||
)
|
||||
val fragment = createAddedTestFragment {
|
||||
CollectionCreationFragment().apply {
|
||||
arguments = CollectionCreationFragmentArgs(
|
||||
|
|
|
@ -12,6 +12,7 @@ import io.mockk.every
|
|||
import io.mockk.just
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import mozilla.components.browser.icons.BrowserIcons
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
|
@ -20,6 +21,7 @@ import org.junit.Before
|
|||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.databinding.CollectionTabListRowBinding
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.home.Tab
|
||||
|
||||
|
@ -59,6 +61,7 @@ class CollectionCreationTabListAdapterTest {
|
|||
|
||||
@Test
|
||||
fun `creates and binds viewholder`() {
|
||||
every { testContext.components.core.icons } returns BrowserIcons(testContext, mockk(relaxed = true))
|
||||
adapter.updateData(
|
||||
tabs = listOf(mozillaTab),
|
||||
selectedTabs = emptySet(),
|
||||
|
@ -87,6 +90,7 @@ class CollectionCreationTabListAdapterTest {
|
|||
|
||||
@Test
|
||||
fun `creates and binds viewholder for selected tab`() {
|
||||
every { testContext.components.core.icons } returns BrowserIcons(testContext, mockk(relaxed = true))
|
||||
every { interactor.addTabToSelection(mozillaTab) } just Runs
|
||||
|
||||
adapter.updateData(
|
||||
|
|
|
@ -12,12 +12,14 @@ import io.mockk.just
|
|||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import mozilla.components.feature.tab.collections.TabCollection
|
||||
import mozilla.components.lib.publicsuffixlist.PublicSuffixList
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.databinding.CollectionsListItemBinding
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
|
@ -51,6 +53,7 @@ class SaveCollectionListAdapterTest {
|
|||
|
||||
@Test
|
||||
fun `creates and binds viewholder`() {
|
||||
every { testContext.components.publicSuffixList } returns PublicSuffixList(testContext)
|
||||
val collection = mockk<TabCollection> {
|
||||
every { id } returns 0L
|
||||
every { title } returns "Collection"
|
||||
|
|
|
@ -13,6 +13,7 @@ import mozilla.components.support.test.robolectric.testContext
|
|||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
|
@ -22,6 +23,10 @@ import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
|||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class IntentProcessorTypeTest {
|
||||
@Before
|
||||
fun setup() {
|
||||
every { testContext.components.intentProcessors } returns mockk(relaxed = true)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `should open intent with flag launched from history`() {
|
||||
|
@ -72,6 +77,7 @@ class IntentProcessorTypeTest {
|
|||
|
||||
@Test
|
||||
fun `get type for private custom tab intent processor`() {
|
||||
every { testContext.components.intentProcessors } returns mockk(relaxed = true)
|
||||
val processor = testContext.components.intentProcessors.privateCustomTabIntentProcessor
|
||||
val type = testContext.components.intentProcessors.getType(processor)
|
||||
|
||||
|
|
|
@ -1,39 +0,0 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.fenix.components
|
||||
|
||||
import android.content.Context
|
||||
import io.mockk.mockk
|
||||
import org.mozilla.fenix.helpers.perf.TestStrictModeManager
|
||||
import org.mozilla.fenix.utils.ClipboardHandler
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
|
||||
class TestComponents(private val context: Context) : Components(context) {
|
||||
override val backgroundServices by lazy {
|
||||
mockk<BackgroundServices>(relaxed = true)
|
||||
}
|
||||
override val services by lazy { Services(context, backgroundServices.accountManager) }
|
||||
override val core by lazy { TestCore(context, analytics.crashReporter) }
|
||||
@Suppress("Deprecation")
|
||||
override val useCases by lazy {
|
||||
UseCases(
|
||||
context,
|
||||
core.engine,
|
||||
core.store,
|
||||
core.webAppShortcutManager,
|
||||
core.topSitesStorage,
|
||||
core.bookmarksStorage,
|
||||
core.historyStorage
|
||||
)
|
||||
}
|
||||
override val intentProcessors by lazy { mockk<IntentProcessors>(relaxed = true) }
|
||||
override val analytics by lazy { Analytics(context) }
|
||||
|
||||
override val clipboardHandler by lazy { ClipboardHandler(context) }
|
||||
|
||||
override val settings by lazy { mockk<Settings>(relaxed = true) }
|
||||
|
||||
override val strictMode by lazy { TestStrictModeManager() }
|
||||
}
|
|
@ -1,37 +0,0 @@
|
|||
/* This Source Code Form is subject to the terms of the Mozilla Public
|
||||
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
||||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
package org.mozilla.fenix.components
|
||||
|
||||
import android.content.Context
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import mozilla.components.browser.state.store.BrowserStore
|
||||
import mozilla.components.browser.storage.sync.PlacesBookmarksStorage
|
||||
import mozilla.components.browser.storage.sync.PlacesHistoryStorage
|
||||
import mozilla.components.browser.thumbnails.storage.ThumbnailStorage
|
||||
import mozilla.components.concept.base.crash.CrashReporting
|
||||
import mozilla.components.concept.engine.Engine
|
||||
import mozilla.components.concept.engine.Settings
|
||||
import mozilla.components.concept.fetch.Client
|
||||
import mozilla.components.feature.pwa.WebAppShortcutManager
|
||||
import mozilla.components.feature.top.sites.DefaultTopSitesStorage
|
||||
|
||||
class TestCore(context: Context, crashReporter: CrashReporting) : Core(
|
||||
context,
|
||||
crashReporter,
|
||||
mockk()
|
||||
) {
|
||||
|
||||
override val engine = mockk<Engine>(relaxed = true) {
|
||||
every { this@mockk getProperty "settings" } returns mockk<Settings>(relaxed = true)
|
||||
}
|
||||
override val store = mockk<BrowserStore>()
|
||||
override val client = mockk<Client>()
|
||||
override val webAppShortcutManager = mockk<WebAppShortcutManager>()
|
||||
override val thumbnailStorage = mockk<ThumbnailStorage>()
|
||||
override val topSitesStorage = mockk<DefaultTopSitesStorage>()
|
||||
override val bookmarksStorage = mockk<PlacesBookmarksStorage>()
|
||||
override val historyStorage = mockk<PlacesHistoryStorage>()
|
||||
}
|
|
@ -16,11 +16,13 @@ import org.junit.Test
|
|||
import org.junit.runner.RunWith
|
||||
import mozilla.components.browser.toolbar.BrowserToolbar
|
||||
import mozilla.components.browser.toolbar.behavior.BrowserToolbarBehavior
|
||||
import mozilla.components.lib.publicsuffixlist.PublicSuffixList
|
||||
import org.junit.Assert.assertNotNull
|
||||
import org.junit.Assert.assertNull
|
||||
import org.junit.Before
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
import mozilla.components.browser.toolbar.behavior.ToolbarPosition as MozacToolbarPosition
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
|
@ -28,17 +30,23 @@ class BrowserToolbarViewTest {
|
|||
private lateinit var toolbarView: BrowserToolbarView
|
||||
private lateinit var toolbar: BrowserToolbar
|
||||
private lateinit var behavior: BrowserToolbarBehavior
|
||||
private lateinit var settings: Settings
|
||||
|
||||
@Before
|
||||
fun `setup`() {
|
||||
fun setup() {
|
||||
toolbar = BrowserToolbar(testContext)
|
||||
toolbar.layoutParams = CoordinatorLayout.LayoutParams(100, 100)
|
||||
behavior = spyk(BrowserToolbarBehavior(testContext, null, MozacToolbarPosition.BOTTOM))
|
||||
(toolbar.layoutParams as CoordinatorLayout.LayoutParams).behavior = behavior
|
||||
settings = mockk(relaxed = true)
|
||||
every { testContext.components.useCases } returns mockk(relaxed = true)
|
||||
every { testContext.components.core } returns mockk(relaxed = true)
|
||||
every { testContext.components.publicSuffixList } returns PublicSuffixList(testContext)
|
||||
|
||||
toolbarView = BrowserToolbarView(
|
||||
context = testContext,
|
||||
settings = settings,
|
||||
container = CoordinatorLayout(testContext),
|
||||
toolbarPosition = ToolbarPosition.BOTTOM,
|
||||
interactor = mockk(),
|
||||
customTabSession = mockk(relaxed = true),
|
||||
lifecycleOwner = mockk()
|
||||
|
@ -50,10 +58,10 @@ class BrowserToolbarViewTest {
|
|||
@Test
|
||||
fun `setToolbarBehavior(false) should setDynamicToolbarBehavior if no a11y, bottom toolbar is dynamic and the tab is not for a PWA or TWA`() {
|
||||
val toolbarViewSpy = spyk(toolbarView)
|
||||
every { testContext.settings().toolbarPosition } returns ToolbarPosition.BOTTOM
|
||||
every { testContext.settings().isDynamicToolbarEnabled } returns true
|
||||
every { settings.toolbarPosition } returns ToolbarPosition.BOTTOM
|
||||
every { settings.isDynamicToolbarEnabled } returns true
|
||||
every { toolbarViewSpy.isPwaTabOrTwaTab } returns false
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns false
|
||||
every { settings.shouldUseFixedTopToolbar } returns false
|
||||
|
||||
toolbarViewSpy.setToolbarBehavior(false)
|
||||
|
||||
|
@ -63,10 +71,10 @@ class BrowserToolbarViewTest {
|
|||
@Test
|
||||
fun `setToolbarBehavior(false) should expandToolbarAndMakeItFixed if bottom toolbar is not set as dynamic`() {
|
||||
val toolbarViewSpy = spyk(toolbarView)
|
||||
every { testContext.settings().toolbarPosition } returns ToolbarPosition.BOTTOM
|
||||
every { testContext.settings().isDynamicToolbarEnabled } returns false
|
||||
every { settings.toolbarPosition } returns ToolbarPosition.BOTTOM
|
||||
every { settings.isDynamicToolbarEnabled } returns false
|
||||
every { toolbarViewSpy.isPwaTabOrTwaTab } returns false
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns false
|
||||
every { settings.shouldUseFixedTopToolbar } returns false
|
||||
|
||||
toolbarViewSpy.setToolbarBehavior(false)
|
||||
|
||||
|
@ -76,10 +84,10 @@ class BrowserToolbarViewTest {
|
|||
@Test
|
||||
fun `setToolbarBehavior(false) should expandToolbarAndMakeItFixed if bottom toolbar is dynamic but the tab is for a PWA or TWA`() {
|
||||
val toolbarViewSpy = spyk(toolbarView)
|
||||
every { testContext.settings().toolbarPosition } returns ToolbarPosition.BOTTOM
|
||||
every { testContext.settings().isDynamicToolbarEnabled } returns true
|
||||
every { settings.toolbarPosition } returns ToolbarPosition.BOTTOM
|
||||
every { settings.isDynamicToolbarEnabled } returns true
|
||||
every { toolbarViewSpy.isPwaTabOrTwaTab } returns true
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns false
|
||||
every { settings.shouldUseFixedTopToolbar } returns false
|
||||
|
||||
toolbarViewSpy.setToolbarBehavior(false)
|
||||
|
||||
|
@ -89,10 +97,10 @@ class BrowserToolbarViewTest {
|
|||
@Test
|
||||
fun `setToolbarBehavior(false) should expandToolbarAndMakeItFixed if bottom toolbar is dynamic tab is not for a PWA or TWA but a11y is enabled`() {
|
||||
val toolbarViewSpy = spyk(toolbarView)
|
||||
every { testContext.settings().toolbarPosition } returns ToolbarPosition.BOTTOM
|
||||
every { testContext.settings().isDynamicToolbarEnabled } returns true
|
||||
every { settings.toolbarPosition } returns ToolbarPosition.BOTTOM
|
||||
every { settings.isDynamicToolbarEnabled } returns true
|
||||
every { toolbarViewSpy.isPwaTabOrTwaTab } returns false
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns true
|
||||
every { settings.shouldUseFixedTopToolbar } returns true
|
||||
|
||||
toolbarViewSpy.setToolbarBehavior(false)
|
||||
|
||||
|
@ -104,10 +112,10 @@ class BrowserToolbarViewTest {
|
|||
// All intrinsic checks are met but the method was called with `shouldDisableScroll` = true
|
||||
|
||||
val toolbarViewSpy = spyk(toolbarView)
|
||||
every { testContext.settings().toolbarPosition } returns ToolbarPosition.BOTTOM
|
||||
every { testContext.settings().isDynamicToolbarEnabled } returns true
|
||||
every { settings.toolbarPosition } returns ToolbarPosition.BOTTOM
|
||||
every { settings.isDynamicToolbarEnabled } returns true
|
||||
every { toolbarViewSpy.isPwaTabOrTwaTab } returns false
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns false
|
||||
every { settings.shouldUseFixedTopToolbar } returns false
|
||||
|
||||
toolbarViewSpy.setToolbarBehavior(false)
|
||||
|
||||
|
@ -117,10 +125,10 @@ class BrowserToolbarViewTest {
|
|||
@Test
|
||||
fun `setToolbarBehavior(true) should expandToolbarAndMakeItFixed if bottom toolbar is not set as dynamic`() {
|
||||
val toolbarViewSpy = spyk(toolbarView)
|
||||
every { testContext.settings().toolbarPosition } returns ToolbarPosition.BOTTOM
|
||||
every { testContext.settings().isDynamicToolbarEnabled } returns false
|
||||
every { settings.toolbarPosition } returns ToolbarPosition.BOTTOM
|
||||
every { settings.isDynamicToolbarEnabled } returns false
|
||||
every { toolbarViewSpy.isPwaTabOrTwaTab } returns false
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns false
|
||||
every { settings.shouldUseFixedTopToolbar } returns false
|
||||
|
||||
toolbarViewSpy.setToolbarBehavior(false)
|
||||
|
||||
|
@ -130,10 +138,10 @@ class BrowserToolbarViewTest {
|
|||
@Test
|
||||
fun `setToolbarBehavior(true) should expandToolbarAndMakeItFixed if bottom toolbar is dynamic but the tab is for a PWA or TWA`() {
|
||||
val toolbarViewSpy = spyk(toolbarView)
|
||||
every { testContext.settings().toolbarPosition } returns ToolbarPosition.BOTTOM
|
||||
every { testContext.settings().isDynamicToolbarEnabled } returns true
|
||||
every { settings.toolbarPosition } returns ToolbarPosition.BOTTOM
|
||||
every { settings.isDynamicToolbarEnabled } returns true
|
||||
every { toolbarViewSpy.isPwaTabOrTwaTab } returns true
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns false
|
||||
every { settings.shouldUseFixedTopToolbar } returns false
|
||||
|
||||
toolbarViewSpy.setToolbarBehavior(false)
|
||||
|
||||
|
@ -143,10 +151,10 @@ class BrowserToolbarViewTest {
|
|||
@Test
|
||||
fun `setToolbarBehavior(true) should expandToolbarAndMakeItFixed if bottom toolbar is dynamic, the tab is for a PWA or TWA and a11 is enabled`() {
|
||||
val toolbarViewSpy = spyk(toolbarView)
|
||||
every { testContext.settings().toolbarPosition } returns ToolbarPosition.BOTTOM
|
||||
every { testContext.settings().isDynamicToolbarEnabled } returns true
|
||||
every { settings.toolbarPosition } returns ToolbarPosition.BOTTOM
|
||||
every { settings.isDynamicToolbarEnabled } returns true
|
||||
every { toolbarViewSpy.isPwaTabOrTwaTab } returns false
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns true
|
||||
every { settings.shouldUseFixedTopToolbar } returns true
|
||||
|
||||
toolbarViewSpy.setToolbarBehavior(false)
|
||||
|
||||
|
@ -156,8 +164,8 @@ class BrowserToolbarViewTest {
|
|||
@Test
|
||||
fun `setToolbarBehavior(true) should expandToolbarAndMakeItFixed for top toolbar if shouldUseFixedTopToolbar`() {
|
||||
val toolbarViewSpy = spyk(toolbarView)
|
||||
every { testContext.settings().toolbarPosition } returns ToolbarPosition.TOP
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns true
|
||||
every { settings.toolbarPosition } returns ToolbarPosition.TOP
|
||||
every { settings.shouldUseFixedTopToolbar } returns true
|
||||
|
||||
toolbarViewSpy.setToolbarBehavior(true)
|
||||
|
||||
|
@ -167,8 +175,8 @@ class BrowserToolbarViewTest {
|
|||
@Test
|
||||
fun `setToolbarBehavior(true) should expandToolbarAndMakeItFixed for top toolbar if it is not dynamic`() {
|
||||
val toolbarViewSpy = spyk(toolbarView)
|
||||
every { testContext.settings().toolbarPosition } returns ToolbarPosition.TOP
|
||||
every { testContext.settings().isDynamicToolbarEnabled } returns false
|
||||
every { settings.toolbarPosition } returns ToolbarPosition.TOP
|
||||
every { settings.isDynamicToolbarEnabled } returns false
|
||||
|
||||
toolbarViewSpy.setToolbarBehavior(true)
|
||||
|
||||
|
@ -178,7 +186,7 @@ class BrowserToolbarViewTest {
|
|||
@Test
|
||||
fun `setToolbarBehavior(true) should expandToolbarAndMakeItFixed for top toolbar if shouldDisableScroll`() {
|
||||
val toolbarViewSpy = spyk(toolbarView)
|
||||
every { testContext.settings().toolbarPosition } returns ToolbarPosition.TOP
|
||||
every { settings.toolbarPosition } returns ToolbarPosition.TOP
|
||||
|
||||
toolbarViewSpy.setToolbarBehavior(true)
|
||||
|
||||
|
@ -188,9 +196,9 @@ class BrowserToolbarViewTest {
|
|||
@Test
|
||||
fun `setToolbarBehavior(false) should setDynamicToolbarBehavior for top toolbar`() {
|
||||
val toolbarViewSpy = spyk(toolbarView)
|
||||
every { testContext.settings().toolbarPosition } returns ToolbarPosition.TOP
|
||||
every { testContext.settings().shouldUseFixedTopToolbar } returns true
|
||||
every { testContext.settings().isDynamicToolbarEnabled } returns true
|
||||
every { settings.toolbarPosition } returns ToolbarPosition.TOP
|
||||
every { settings.shouldUseFixedTopToolbar } returns true
|
||||
every { settings.isDynamicToolbarEnabled } returns true
|
||||
|
||||
toolbarViewSpy.setToolbarBehavior(true)
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@ import android.widget.FrameLayout
|
|||
import androidx.appcompat.view.ContextThemeWrapper
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import mozilla.components.browser.icons.BrowserIcons
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
|
@ -21,6 +22,7 @@ import org.mozilla.fenix.exceptions.ExceptionsAdapter
|
|||
import org.mozilla.fenix.exceptions.viewholders.ExceptionsDeleteButtonViewHolder
|
||||
import org.mozilla.fenix.exceptions.viewholders.ExceptionsHeaderViewHolder
|
||||
import org.mozilla.fenix.exceptions.viewholders.ExceptionsListItemViewHolder
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
|
@ -39,6 +41,7 @@ class LoginExceptionsAdapterTest {
|
|||
|
||||
@Test
|
||||
fun `creates correct view holder type`() {
|
||||
every { testContext.components.core.icons } returns BrowserIcons(testContext, mockk(relaxed = true))
|
||||
val parent = FrameLayout(context)
|
||||
adapter.updateData(listOf(mockk(), mockk()))
|
||||
assertEquals(4, adapter.itemCount)
|
||||
|
|
|
@ -9,6 +9,7 @@ import android.widget.FrameLayout
|
|||
import androidx.appcompat.view.ContextThemeWrapper
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import mozilla.components.browser.icons.BrowserIcons
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
|
@ -21,6 +22,7 @@ import org.mozilla.fenix.exceptions.ExceptionsAdapter
|
|||
import org.mozilla.fenix.exceptions.viewholders.ExceptionsDeleteButtonViewHolder
|
||||
import org.mozilla.fenix.exceptions.viewholders.ExceptionsHeaderViewHolder
|
||||
import org.mozilla.fenix.exceptions.viewholders.ExceptionsListItemViewHolder
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
|
@ -39,6 +41,7 @@ class TrackingProtectionExceptionsAdapterTest {
|
|||
|
||||
@Test
|
||||
fun `creates correct view holder type`() {
|
||||
every { testContext.components.core.icons } returns BrowserIcons(testContext, mockk(relaxed = true))
|
||||
val parent = FrameLayout(context)
|
||||
adapter.updateData(listOf(mockk(), mockk()))
|
||||
assertEquals(4, adapter.itemCount)
|
||||
|
|
|
@ -91,6 +91,7 @@ class ContextTest {
|
|||
|
||||
@Test
|
||||
fun `GIVEN context WHEN getting metrics controller THEN send back metrics`() {
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
val expectedMetricsValue = ApplicationProvider.getApplicationContext<FenixApplication>().components.analytics.metrics
|
||||
assertEquals(expectedMetricsValue, testContext.metrics)
|
||||
}
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
|
||||
package org.mozilla.fenix.ext
|
||||
|
||||
import mozilla.components.lib.publicsuffixlist.PublicSuffixList
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
|
@ -19,7 +20,7 @@ const val IDN = "台灣"
|
|||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class StringTest {
|
||||
|
||||
private val publicSuffixList = testContext.components.publicSuffixList
|
||||
private val publicSuffixList = PublicSuffixList(testContext)
|
||||
|
||||
@Test
|
||||
fun `Url To Trimmed Host`() {
|
||||
|
|
|
@ -4,9 +4,10 @@
|
|||
|
||||
package org.mozilla.fenix.helpers
|
||||
|
||||
import io.mockk.mockk
|
||||
import org.mozilla.fenix.FenixApplication
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.TestComponents
|
||||
import org.mozilla.fenix.components.Components
|
||||
|
||||
/**
|
||||
* An override of our application for use in Robolectric-based unit tests. We're forced to override
|
||||
|
@ -20,7 +21,7 @@ class FenixRobolectricTestApplication : FenixApplication() {
|
|||
setApplicationTheme()
|
||||
}
|
||||
|
||||
override val components = TestComponents(this)
|
||||
override val components = mockk<Components>()
|
||||
|
||||
override fun initializeGlean() = Unit
|
||||
|
||||
|
|
|
@ -15,13 +15,16 @@ import mozilla.components.browser.state.state.BrowserState
|
|||
import mozilla.components.browser.state.state.SearchState
|
||||
import mozilla.components.browser.state.store.BrowserStore
|
||||
import mozilla.components.feature.search.ext.createSearchEngine
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.BrowserDirection
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.components.metrics.MetricController
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.helpers.perf.TestStrictModeManager
|
||||
import org.mozilla.fenix.widget.VoiceSearchActivity.Companion.SPEECH_PROCESSING
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
|
@ -84,6 +87,7 @@ class SpeechProcessingIntentProcessorTest {
|
|||
|
||||
@Test
|
||||
fun `reads the speech processing extra`() {
|
||||
every { testContext.components.strictMode } returns TestStrictModeManager()
|
||||
val intent = Intent().apply {
|
||||
putExtra(HomeActivity.OPEN_TO_BROWSER_AND_LOAD, true)
|
||||
putExtra(SPEECH_PROCESSING, "hello world")
|
||||
|
|
|
@ -17,6 +17,7 @@ import org.junit.Assert.assertFalse
|
|||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.home.HomeFragmentState
|
||||
import org.mozilla.fenix.home.recentbookmarks.RecentBookmark
|
||||
|
@ -89,6 +90,7 @@ class SessionControlViewTest {
|
|||
|
||||
@Test
|
||||
fun `GIVENs updates WHEN sections recentTabs, recentBookmarks, historyMetadata or pocketArticles are available THEN show the dialog`() {
|
||||
every { testContext.components.settings } returns mockk(relaxed = true)
|
||||
val interactor = mockk<SessionControlInteractor>(relaxed = true)
|
||||
val view = RecyclerView(testContext)
|
||||
val controller = SessionControlView(
|
||||
|
@ -110,6 +112,7 @@ class SessionControlViewTest {
|
|||
|
||||
@Test
|
||||
fun `GIVENs updates WHEN sections recentTabs, recentBookmarks, historyMetadata or pocketArticles are NOT available THEN DO NOT show the dialog`() {
|
||||
every { testContext.components.settings } returns mockk(relaxed = true)
|
||||
val interactor = mockk<SessionControlInteractor>(relaxed = true)
|
||||
val view = RecyclerView(testContext)
|
||||
val controller = SessionControlView(
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
|
@ -12,6 +13,7 @@ import org.junit.Before
|
|||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.databinding.OnboardingFinishBinding
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.home.sessioncontrol.OnboardingInteractor
|
||||
|
||||
|
@ -29,6 +31,7 @@ class OnboardingFinishViewHolderTest {
|
|||
|
||||
@Test
|
||||
fun `call interactor on click`() {
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
OnboardingFinishViewHolder(binding.root, interactor)
|
||||
|
||||
binding.finishButton.performClick()
|
||||
|
|
|
@ -21,6 +21,7 @@ import org.junit.Test
|
|||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.databinding.OnboardingManualSigninBinding
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.home.HomeFragmentDirections
|
||||
|
||||
|
@ -59,6 +60,7 @@ class OnboardingManualSignInViewHolderTest {
|
|||
|
||||
@Test
|
||||
fun `navigate on click`() {
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
OnboardingManualSignInViewHolder(binding.root)
|
||||
binding.fxaSignInButton.performClick()
|
||||
|
||||
|
|
|
@ -6,6 +6,7 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
|
|||
|
||||
import android.view.LayoutInflater
|
||||
import androidx.appcompat.view.ContextThemeWrapper
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
|
@ -14,6 +15,7 @@ import org.junit.Test
|
|||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.databinding.OnboardingPrivacyNoticeBinding
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.home.sessioncontrol.OnboardingInteractor
|
||||
|
||||
|
@ -32,6 +34,7 @@ class OnboardingPrivacyNoticeViewHolderTest {
|
|||
|
||||
@Test
|
||||
fun `call interactor on click`() {
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
OnboardingPrivacyNoticeViewHolder(binding.root, interactor)
|
||||
|
||||
binding.readButton.performClick()
|
||||
|
|
|
@ -6,6 +6,7 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
|
|||
|
||||
import android.view.LayoutInflater
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertTrue
|
||||
|
@ -26,9 +27,10 @@ class OnboardingToolbarPositionPickerViewHolderTest {
|
|||
|
||||
@Before
|
||||
fun setup() {
|
||||
val components = testContext.components
|
||||
binding = OnboardingToolbarPositionPickerBinding.inflate(LayoutInflater.from(testContext))
|
||||
settings = components.settings
|
||||
settings = mockk(relaxed = true)
|
||||
every { testContext.components.settings } returns settings
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -6,6 +6,7 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
|
|||
|
||||
import android.view.LayoutInflater
|
||||
import androidx.appcompat.view.ContextThemeWrapper
|
||||
import io.mockk.every
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
|
@ -13,7 +14,9 @@ import org.junit.Test
|
|||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.databinding.OnboardingTrackingProtectionBinding
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class OnboardingTrackingProtectionViewHolderTest {
|
||||
|
@ -28,6 +31,7 @@ class OnboardingTrackingProtectionViewHolderTest {
|
|||
|
||||
@Test
|
||||
fun `sets description text`() {
|
||||
every { testContext.components.settings } returns Settings(testContext)
|
||||
OnboardingTrackingProtectionViewHolder(binding.root)
|
||||
|
||||
val string = testContext.getString(R.string.onboarding_tracking_protection_description_3)
|
||||
|
|
|
@ -5,8 +5,10 @@
|
|||
package org.mozilla.fenix.home.topsites
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import mozilla.components.browser.icons.BrowserIcons
|
||||
import mozilla.components.feature.top.sites.TopSite
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertNotNull
|
||||
|
@ -15,6 +17,7 @@ import org.junit.Before
|
|||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.databinding.TopSiteItemBinding
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.home.sessioncontrol.TopSiteInteractor
|
||||
|
||||
|
@ -35,6 +38,7 @@ class TopSiteItemViewHolderTest {
|
|||
fun setup() {
|
||||
binding = TopSiteItemBinding.inflate(LayoutInflater.from(testContext))
|
||||
interactor = mockk(relaxed = true)
|
||||
every { testContext.components.core.icons } returns BrowserIcons(testContext, mockk(relaxed = true))
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -47,6 +51,7 @@ class TopSiteItemViewHolderTest {
|
|||
|
||||
@Test
|
||||
fun `calls interactor on long click`() {
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
TopSiteItemViewHolder(binding.root, interactor).bind(pocket)
|
||||
|
||||
binding.topSiteItem.performLongClick()
|
||||
|
|
|
@ -5,7 +5,9 @@ package org.mozilla.fenix.library.historymetadata.view
|
|||
|
||||
import android.view.LayoutInflater
|
||||
import androidx.navigation.Navigation
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import mozilla.components.browser.icons.BrowserIcons
|
||||
import mozilla.components.concept.storage.HistoryMetadataKey
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
|
@ -13,6 +15,7 @@ import org.junit.Before
|
|||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.databinding.HistoryMetadataGroupListItemBinding
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.library.history.History
|
||||
import org.mozilla.fenix.library.historymetadata.interactor.HistoryMetadataGroupInteractor
|
||||
|
@ -44,6 +47,7 @@ class HistoryMetadataGroupItemViewHolderTest {
|
|||
|
||||
@Test
|
||||
fun `GIVEN a history metadata item on bind THEN set the title and url text`() {
|
||||
every { testContext.components.core.icons } returns BrowserIcons(testContext, mockk(relaxed = true))
|
||||
HistoryMetadataGroupItemViewHolder(binding.root, interactor, selectionHolder).bind(item)
|
||||
|
||||
assertEquals(item.title, binding.historyLayout.titleView.text)
|
||||
|
|
|
@ -9,6 +9,8 @@ import android.util.AttributeSet
|
|||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.widget.FrameLayout
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertNotEquals
|
||||
|
@ -16,6 +18,7 @@ import org.junit.Before
|
|||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import java.io.File
|
||||
|
||||
|
@ -34,6 +37,7 @@ class PerformanceInflaterTest {
|
|||
fun setup() {
|
||||
InflationCounter.inflationCount.set(0)
|
||||
|
||||
every { testContext.components.core.engine.profiler } returns mockk(relaxed = true)
|
||||
perfInflater = MockInflater(LayoutInflater.from(testContext), testContext)
|
||||
}
|
||||
|
||||
|
|
|
@ -28,6 +28,7 @@ import org.mozilla.fenix.components.metrics.Event
|
|||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.search.SearchEngineSource
|
||||
import org.mozilla.fenix.search.SearchFragmentState
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class ToolbarViewTest {
|
||||
|
@ -154,6 +155,7 @@ class ToolbarViewTest {
|
|||
|
||||
private fun buildToolbarView(isPrivate: Boolean) = ToolbarView(
|
||||
context,
|
||||
Settings(context),
|
||||
interactor,
|
||||
historyStorage = null,
|
||||
isPrivate = isPrivate,
|
||||
|
|
|
@ -13,6 +13,7 @@ import mozilla.components.browser.state.state.BrowserState
|
|||
import mozilla.components.browser.state.state.createTab
|
||||
import mozilla.components.browser.state.store.BrowserStore
|
||||
import mozilla.components.feature.privatemode.notification.AbstractPrivateNotificationService.Companion.ACTION_ERASE
|
||||
import mozilla.components.feature.tabs.TabsUseCases
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import mozilla.components.support.test.rule.MainCoroutineRule
|
||||
import org.junit.After
|
||||
|
@ -44,8 +45,10 @@ class PrivateNotificationServiceTest {
|
|||
|
||||
@Before
|
||||
fun setup() {
|
||||
store = testContext.components.core.store
|
||||
store = mockk()
|
||||
every { store.dispatch(any()) } returns mockk()
|
||||
every { testContext.components.core.store } returns store
|
||||
every { testContext.components.useCases.tabsUseCases } returns TabsUseCases(store)
|
||||
|
||||
controller = Robolectric.buildService(
|
||||
PrivateNotificationService::class.java,
|
||||
|
|
|
@ -10,6 +10,7 @@ import io.mockk.every
|
|||
import io.mockk.mockk
|
||||
import io.mockk.mockkObject
|
||||
import kotlinx.coroutines.test.TestCoroutineDispatcher
|
||||
import mozilla.components.concept.fetch.Client
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import mozilla.components.support.test.rule.MainCoroutineRule
|
||||
import org.junit.After
|
||||
|
@ -41,9 +42,14 @@ class SettingsFragmentTest {
|
|||
@Before
|
||||
fun setup() {
|
||||
// Mock client for fetching account avatar
|
||||
val client = testContext.components.core.client
|
||||
val client = mockk<Client>()
|
||||
every { client.fetch(any()) } throws IOException("test")
|
||||
|
||||
every { testContext.components.core.client } returns client
|
||||
every { testContext.components.settings } returns mockk(relaxed = true)
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
every { testContext.components.backgroundServices } returns mockk(relaxed = true)
|
||||
|
||||
mockkObject(Config)
|
||||
every { Config.channel } returns ReleaseChannel.Nightly
|
||||
}
|
||||
|
|
|
@ -5,10 +5,13 @@
|
|||
package org.mozilla.fenix.settings
|
||||
|
||||
import androidx.fragment.app.FragmentActivity
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
import org.robolectric.Robolectric
|
||||
|
@ -18,9 +21,11 @@ class TrackingProtectionFragmentTest {
|
|||
|
||||
@Test
|
||||
fun `UI component should match settings defaults`() {
|
||||
val settings = Settings(testContext)
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
every { testContext.components.settings } returns settings
|
||||
val settingsFragment = TrackingProtectionFragment()
|
||||
val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().get()
|
||||
val settings = Settings(testContext)
|
||||
|
||||
activity.supportFragmentManager.beginTransaction()
|
||||
.add(settingsFragment, "settingsFragment")
|
||||
|
|
|
@ -7,6 +7,7 @@ package org.mozilla.fenix.settings.creditcards
|
|||
import androidx.fragment.app.FragmentActivity
|
||||
import androidx.navigation.NavController
|
||||
import androidx.preference.Preference
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import kotlinx.coroutines.test.TestCoroutineDispatcher
|
||||
|
@ -19,6 +20,7 @@ import org.junit.Before
|
|||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.getPreferenceKey
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.robolectric.Robolectric
|
||||
|
@ -32,6 +34,8 @@ class CreditCardsSettingFragmentTest {
|
|||
|
||||
@Before
|
||||
fun setUp() {
|
||||
every { testContext.components.settings } returns mockk(relaxed = true)
|
||||
|
||||
creditCardsSettingFragment = CreditCardsSettingFragment()
|
||||
|
||||
val activity = Robolectric.buildActivity(FragmentActivity::class.java).create().get()
|
||||
|
|
|
@ -7,13 +7,13 @@ package org.mozilla.fenix.settings.logins
|
|||
import androidx.navigation.NavController
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verifyAll
|
||||
import mozilla.components.lib.publicsuffixlist.PublicSuffixList
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.BrowserDirection
|
||||
import org.mozilla.fenix.components.metrics.Event
|
||||
import org.mozilla.fenix.components.metrics.MetricController
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.settings.SupportUtils
|
||||
import org.mozilla.fenix.settings.logins.controller.LoginsListController
|
||||
|
@ -24,7 +24,7 @@ import org.mozilla.fenix.utils.Settings
|
|||
class LoginsListControllerTest {
|
||||
private val store: LoginsFragmentStore = mockk(relaxed = true)
|
||||
private val settings: Settings = mockk(relaxed = true)
|
||||
private val publicSuffixList = testContext.components.publicSuffixList
|
||||
private val publicSuffixList = PublicSuffixList(testContext)
|
||||
private val sortingStrategy: SortingStrategy = SortingStrategy.Alphabetically(publicSuffixList)
|
||||
private val navController: NavController = mockk(relaxed = true)
|
||||
private val browserNavigator: (String, Boolean, BrowserDirection) -> Unit = mockk(relaxed = true)
|
||||
|
|
|
@ -5,14 +5,17 @@
|
|||
package org.mozilla.fenix.settings.logins
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import mozilla.components.browser.icons.BrowserIcons
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.databinding.LoginsItemBinding
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.settings.logins.interactor.SavedLoginsInteractor
|
||||
import org.mozilla.fenix.settings.logins.view.LoginsListViewHolder
|
||||
|
@ -35,6 +38,7 @@ class LoginsListViewHolderTest {
|
|||
fun setup() {
|
||||
binding = LoginsItemBinding.inflate(LayoutInflater.from(testContext))
|
||||
interactor = mockk(relaxed = true)
|
||||
every { testContext.components.core.icons } returns BrowserIcons(testContext, mockk(relaxed = true))
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
|
@ -4,8 +4,10 @@
|
|||
|
||||
package org.mozilla.fenix.settings.logins
|
||||
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verifyAll
|
||||
import mozilla.components.lib.publicsuffixlist.PublicSuffixList
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
|
@ -40,6 +42,7 @@ class SavedLoginsInteractorTest {
|
|||
|
||||
@Test
|
||||
fun `GIVEN a change in sorting strategy, WHEN the interactor is called for it, THEN it should just delegate the controller`() {
|
||||
every { testContext.components.publicSuffixList } returns PublicSuffixList(testContext)
|
||||
val sortingStrategy = SortingStrategy.Alphabetically(testContext.components.publicSuffixList)
|
||||
|
||||
interactor.onSortingStrategyChanged(sortingStrategy)
|
||||
|
|
|
@ -12,6 +12,7 @@ import io.mockk.just
|
|||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import mozilla.components.concept.menu.candidate.HighPriorityHighlightEffect
|
||||
import mozilla.components.lib.publicsuffixlist.PublicSuffixList
|
||||
import mozilla.components.support.ktx.android.content.getColorFromAttr
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
|
@ -68,13 +69,15 @@ class SavedLoginsSortingStrategyMenuTest {
|
|||
|
||||
@Test
|
||||
fun `candidates call interactor on click`() {
|
||||
val publicSuffixList = PublicSuffixList(testContext)
|
||||
every { testContext.components.publicSuffixList } returns publicSuffixList
|
||||
val (name, lastUsed) = menu.menuItems(Item.AlphabeticallySort)
|
||||
every { interactor.onSortingStrategyChanged(any()) } just Runs
|
||||
|
||||
name.onClick()
|
||||
verify {
|
||||
interactor.onSortingStrategyChanged(
|
||||
SortingStrategy.Alphabetically(context.components.publicSuffixList)
|
||||
SortingStrategy.Alphabetically(publicSuffixList)
|
||||
)
|
||||
}
|
||||
|
||||
|
|
|
@ -122,6 +122,7 @@ class DefaultQuickSettingsControllerTest {
|
|||
|
||||
@Test
|
||||
fun `handlePermissionsShown should delegate to an injected parameter`() {
|
||||
every { testContext.components.core.engine } returns mockk(relaxed = true)
|
||||
var displayPermissionsInvoked = false
|
||||
createController(
|
||||
displayPermissions = {
|
||||
|
@ -172,6 +173,7 @@ class DefaultQuickSettingsControllerTest {
|
|||
|
||||
@Test
|
||||
fun `handlePermissionToggled blocked by user should navigate to site permission manager`() {
|
||||
every { testContext.components.core.engine } returns mockk(relaxed = true)
|
||||
val websitePermission = mockk<WebsitePermission>()
|
||||
val invalidSitePermissionsController = DefaultQuickSettingsController(
|
||||
context = context,
|
||||
|
@ -265,6 +267,7 @@ class DefaultQuickSettingsControllerTest {
|
|||
|
||||
@Test
|
||||
fun `handleAndroidPermissionRequest should request from the injected callback`() {
|
||||
every { testContext.components.core.engine } returns mockk(relaxed = true)
|
||||
val testPermissions = arrayOf("TestPermission")
|
||||
|
||||
var requestRuntimePermissionsInvoked = false
|
||||
|
|
|
@ -18,8 +18,9 @@ import org.junit.Test
|
|||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.HomeActivity
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
import org.mozilla.gecko.search.SearchWidgetProvider
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
|
@ -27,12 +28,16 @@ class SearchEngineFragmentTest {
|
|||
@Test
|
||||
fun `GIVEN pref_key_show_voice_search setting WHEN it is modified THEN the value is persisted and widgets updated`() {
|
||||
try {
|
||||
mockkObject(SearchWidgetProvider.Companion)
|
||||
|
||||
val settings = mockk<Settings>(relaxed = true)
|
||||
every { settings.preferences }
|
||||
every { testContext.components.settings } returns settings
|
||||
val preferences: SharedPreferences = mockk()
|
||||
val preferencesEditor: SharedPreferences.Editor = mockk(relaxed = true)
|
||||
every { testContext.settings().preferences } returns preferences
|
||||
every { settings.preferences } returns preferences
|
||||
every { preferences.edit() } returns preferencesEditor
|
||||
|
||||
mockkObject(SearchWidgetProvider.Companion)
|
||||
|
||||
val fragment = spyk(SearchEngineFragment()) {
|
||||
every { context } returns testContext
|
||||
every { isAdded } returns true
|
||||
|
|
|
@ -12,11 +12,13 @@ import mozilla.components.browser.storage.sync.Tab
|
|||
import mozilla.components.browser.storage.sync.TabEntry
|
||||
import mozilla.components.concept.sync.DeviceType
|
||||
import mozilla.components.feature.syncedtabs.view.SyncedTabsView
|
||||
import mozilla.components.lib.publicsuffixlist.PublicSuffixList
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
|
@ -103,6 +105,7 @@ class SyncedTabsAdapterTest {
|
|||
|
||||
@Test
|
||||
fun `adapter can create and bind viewholders for SyncedDeviceTabs`() {
|
||||
every { testContext.components.publicSuffixList } returns PublicSuffixList(testContext)
|
||||
val parent = FrameLayout(testContext)
|
||||
adapter.updateData(listOf(oneTabDevice))
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ import mozilla.components.browser.storage.sync.TabEntry
|
|||
import mozilla.components.concept.sync.Device
|
||||
import mozilla.components.concept.sync.DeviceType
|
||||
import mozilla.components.feature.syncedtabs.view.SyncedTabsView
|
||||
import mozilla.components.lib.publicsuffixlist.PublicSuffixList
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
|
@ -25,6 +26,7 @@ import org.junit.runner.RunWith
|
|||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.databinding.SyncTabsListItemBinding
|
||||
import org.mozilla.fenix.databinding.ViewSyncedTabsGroupBinding
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
|
@ -80,6 +82,7 @@ class SyncedTabsViewHolderTest {
|
|||
|
||||
@Test
|
||||
fun `TabViewHolder binds active tab`() {
|
||||
every { testContext.components.publicSuffixList } returns PublicSuffixList(testContext)
|
||||
tabViewHolder.bind(SyncedTabsAdapter.AdapterItem.Tab(tab), mockk())
|
||||
|
||||
assertEquals("Firefox", syncTabsListItemBinding.syncedTabItemTitle.text)
|
||||
|
@ -88,6 +91,7 @@ class SyncedTabsViewHolderTest {
|
|||
|
||||
@Test
|
||||
fun `TabViewHolder calls interactor on click`() {
|
||||
every { testContext.components.publicSuffixList } returns PublicSuffixList(testContext)
|
||||
val interactor = mockk<SyncedTabsView.Listener>(relaxed = true)
|
||||
tabViewHolder.bind(SyncedTabsAdapter.AdapterItem.Tab(tab), interactor)
|
||||
|
||||
|
|
|
@ -8,9 +8,12 @@ import android.content.Context
|
|||
import android.widget.FrameLayout
|
||||
import androidx.appcompat.view.ContextThemeWrapper
|
||||
import io.mockk.MockKAnnotations
|
||||
import io.mockk.impl.annotations.MockK
|
||||
import io.mockk.spyk
|
||||
import io.mockk.every
|
||||
import io.mockk.verify
|
||||
import io.mockk.spyk
|
||||
import io.mockk.mockk
|
||||
import io.mockk.impl.annotations.MockK
|
||||
import mozilla.components.browser.icons.BrowserIcons
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertTrue
|
||||
|
@ -18,6 +21,7 @@ import org.junit.Before
|
|||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
|
@ -52,6 +56,7 @@ class TabHistoryAdapterTest {
|
|||
|
||||
@Test
|
||||
fun `creates and binds view holder`() {
|
||||
every { testContext.components.core.icons } returns BrowserIcons(testContext, mockk(relaxed = true))
|
||||
adapter.submitList(listOf(selectedItem, unselectedItem))
|
||||
|
||||
val holder = spyk(adapter.createViewHolder(parent, 0))
|
||||
|
|
|
@ -6,6 +6,7 @@ package org.mozilla.fenix.tabstray.browser
|
|||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import mozilla.components.browser.state.state.TabSessionState
|
||||
|
@ -21,6 +22,8 @@ import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
|||
import org.mozilla.fenix.selection.SelectionHolder
|
||||
import org.mozilla.fenix.tabstray.TabsTrayStore
|
||||
import mozilla.components.browser.state.state.createTab
|
||||
import mozilla.components.lib.publicsuffixlist.PublicSuffixList
|
||||
import org.mozilla.fenix.ext.components
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class AbstractBrowserTabViewHolderTest {
|
||||
|
@ -30,6 +33,7 @@ class AbstractBrowserTabViewHolderTest {
|
|||
|
||||
@Test
|
||||
fun `WHEN itemView is clicked THEN interactor invokes open`() {
|
||||
every { testContext.components.publicSuffixList } returns PublicSuffixList(testContext)
|
||||
val view = LayoutInflater.from(testContext).inflate(R.layout.tab_tray_item, null)
|
||||
val holder = TestTabTrayViewHolder(
|
||||
view,
|
||||
|
@ -50,6 +54,7 @@ class AbstractBrowserTabViewHolderTest {
|
|||
|
||||
@Test
|
||||
fun `WHEN itemView is clicked with a selection holder THEN the select holder is invoked`() {
|
||||
every { testContext.components.publicSuffixList } returns PublicSuffixList(testContext)
|
||||
val view = LayoutInflater.from(testContext).inflate(R.layout.tab_tray_item, null)
|
||||
val selectionHolder = TestSelectionHolder(emptySet())
|
||||
val holder = TestTabTrayViewHolder(
|
||||
|
|
|
@ -4,11 +4,14 @@
|
|||
|
||||
package org.mozilla.fenix.tabstray.browser
|
||||
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import mozilla.components.browser.state.store.BrowserStore
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.tabstray.TabsTrayStore
|
||||
|
||||
|
@ -17,6 +20,7 @@ class AbstractBrowserTrayListTest {
|
|||
|
||||
@Test
|
||||
fun `WHEN recyclerview detaches from window THEN notify adapter`() {
|
||||
every { testContext.components.core.store } returns BrowserStore()
|
||||
val trayList = PrivateBrowserTrayList(testContext)
|
||||
val adapter = mockk<BrowserTabsAdapter>(relaxed = true)
|
||||
|
||||
|
|
|
@ -20,6 +20,8 @@ import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
|||
import org.mozilla.fenix.selection.SelectionHolder
|
||||
import org.mozilla.fenix.tabstray.TabsTrayStore
|
||||
import mozilla.components.browser.state.state.createTab
|
||||
import mozilla.components.browser.state.store.BrowserStore
|
||||
import org.mozilla.fenix.ext.components
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class BrowserTabsAdapterTest {
|
||||
|
@ -30,6 +32,7 @@ class BrowserTabsAdapterTest {
|
|||
|
||||
@Test
|
||||
fun `WHEN bind with payloads is called THEN update the holder`() {
|
||||
every { testContext.components.core.thumbnailStorage } returns mockk()
|
||||
val adapter = BrowserTabsAdapter(context, interactor, store, "Test")
|
||||
val holder = mockk<AbstractBrowserTabViewHolder>(relaxed = true)
|
||||
|
||||
|
@ -51,6 +54,10 @@ class BrowserTabsAdapterTest {
|
|||
|
||||
@Test
|
||||
fun `WHEN the selection holder is set THEN update the selected tab`() {
|
||||
every { testContext.components.core.thumbnailStorage } returns mockk()
|
||||
every { testContext.components.core.store } returns BrowserStore()
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
every { testContext.components.settings } returns mockk(relaxed = true)
|
||||
val adapter = BrowserTabsAdapter(context, interactor, store, "Test")
|
||||
val binding = TabTrayItemBinding.inflate(LayoutInflater.from(testContext))
|
||||
val holder = spyk(
|
||||
|
|
|
@ -5,12 +5,15 @@
|
|||
package org.mozilla.fenix.tabstray.browser
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.components.AppStore
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.tabstray.TabsTrayInteractor
|
||||
import org.mozilla.fenix.tabstray.browser.InactiveTabViewHolder.HeaderHolder
|
||||
|
@ -19,6 +22,7 @@ import org.mozilla.fenix.tabstray.browser.InactiveTabViewHolder.HeaderHolder
|
|||
class InactiveTabViewHolderTest {
|
||||
@Test
|
||||
fun `HeaderHolder - WHEN clicked THEN notify the interactor`() {
|
||||
every { testContext.components.appStore } returns AppStore()
|
||||
val view = LayoutInflater.from(testContext).inflate(HeaderHolder.LAYOUT_ID, null)
|
||||
val interactor: InactiveTabsInteractor = mockk(relaxed = true)
|
||||
val tabsTrayInteractor: TabsTrayInteractor = mockk(relaxed = true)
|
||||
|
|
|
@ -8,6 +8,7 @@ import android.view.LayoutInflater
|
|||
import android.view.View.GONE
|
||||
import android.view.View.VISIBLE
|
||||
import android.widget.TextView
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import mozilla.components.browser.state.state.createTab
|
||||
import mozilla.components.browser.state.store.BrowserStore
|
||||
|
@ -16,6 +17,7 @@ import org.junit.Assert.assertTrue
|
|||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.tabstray.TabsTrayInteractor
|
||||
import org.mozilla.fenix.tabstray.TabsTrayStore
|
||||
|
@ -29,6 +31,10 @@ class AbstractBrowserPageViewHolderTest {
|
|||
val browserStore = BrowserStore()
|
||||
val interactor = mockk<TabsTrayInteractor>(relaxed = true)
|
||||
val browserTrayInteractor = mockk<BrowserTrayInteractor>(relaxed = true)
|
||||
init {
|
||||
every { testContext.components.core.thumbnailStorage } returns mockk()
|
||||
every { testContext.components.settings } returns mockk(relaxed = true)
|
||||
}
|
||||
val adapter = BrowserTabsAdapter(testContext, browserTrayInteractor, tabsTrayStore, "Test")
|
||||
|
||||
@Test
|
||||
|
|
|
@ -7,6 +7,7 @@ package org.mozilla.fenix.trackingprotection
|
|||
import android.view.ViewGroup
|
||||
import android.widget.FrameLayout
|
||||
import androidx.core.view.isVisible
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
|
@ -17,6 +18,7 @@ import org.junit.Before
|
|||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.trackingprotection.TrackingProtectionCategory.CROSS_SITE_TRACKING_COOKIES
|
||||
import org.mozilla.fenix.trackingprotection.TrackingProtectionCategory.SOCIAL_MEDIA_TRACKERS
|
||||
|
@ -99,6 +101,7 @@ class TrackingProtectionPanelViewTest {
|
|||
|
||||
@Test
|
||||
fun testSocialMediaTrackerClick() {
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
view.binding.socialMediaTrackers.performClick()
|
||||
verify { interactor.openDetails(SOCIAL_MEDIA_TRACKERS, categoryBlocked = true) }
|
||||
|
||||
|
@ -108,6 +111,7 @@ class TrackingProtectionPanelViewTest {
|
|||
|
||||
@Test
|
||||
fun testCrossSiteTrackerClick() {
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
view.binding.crossSiteTracking.performClick()
|
||||
verify { interactor.openDetails(CROSS_SITE_TRACKING_COOKIES, categoryBlocked = true) }
|
||||
|
||||
|
|
|
@ -5,13 +5,16 @@ package org.mozilla.fenix.whatsnew
|
|||
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
||||
|
||||
import androidx.preference.PreferenceManager
|
||||
import io.mockk.every
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.ext.clearAndCommit
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.helpers.perf.TestStrictModeManager
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class WhatsNewTest {
|
||||
|
@ -27,6 +30,7 @@ class WhatsNewTest {
|
|||
|
||||
@Test
|
||||
fun `should highlight after fresh install`() {
|
||||
every { testContext.components.strictMode } returns TestStrictModeManager()
|
||||
assertEquals(true, WhatsNew.shouldHighlightWhatsNew(testContext))
|
||||
}
|
||||
|
||||
|
@ -80,6 +84,7 @@ class WhatsNewTest {
|
|||
|
||||
@Test
|
||||
fun `should not highlight after user viewed what's new`() {
|
||||
every { testContext.components.strictMode } returns TestStrictModeManager()
|
||||
assertEquals(true, WhatsNew.shouldHighlightWhatsNew(testContext))
|
||||
|
||||
WhatsNew.userViewedWhatsNew(testContext)
|
||||
|
|
|
@ -15,6 +15,9 @@ import android.speech.RecognizerIntent.EXTRA_RESULTS
|
|||
import android.speech.RecognizerIntent.LANGUAGE_MODEL_FREE_FORM
|
||||
import androidx.appcompat.app.AppCompatActivity.RESULT_OK
|
||||
import androidx.test.core.app.ApplicationProvider
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertNull
|
||||
|
@ -25,7 +28,9 @@ import org.junit.runner.RunWith
|
|||
import org.mozilla.fenix.FenixApplication
|
||||
import org.mozilla.fenix.HomeActivity.Companion.OPEN_TO_BROWSER_AND_LOAD
|
||||
import org.mozilla.fenix.IntentReceiverActivity
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.helpers.perf.TestStrictModeManager
|
||||
import org.mozilla.fenix.widget.VoiceSearchActivity.Companion.PREVIOUS_INTENT
|
||||
import org.mozilla.fenix.widget.VoiceSearchActivity.Companion.SPEECH_PROCESSING
|
||||
import org.mozilla.fenix.widget.VoiceSearchActivity.Companion.SPEECH_REQUEST_CODE
|
||||
|
@ -64,6 +69,8 @@ class VoiceSearchActivityTest {
|
|||
|
||||
@Test
|
||||
fun `process intent with speech processing set to true`() {
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
every { testContext.components.strictMode } returns TestStrictModeManager()
|
||||
allowVoiceIntentToResolveActivity()
|
||||
controller.create()
|
||||
|
||||
|
@ -135,6 +142,8 @@ class VoiceSearchActivityTest {
|
|||
|
||||
@Test
|
||||
fun `handle speech result`() {
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
every { testContext.components.strictMode } returns TestStrictModeManager()
|
||||
allowVoiceIntentToResolveActivity()
|
||||
controller.create()
|
||||
|
||||
|
@ -160,6 +169,8 @@ class VoiceSearchActivityTest {
|
|||
|
||||
@Test
|
||||
fun `handle invalid result code`() {
|
||||
every { testContext.components.analytics } returns mockk(relaxed = true)
|
||||
every { testContext.components.strictMode } returns TestStrictModeManager()
|
||||
allowVoiceIntentToResolveActivity()
|
||||
controller.create()
|
||||
|
||||
|
|
|
@ -67,7 +67,6 @@ buildscript {
|
|||
classpath Deps.tools_kotlingradle
|
||||
classpath Deps.tools_benchmarkgradle
|
||||
classpath Deps.androidx_safeargs
|
||||
classpath Deps.allopen
|
||||
classpath Deps.osslicenses_plugin
|
||||
|
||||
classpath "org.mozilla.components:tooling-glean-gradle:${Versions.mozilla_android_components}"
|
||||
|
|
|
@ -72,7 +72,6 @@ object Deps {
|
|||
const val kotlin_coroutines_test = "org.jetbrains.kotlinx:kotlinx-coroutines-test:${Versions.coroutines}"
|
||||
const val kotlin_coroutines_android = "org.jetbrains.kotlinx:kotlinx-coroutines-android:${Versions.coroutines}"
|
||||
|
||||
const val allopen = "org.jetbrains.kotlin:kotlin-allopen:${Versions.kotlin}"
|
||||
const val osslicenses_plugin = "com.google.android.gms:oss-licenses-plugin:${Versions.osslicenses_plugin}"
|
||||
|
||||
const val mozilla_compose_awesomebar = "org.mozilla.components:compose-awesomebar:${Versions.mozilla_android_components}"
|
||||
|
|
Loading…
Reference in New Issue