For #17917: Use View binding in Onboarding Tests

upstream-sync
codrut.topliceanu 3 years ago committed by mergify[bot]
parent eb29433d41
commit 7acd6997f6

@ -5,14 +5,12 @@
package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.view.LayoutInflater
import android.view.View
import io.mockk.every
import io.mockk.coEvery
import io.mockk.mockk
import io.mockk.mockkObject
import io.mockk.verify
import io.mockk.unmockkObject
import kotlinx.android.synthetic.main.onboarding_automatic_signin.view.*
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.runBlocking
import kotlinx.coroutines.test.runBlockingTest
@ -28,6 +26,7 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.components.BackgroundServices
import org.mozilla.fenix.components.FenixSnackbar
import org.mozilla.fenix.databinding.OnboardingAutomaticSigninBinding
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
@ -35,14 +34,13 @@ import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
@RunWith(FenixRobolectricTestRunner::class)
class OnboardingAutomaticSignInViewHolderTest {
private lateinit var view: View
private lateinit var backgroundServices: BackgroundServices
private lateinit var snackbar: FenixSnackbar
private lateinit var binding: OnboardingAutomaticSigninBinding
@Before
fun setup() {
view = LayoutInflater.from(testContext)
.inflate(OnboardingAutomaticSignInViewHolder.LAYOUT_ID, null)
binding = OnboardingAutomaticSigninBinding.inflate(LayoutInflater.from(testContext))
snackbar = mockk(relaxed = true)
mockkObject(FenixSnackbar.Companion)
@ -57,7 +55,7 @@ class OnboardingAutomaticSignInViewHolderTest {
@Test
fun `bind updates header text`() {
val holder = OnboardingAutomaticSignInViewHolder(view)
val holder = OnboardingAutomaticSignInViewHolder(binding.root)
holder.bind(
mockk {
every { email } returns "email@example.com"
@ -65,9 +63,9 @@ class OnboardingAutomaticSignInViewHolderTest {
)
assertEquals(
"You are signed in as email@example.com on another Firefox browser on this device. Would you like to sign in with this account?",
view.header_text.text
binding.headerText.text
)
assertTrue(view.fxa_sign_in_button.isEnabled)
assertTrue(binding.fxaSignInButton.isEnabled)
}
@Test
@ -79,12 +77,12 @@ class OnboardingAutomaticSignInViewHolderTest {
backgroundServices.accountManager.migrateFromAccount(account)
} returns MigrationResult.Success
val holder = OnboardingAutomaticSignInViewHolder(view, scope = this)
val holder = OnboardingAutomaticSignInViewHolder(binding.root, scope = this)
holder.bind(account)
holder.onClick(view.fxa_sign_in_button)
holder.onClick(binding.fxaSignInButton)
assertEquals("Signing in…", view.fxa_sign_in_button.text)
assertFalse(view.fxa_sign_in_button.isEnabled)
assertEquals("Signing in…", binding.fxaSignInButton.text)
assertFalse(binding.fxaSignInButton.isEnabled)
}
@Test
@ -96,12 +94,12 @@ class OnboardingAutomaticSignInViewHolderTest {
backgroundServices.accountManager.migrateFromAccount(account)
} returns MigrationResult.WillRetry
val holder = OnboardingAutomaticSignInViewHolder(view, scope = this)
val holder = OnboardingAutomaticSignInViewHolder(binding.root, scope = this)
holder.bind(account)
holder.onClick(view.fxa_sign_in_button)
holder.onClick(binding.fxaSignInButton)
assertEquals("Signing in…", view.fxa_sign_in_button.text)
assertFalse(view.fxa_sign_in_button.isEnabled)
assertEquals("Signing in…", binding.fxaSignInButton.text)
assertFalse(binding.fxaSignInButton.isEnabled)
}
@Test
@ -113,12 +111,12 @@ class OnboardingAutomaticSignInViewHolderTest {
backgroundServices.accountManager.migrateFromAccount(account)
} returns MigrationResult.Failure
val holder = OnboardingAutomaticSignInViewHolder(view, scope = this)
val holder = OnboardingAutomaticSignInViewHolder(binding.root, scope = this)
holder.bind(account)
holder.onClick(view.fxa_sign_in_button)
holder.onClick(binding.fxaSignInButton)
assertEquals("Yes, sign me in", view.fxa_sign_in_button.text)
assertTrue(view.fxa_sign_in_button.isEnabled)
assertEquals("Yes, sign me in", binding.fxaSignInButton.text)
assertTrue(binding.fxaSignInButton.isEnabled)
verify { snackbar.setText("Failed to sign-in") }
}
}

@ -5,35 +5,33 @@
package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.view.LayoutInflater
import android.view.View
import io.mockk.mockk
import io.mockk.verify
import kotlinx.android.synthetic.main.onboarding_finish.view.*
import mozilla.components.support.test.robolectric.testContext
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.databinding.OnboardingFinishBinding
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.mozilla.fenix.home.sessioncontrol.OnboardingInteractor
@RunWith(FenixRobolectricTestRunner::class)
class OnboardingFinishViewHolderTest {
private lateinit var view: View
private lateinit var binding: OnboardingFinishBinding
private lateinit var interactor: OnboardingInteractor
@Before
fun setup() {
view = LayoutInflater.from(testContext)
.inflate(OnboardingFinishViewHolder.LAYOUT_ID, null)
binding = OnboardingFinishBinding.inflate(LayoutInflater.from(testContext))
interactor = mockk(relaxed = true)
}
@Test
fun `call interactor on click`() {
OnboardingFinishViewHolder(view, interactor)
OnboardingFinishViewHolder(binding.root, interactor)
view.finish_button.performClick()
binding.finishButton.performClick()
verify { interactor.onStartBrowsingClicked() }
}
}

@ -5,25 +5,23 @@
package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.view.LayoutInflater
import android.view.View
import kotlinx.android.synthetic.main.onboarding_header.view.*
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.R
import org.mozilla.fenix.databinding.OnboardingHeaderBinding
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
@RunWith(FenixRobolectricTestRunner::class)
class OnboardingHeaderViewHolderTest {
private lateinit var view: View
private lateinit var binding: OnboardingHeaderBinding
@Before
fun setup() {
view = LayoutInflater.from(testContext)
.inflate(OnboardingHeaderViewHolder.LAYOUT_ID, null)
binding = OnboardingHeaderBinding.inflate(LayoutInflater.from(testContext))
}
@Test
@ -31,8 +29,8 @@ class OnboardingHeaderViewHolderTest {
val appName = testContext.getString(R.string.app_name)
val welcomeMessage = testContext.getString(R.string.onboarding_header, appName)
OnboardingHeaderViewHolder(view)
OnboardingHeaderViewHolder(binding.root)
assertEquals(welcomeMessage, view.header_text.text)
assertEquals(welcomeMessage, binding.headerText.text)
}
}

@ -5,7 +5,6 @@
package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.navigation.NavController
import androidx.navigation.Navigation
@ -14,7 +13,6 @@ import io.mockk.mockk
import io.mockk.mockkStatic
import io.mockk.unmockkStatic
import io.mockk.verify
import kotlinx.android.synthetic.main.onboarding_manual_signin.view.*
import mozilla.components.support.test.robolectric.testContext
import org.junit.After
import org.junit.Assert.assertEquals
@ -22,26 +20,26 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.OnboardingManualSigninBinding
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.mozilla.fenix.home.HomeFragmentDirections
@RunWith(FenixRobolectricTestRunner::class)
class OnboardingManualSignInViewHolderTest {
private lateinit var view: View
private lateinit var binding: OnboardingManualSigninBinding
private lateinit var navController: NavController
private lateinit var itemView: ViewGroup
@Before
fun setup() {
view = LayoutInflater.from(testContext)
.inflate(OnboardingManualSignInViewHolder.LAYOUT_ID, null)
binding = OnboardingManualSigninBinding.inflate(LayoutInflater.from(testContext))
navController = mockk(relaxed = true)
itemView = mockk(relaxed = true)
mockkStatic(Navigation::class)
every { itemView.context } returns testContext
every { Navigation.findNavController(view) } returns navController
every { Navigation.findNavController(binding.root) } returns navController
}
@After
@ -51,18 +49,18 @@ class OnboardingManualSignInViewHolderTest {
@Test
fun `bind header text`() {
OnboardingManualSignInViewHolder(view).bind()
OnboardingManualSignInViewHolder(binding.root).bind()
val string = testContext.getString(R.string.onboarding_account_sign_in_header_1)
assertEquals(
string,
view.header_text.text
binding.headerText.text
)
}
@Test
fun `navigate on click`() {
OnboardingManualSignInViewHolder(view)
view.fxa_sign_in_button.performClick()
OnboardingManualSignInViewHolder(binding.root)
binding.fxaSignInButton.performClick()
verify { navController.navigate(HomeFragmentDirections.actionGlobalTurnOnSync()) }
}

@ -5,38 +5,36 @@
package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.view.LayoutInflater
import android.view.View
import androidx.appcompat.view.ContextThemeWrapper
import io.mockk.mockk
import io.mockk.verify
import kotlinx.android.synthetic.main.onboarding_private_browsing.view.*
import mozilla.components.support.test.robolectric.testContext
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.OnboardingPrivateBrowsingBinding
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.mozilla.fenix.home.sessioncontrol.OnboardingInteractor
@RunWith(FenixRobolectricTestRunner::class)
class OnboardingPrivacyBrowsingViewHolderTest {
private lateinit var view: View
private lateinit var binding: OnboardingPrivateBrowsingBinding
private lateinit var interactor: OnboardingInteractor
@Before
fun setup() {
val context = ContextThemeWrapper(testContext, R.style.NormalTheme)
view = LayoutInflater.from(context)
.inflate(OnboardingPrivateBrowsingViewHolder.LAYOUT_ID, null)
binding = OnboardingPrivateBrowsingBinding.inflate(LayoutInflater.from(context))
interactor = mockk(relaxed = true)
}
@Test
fun `call interactor on click`() {
OnboardingPrivateBrowsingViewHolder(view, interactor)
OnboardingPrivateBrowsingViewHolder(binding.root, interactor)
view.open_settings_button.performClick()
binding.openSettingsButton.performClick()
verify { interactor.onOpenSettingsClicked() }
}
}

@ -5,38 +5,36 @@
package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.view.LayoutInflater
import android.view.View
import androidx.appcompat.view.ContextThemeWrapper
import io.mockk.mockk
import io.mockk.verify
import kotlinx.android.synthetic.main.onboarding_privacy_notice.view.*
import mozilla.components.support.test.robolectric.testContext
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.OnboardingPrivacyNoticeBinding
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.mozilla.fenix.home.sessioncontrol.OnboardingInteractor
@RunWith(FenixRobolectricTestRunner::class)
class OnboardingPrivacyNoticeViewHolderTest {
private lateinit var view: View
private lateinit var binding: OnboardingPrivacyNoticeBinding
private lateinit var interactor: OnboardingInteractor
@Before
fun setup() {
val context = ContextThemeWrapper(testContext, R.style.NormalTheme)
view = LayoutInflater.from(context)
.inflate(OnboardingPrivacyNoticeViewHolder.LAYOUT_ID, null)
binding = OnboardingPrivacyNoticeBinding.inflate(LayoutInflater.from(context))
interactor = mockk(relaxed = true)
}
@Test
fun `call interactor on click`() {
OnboardingPrivacyNoticeViewHolder(view, interactor)
OnboardingPrivacyNoticeViewHolder(binding.root, interactor)
view.read_button.performClick()
binding.readButton.performClick()
verify { interactor.onReadPrivacyNoticeClicked() }
}
}

@ -5,34 +5,32 @@
package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.view.LayoutInflater
import android.view.View
import kotlinx.android.synthetic.main.onboarding_section_header.view.*
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.OnboardingSectionHeaderBinding
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
@RunWith(FenixRobolectricTestRunner::class)
class OnboardingSectionHeaderViewHolderTest {
private lateinit var view: View
private lateinit var binding: OnboardingSectionHeaderBinding
@Before
fun setup() {
view = LayoutInflater.from(testContext)
.inflate(OnboardingSectionHeaderViewHolder.LAYOUT_ID, null)
binding = OnboardingSectionHeaderBinding.inflate(LayoutInflater.from(testContext))
}
@Test
fun `bind text`() {
val holder = OnboardingSectionHeaderViewHolder(view)
val holder = OnboardingSectionHeaderViewHolder(binding.root)
holder.bind { "Hello world" }
assertEquals(
"Hello world",
view.section_header_text.text
binding.sectionHeaderText.text
)
}
}

@ -5,9 +5,7 @@
package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.view.LayoutInflater
import android.view.View
import io.mockk.every
import kotlinx.android.synthetic.main.onboarding_toolbar_position_picker.view.*
import mozilla.components.support.test.robolectric.testContext
import org.junit.Assert.assertFalse
import org.junit.Assert.assertTrue
@ -16,44 +14,44 @@ import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.components.toolbar.ToolbarPosition
import org.mozilla.fenix.databinding.OnboardingToolbarPositionPickerBinding
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.mozilla.fenix.utils.Settings
@RunWith(FenixRobolectricTestRunner::class)
class OnboardingToolbarPositionPickerViewHolderTest {
private lateinit var view: View
private lateinit var binding: OnboardingToolbarPositionPickerBinding
private lateinit var settings: Settings
@Before
fun setup() {
val components = testContext.components
view = LayoutInflater.from(testContext)
.inflate(OnboardingToolbarPositionPickerViewHolder.LAYOUT_ID, null)
binding = OnboardingToolbarPositionPickerBinding.inflate(LayoutInflater.from(testContext))
settings = components.settings
}
@Test
fun `bottom illustration should select corresponding radio button`() {
every { settings.toolbarPosition } returns ToolbarPosition.TOP
OnboardingToolbarPositionPickerViewHolder(view)
assertTrue(view.toolbar_top_radio_button.isChecked)
assertFalse(view.toolbar_bottom_radio_button.isChecked)
OnboardingToolbarPositionPickerViewHolder(binding.root)
assertTrue(binding.toolbarTopRadioButton.isChecked)
assertFalse(binding.toolbarBottomRadioButton.isChecked)
view.toolbar_bottom_image.performClick()
assertFalse(view.toolbar_top_radio_button.isChecked)
assertTrue(view.toolbar_bottom_radio_button.isChecked)
binding.toolbarBottomImage.performClick()
assertFalse(binding.toolbarTopRadioButton.isChecked)
assertTrue(binding.toolbarBottomRadioButton.isChecked)
}
@Test
fun `top illustration should select corresponding radio button`() {
every { settings.toolbarPosition } returns ToolbarPosition.BOTTOM
OnboardingToolbarPositionPickerViewHolder(view)
assertFalse(view.toolbar_top_radio_button.isChecked)
assertTrue(view.toolbar_bottom_radio_button.isChecked)
OnboardingToolbarPositionPickerViewHolder(binding.root)
assertFalse(binding.toolbarTopRadioButton.isChecked)
assertTrue(binding.toolbarBottomRadioButton.isChecked)
view.toolbar_top_image.performClick()
assertTrue(view.toolbar_top_radio_button.isChecked)
assertFalse(view.toolbar_bottom_radio_button.isChecked)
binding.toolbarTopImage.performClick()
assertTrue(binding.toolbarTopRadioButton.isChecked)
assertFalse(binding.toolbarBottomRadioButton.isChecked)
}
}

@ -5,34 +5,32 @@
package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.view.LayoutInflater
import android.view.View
import androidx.appcompat.view.ContextThemeWrapper
import kotlinx.android.synthetic.main.onboarding_tracking_protection.view.*
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.R
import org.mozilla.fenix.databinding.OnboardingTrackingProtectionBinding
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
@RunWith(FenixRobolectricTestRunner::class)
class OnboardingTrackingProtectionViewHolderTest {
private lateinit var view: View
private lateinit var binding: OnboardingTrackingProtectionBinding
@Before
fun setup() {
val context = ContextThemeWrapper(testContext, R.style.NormalTheme)
view = LayoutInflater.from(context)
.inflate(OnboardingTrackingProtectionViewHolder.LAYOUT_ID, null)
binding = OnboardingTrackingProtectionBinding.inflate(LayoutInflater.from(context))
}
@Test
fun `sets description text`() {
OnboardingTrackingProtectionViewHolder(view)
OnboardingTrackingProtectionViewHolder(binding.root)
val string = testContext.getString(R.string.onboarding_tracking_protection_description_3)
assertEquals(string, view.description_text.text)
assertEquals(string, binding.descriptionText.text)
}
}

@ -7,7 +7,6 @@ package org.mozilla.fenix.home.sessioncontrol.viewholders.onboarding
import android.content.res.Resources
import android.text.Spanned
import android.view.LayoutInflater
import android.view.View
import androidx.core.text.HtmlCompat
import androidx.core.text.HtmlCompat.TO_HTML_PARAGRAPH_LINES_CONSECUTIVE
import io.mockk.every
@ -15,7 +14,6 @@ import io.mockk.mockk
import io.mockk.mockkStatic
import io.mockk.unmockkStatic
import io.mockk.verify
import kotlinx.android.synthetic.main.onboarding_whats_new.view.*
import mozilla.components.support.ktx.android.content.res.resolveAttribute
import mozilla.components.support.test.robolectric.testContext
import org.junit.After
@ -25,20 +23,20 @@ import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
import org.mozilla.fenix.R
import org.mozilla.fenix.databinding.OnboardingWhatsNewBinding
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.mozilla.fenix.home.sessioncontrol.OnboardingInteractor
@RunWith(FenixRobolectricTestRunner::class)
class OnboardingWhatsNewViewHolderTest {
private lateinit var view: View
private lateinit var binding: OnboardingWhatsNewBinding
private lateinit var interactor: OnboardingInteractor
@Before
fun setup() {
mockkStatic("mozilla.components.support.ktx.android.content.res.ThemeKt")
view = LayoutInflater.from(testContext)
.inflate(OnboardingWhatsNewViewHolder.LAYOUT_ID, null)
binding = OnboardingWhatsNewBinding.inflate(LayoutInflater.from(testContext))
interactor = mockk(relaxed = true)
every {
@ -53,22 +51,22 @@ class OnboardingWhatsNewViewHolderTest {
@Test
fun `sets and styles strings`() {
OnboardingWhatsNewViewHolder(view, interactor)
OnboardingWhatsNewViewHolder(binding.root, interactor)
assertEquals(
"Have questions about the redesigned Firefox Preview? Want to know whats changed?",
view.description_text.text
binding.descriptionText.text
)
val getAnswersHtml = HtmlCompat.toHtml(view.get_answers.text as Spanned, TO_HTML_PARAGRAPH_LINES_CONSECUTIVE)
val getAnswersHtml = HtmlCompat.toHtml(binding.getAnswers.text as Spanned, TO_HTML_PARAGRAPH_LINES_CONSECUTIVE)
assertTrue(getAnswersHtml, "<u>Get answers here</u>" in getAnswersHtml)
}
@Test
fun `call interactor on click`() {
OnboardingWhatsNewViewHolder(view, interactor)
OnboardingWhatsNewViewHolder(binding.root, interactor)
view.get_answers.performClick()
binding.getAnswers.performClick()
verify { interactor.onWhatsNewGetAnswersClicked() }
}
}

Loading…
Cancel
Save