1
0
Fork 0

Fix nav graph and theme tests (#12567)

master
Tiger Oakes 2020-07-15 18:04:36 -07:00 committed by GitHub
parent d0e9f1f165
commit a0491b702e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 23 additions and 63 deletions

View File

@ -15,10 +15,10 @@ import mozilla.components.concept.engine.Engine
import mozilla.components.concept.storage.HistoryStorage import mozilla.components.concept.storage.HistoryStorage
import mozilla.components.feature.toolbar.ToolbarAutocompleteFeature import mozilla.components.feature.toolbar.ToolbarAutocompleteFeature
import mozilla.components.support.ktx.android.content.getColorFromAttr 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 mozilla.components.support.ktx.android.view.hideKeyboard
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.search.SearchFragmentState import org.mozilla.fenix.search.SearchFragmentState
import org.mozilla.fenix.theme.ThemeManager
/** /**
* Interface for the Toolbar Interactor. This interface is implemented by objects that want * Interface for the Toolbar Interactor. This interface is implemented by objects that want
@ -71,10 +71,9 @@ class ToolbarView(
false false
} }
background = background = AppCompatResources.getDrawable(
AppCompatResources.getDrawable( context, context.theme.resolveAttribute(R.attr.foundation)
context, ThemeManager.resolveAttribute(R.attr.foundation, context) )
)
edit.hint = context.getString(R.string.search_hint) edit.hint = context.getString(R.string.search_hint)

View File

@ -4,18 +4,13 @@
package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.content.res.Resources
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import io.mockk.every import androidx.appcompat.view.ContextThemeWrapper
import io.mockk.mockk import io.mockk.mockk
import io.mockk.mockkStatic
import io.mockk.unmockkStatic
import io.mockk.verify import io.mockk.verify
import kotlinx.android.synthetic.main.onboarding_private_browsing.view.* import kotlinx.android.synthetic.main.onboarding_private_browsing.view.*
import mozilla.components.support.ktx.android.content.res.resolveAttribute
import mozilla.components.support.test.robolectric.testContext import mozilla.components.support.test.robolectric.testContext
import org.junit.After
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
@ -31,19 +26,10 @@ class OnboardingPrivacyBrowsingViewHolderTest {
@Before @Before
fun setup() { fun setup() {
mockkStatic("mozilla.components.support.ktx.android.content.res.ThemeKt") val context = ContextThemeWrapper(testContext, R.style.NormalTheme)
view = LayoutInflater.from(testContext) view = LayoutInflater.from(context)
.inflate(OnboardingPrivateBrowsingViewHolder.LAYOUT_ID, null) .inflate(OnboardingPrivateBrowsingViewHolder.LAYOUT_ID, null)
interactor = mockk(relaxed = true) interactor = mockk(relaxed = true)
every {
any<Resources.Theme>().resolveAttribute(R.attr.onboardingSelected)
} returns R.color.onboarding_illustration_selected_normal_theme
}
@After
fun teardown() {
unmockkStatic("mozilla.components.support.ktx.android.content.res.ThemeKt")
} }
@Test @Test

View File

@ -4,18 +4,13 @@
package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.content.res.Resources
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import io.mockk.every import androidx.appcompat.view.ContextThemeWrapper
import io.mockk.mockk import io.mockk.mockk
import io.mockk.mockkStatic
import io.mockk.unmockkStatic
import io.mockk.verify import io.mockk.verify
import kotlinx.android.synthetic.main.onboarding_privacy_notice.view.* import kotlinx.android.synthetic.main.onboarding_privacy_notice.view.*
import mozilla.components.support.ktx.android.content.res.resolveAttribute
import mozilla.components.support.test.robolectric.testContext import mozilla.components.support.test.robolectric.testContext
import org.junit.After
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
@ -31,19 +26,10 @@ class OnboardingPrivacyNoticeViewHolderTest {
@Before @Before
fun setup() { fun setup() {
mockkStatic("mozilla.components.support.ktx.android.content.res.ThemeKt") val context = ContextThemeWrapper(testContext, R.style.NormalTheme)
view = LayoutInflater.from(testContext) view = LayoutInflater.from(context)
.inflate(OnboardingPrivacyNoticeViewHolder.LAYOUT_ID, null) .inflate(OnboardingPrivacyNoticeViewHolder.LAYOUT_ID, null)
interactor = mockk(relaxed = true) interactor = mockk(relaxed = true)
every {
any<Resources.Theme>().resolveAttribute(R.attr.onboardingSelected)
} returns R.color.onboarding_illustration_selected_normal_theme
}
@After
fun teardown() {
unmockkStatic("mozilla.components.support.ktx.android.content.res.ThemeKt")
} }
@Test @Test

View File

@ -4,16 +4,11 @@
package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.content.res.Resources
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import io.mockk.every import androidx.appcompat.view.ContextThemeWrapper
import io.mockk.mockkStatic
import io.mockk.unmockkStatic
import kotlinx.android.synthetic.main.onboarding_tracking_protection.view.* import kotlinx.android.synthetic.main.onboarding_tracking_protection.view.*
import mozilla.components.support.ktx.android.content.res.resolveAttribute
import mozilla.components.support.test.robolectric.testContext import mozilla.components.support.test.robolectric.testContext
import org.junit.After
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
@ -28,18 +23,9 @@ class OnboardingTrackingProtectionViewHolderTest {
@Before @Before
fun setup() { fun setup() {
mockkStatic("mozilla.components.support.ktx.android.content.res.ThemeKt") val context = ContextThemeWrapper(testContext, R.style.NormalTheme)
view = LayoutInflater.from(testContext) view = LayoutInflater.from(context)
.inflate(OnboardingTrackingProtectionViewHolder.LAYOUT_ID, null) .inflate(OnboardingTrackingProtectionViewHolder.LAYOUT_ID, null)
every {
any<Resources.Theme>().resolveAttribute(R.attr.onboardingSelected)
} returns R.color.onboarding_illustration_selected_normal_theme
}
@After
fun teardown() {
unmockkStatic("mozilla.components.support.ktx.android.content.res.ThemeKt")
} }
@Test @Test

View File

@ -25,6 +25,7 @@ import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mozilla.fenix.browser.browsingmode.BrowsingMode import org.mozilla.fenix.browser.browsingmode.BrowsingMode
import org.mozilla.fenix.components.FenixSnackbar import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.ext.directionsEq
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
// Robolectric needed for `onShareItem()` // Robolectric needed for `onShareItem()`
@ -189,15 +190,12 @@ class HistoryControllerTest {
fun onShareItem() { fun onShareItem() {
controller.handleShare(historyItem) controller.handleShare(historyItem)
// `verify` checks for referential equality.
// This would fail as the NavDirections are created and used in place in the tested method.
// Capture the NavDirections and `assert` for structural equality after.
verify { verify {
navController.navigate( navController.navigate(directionsEq(
HistoryFragmentDirections.actionGlobalShareFragment( HistoryFragmentDirections.actionGlobalShareFragment(
data = arrayOf(ShareData(url = historyItem.url, title = historyItem.title)) data = arrayOf(ShareData(url = historyItem.url, title = historyItem.title))
) )
) ))
} }
} }

View File

@ -4,6 +4,8 @@
package org.mozilla.fenix.search.toolbar package org.mozilla.fenix.search.toolbar
import android.content.Context
import androidx.appcompat.view.ContextThemeWrapper
import io.mockk.MockKAnnotations import io.mockk.MockKAnnotations
import io.mockk.Runs import io.mockk.Runs
import io.mockk.every import io.mockk.every
@ -21,6 +23,7 @@ import org.junit.Assert.assertTrue
import org.junit.Before import org.junit.Before
import org.junit.Test import org.junit.Test
import org.junit.runner.RunWith import org.junit.runner.RunWith
import org.mozilla.fenix.R
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
@RunWith(FenixRobolectricTestRunner::class) @RunWith(FenixRobolectricTestRunner::class)
@ -28,12 +31,14 @@ class ToolbarViewTest {
@MockK(relaxed = true) private lateinit var interactor: ToolbarInteractor @MockK(relaxed = true) private lateinit var interactor: ToolbarInteractor
@MockK private lateinit var engine: Engine @MockK private lateinit var engine: Engine
private lateinit var context: Context
private lateinit var toolbar: BrowserToolbar private lateinit var toolbar: BrowserToolbar
@Before @Before
fun setup() { fun setup() {
MockKAnnotations.init(this) MockKAnnotations.init(this)
toolbar = spyk(BrowserToolbar(testContext)) context = ContextThemeWrapper(testContext, R.style.NormalTheme)
toolbar = spyk(BrowserToolbar(context))
} }
@Test @Test
@ -68,7 +73,7 @@ class ToolbarViewTest {
} }
private fun buildToolbarView(isPrivate: Boolean) = ToolbarView( private fun buildToolbarView(isPrivate: Boolean) = ToolbarView(
testContext, context,
interactor, interactor,
historyStorage = null, historyStorage = null,
isPrivate = isPrivate, isPrivate = isPrivate,