[fenix] For https://github.com/mozilla-mobile/fenix/issues/24229 - Remove unused MigrationTipProvider
parent
3d282cb3b3
commit
e7ecd285a6
@ -1,111 +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.tips.providers
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.net.Uri
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.metrics.MozillaProductDetector
|
||||
import org.mozilla.fenix.components.metrics.MozillaProductDetector.MozillaProducts.FENIX
|
||||
import org.mozilla.fenix.components.metrics.MozillaProductDetector.MozillaProducts.FENIX_NIGHTLY
|
||||
import org.mozilla.fenix.components.metrics.MozillaProductDetector.MozillaProducts.FIREFOX_NIGHTLY
|
||||
import org.mozilla.fenix.components.tips.Tip
|
||||
import org.mozilla.fenix.components.tips.TipProvider
|
||||
import org.mozilla.fenix.components.tips.TipType
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.settings.SupportUtils
|
||||
|
||||
/**
|
||||
* Tip explaining to users the migration of Fenix channels
|
||||
*/
|
||||
class MigrationTipProvider(private val context: Context) : TipProvider {
|
||||
|
||||
override val tip: Tip? =
|
||||
when (context.packageName) {
|
||||
FENIX.productName -> firefoxPreviewMovedTip()
|
||||
FIREFOX_NIGHTLY.productName -> getNightlyMigrationTip()
|
||||
FENIX_NIGHTLY.productName -> getNightlyMigrationTip()
|
||||
else -> null
|
||||
}
|
||||
|
||||
override val shouldDisplay: Boolean = context.settings().shouldDisplayFenixMovingTip()
|
||||
|
||||
private fun firefoxPreviewMovedTip(): Tip =
|
||||
Tip(
|
||||
type = TipType.Button(
|
||||
text = context.getString(R.string.tip_firefox_preview_moved_button_2),
|
||||
action = ::getFirefoxMovedButtonAction
|
||||
),
|
||||
identifier = getIdentifier(),
|
||||
title = context.getString(R.string.tip_firefox_preview_moved_header),
|
||||
description = context.getString(R.string.tip_firefox_preview_moved_description),
|
||||
learnMoreURL = SupportUtils.getGenericSumoURLForTopic(SupportUtils.SumoTopic.FENIX_MOVING)
|
||||
)
|
||||
|
||||
private fun firefoxPreviewMovedPreviewInstalledTip(): Tip =
|
||||
Tip(
|
||||
type = TipType.Button(
|
||||
text = context.getString(R.string.tip_firefox_preview_moved_button_preview_installed),
|
||||
action = ::getFirefoxMovedButtonAction
|
||||
),
|
||||
identifier = getIdentifier(),
|
||||
title = context.getString(R.string.tip_firefox_preview_moved_header_preview_installed),
|
||||
description = context.getString(R.string.tip_firefox_preview_moved_description_preview_installed),
|
||||
learnMoreURL = SupportUtils.getGenericSumoURLForTopic(SupportUtils.SumoTopic.FENIX_MOVING)
|
||||
)
|
||||
|
||||
private fun firefoxPreviewMovedPreviewNotInstalledTip(): Tip =
|
||||
Tip(
|
||||
type = TipType.Button(
|
||||
text = context.getString(R.string.tip_firefox_preview_moved_button_preview_not_installed),
|
||||
action = ::getFirefoxMovedButtonAction
|
||||
),
|
||||
identifier = getIdentifier(),
|
||||
title = context.getString(R.string.tip_firefox_preview_moved_header_preview_not_installed),
|
||||
description = context.getString(R.string.tip_firefox_preview_moved_description_preview_not_installed),
|
||||
learnMoreURL = SupportUtils.getGenericSumoURLForTopic(SupportUtils.SumoTopic.FENIX_MOVING)
|
||||
)
|
||||
|
||||
private fun getNightlyMigrationTip(): Tip? {
|
||||
return if (MozillaProductDetector.packageIsInstalled(context, FENIX.productName)) {
|
||||
firefoxPreviewMovedPreviewInstalledTip()
|
||||
} else {
|
||||
firefoxPreviewMovedPreviewNotInstalledTip()
|
||||
}
|
||||
}
|
||||
|
||||
private fun getFirefoxMovedButtonAction() {
|
||||
when (context.packageName) {
|
||||
FENIX.productName -> context.startActivity(
|
||||
Intent(Intent.ACTION_VIEW, Uri.parse(SupportUtils.FIREFOX_BETA_PLAY_STORE_URL))
|
||||
)
|
||||
FIREFOX_NIGHTLY.productName -> getNightlyMigrationAction()
|
||||
FENIX_NIGHTLY.productName -> getNightlyMigrationAction()
|
||||
else -> { }
|
||||
}
|
||||
}
|
||||
|
||||
private fun getNightlyMigrationAction() {
|
||||
return if (MozillaProductDetector.packageIsInstalled(context, FENIX.productName)) {
|
||||
context.startActivity(context.packageManager.getLaunchIntentForPackage(FENIX.productName))
|
||||
} else {
|
||||
context.startActivity(
|
||||
Intent(
|
||||
Intent.ACTION_VIEW, Uri.parse(SupportUtils.FIREFOX_NIGHTLY_PLAY_STORE_URL)
|
||||
)
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getIdentifier(): String {
|
||||
return when (context.packageName) {
|
||||
FENIX.productName -> context.getString(R.string.pref_key_migrating_from_fenix_tip)
|
||||
FIREFOX_NIGHTLY.productName -> context.getString(R.string.pref_key_migrating_from_firefox_nightly_tip)
|
||||
FENIX_NIGHTLY.productName -> context.getString(R.string.pref_key_migrating_from_fenix_nightly_tip)
|
||||
else -> { "" }
|
||||
}
|
||||
}
|
||||
}
|
@ -1,208 +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.tips.providers
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.content.Intent.ACTION_VIEW
|
||||
import androidx.core.net.toUri
|
||||
import io.mockk.Runs
|
||||
import io.mockk.every
|
||||
import io.mockk.just
|
||||
import io.mockk.mockk
|
||||
import io.mockk.mockkObject
|
||||
import io.mockk.mockkStatic
|
||||
import io.mockk.spyk
|
||||
import io.mockk.unmockkObject
|
||||
import io.mockk.unmockkStatic
|
||||
import io.mockk.verify
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.After
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Assert.assertFalse
|
||||
import org.junit.Assert.assertNull
|
||||
import org.junit.Assert.assertTrue
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.metrics.MozillaProductDetector
|
||||
import org.mozilla.fenix.components.metrics.MozillaProductDetector.MozillaProducts
|
||||
import org.mozilla.fenix.components.tips.TipType
|
||||
import org.mozilla.fenix.ext.intentFilterEq
|
||||
import org.mozilla.fenix.ext.settings
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.settings.SupportUtils
|
||||
import org.mozilla.fenix.utils.Settings
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class MigrationTipProviderTest {
|
||||
|
||||
private lateinit var context: Context
|
||||
private lateinit var settings: Settings
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
mockkStatic("org.mozilla.fenix.ext.ContextKt")
|
||||
mockkObject(MozillaProductDetector)
|
||||
context = spyk(testContext)
|
||||
settings = mockk()
|
||||
|
||||
every { context.settings() } returns settings
|
||||
every { context.startActivity(any()) } just Runs
|
||||
every { settings.shouldDisplayFenixMovingTip() } returns true
|
||||
}
|
||||
|
||||
@After
|
||||
fun after() {
|
||||
unmockkStatic("org.mozilla.fenix.ext.ContextKt")
|
||||
unmockkObject(MozillaProductDetector)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test FENIX tip`() {
|
||||
every { context.packageName } returns MozillaProducts.FENIX.productName
|
||||
val provider = MigrationTipProvider(context)
|
||||
|
||||
val tip = provider.tip!!
|
||||
val button = tip.type as TipType.Button
|
||||
assertEquals(
|
||||
context.getString(R.string.tip_firefox_preview_moved_button_2),
|
||||
button.text
|
||||
)
|
||||
assertEquals(
|
||||
context.getString(R.string.pref_key_migrating_from_fenix_tip),
|
||||
tip.identifier
|
||||
)
|
||||
assertEquals(
|
||||
context.getString(R.string.tip_firefox_preview_moved_header),
|
||||
tip.title
|
||||
)
|
||||
|
||||
button.action()
|
||||
verify { context.startActivity(intentFilterEq(Intent(ACTION_VIEW, SupportUtils.FIREFOX_BETA_PLAY_STORE_URL.toUri()))) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test FIREFOX_NIGHTLY fenix installed tip`() {
|
||||
val launchIntent = mockk<Intent>()
|
||||
every { context.packageName } returns MozillaProducts.FIREFOX_NIGHTLY.productName
|
||||
every { context.packageManager.getLaunchIntentForPackage(MozillaProducts.FENIX.productName) } returns launchIntent
|
||||
every { MozillaProductDetector.packageIsInstalled(context, MozillaProducts.FENIX.productName) } returns true
|
||||
val provider = MigrationTipProvider(context)
|
||||
|
||||
val tip = provider.tip!!
|
||||
val button = tip.type as TipType.Button
|
||||
assertEquals(
|
||||
context.getString(R.string.tip_firefox_preview_moved_button_preview_installed),
|
||||
button.text
|
||||
)
|
||||
assertEquals(
|
||||
context.getString(R.string.pref_key_migrating_from_firefox_nightly_tip),
|
||||
tip.identifier
|
||||
)
|
||||
assertEquals(
|
||||
context.getString(R.string.tip_firefox_preview_moved_header_preview_installed),
|
||||
tip.title
|
||||
)
|
||||
|
||||
button.action()
|
||||
verify { context.startActivity(launchIntent) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test FIREFOX_NIGHTLY fenix not installed tip`() {
|
||||
every { context.packageName } returns MozillaProducts.FIREFOX_NIGHTLY.productName
|
||||
every { MozillaProductDetector.packageIsInstalled(context, MozillaProducts.FENIX.productName) } returns false
|
||||
val provider = MigrationTipProvider(context)
|
||||
|
||||
val tip = provider.tip!!
|
||||
val button = tip.type as TipType.Button
|
||||
assertEquals(
|
||||
context.getString(R.string.tip_firefox_preview_moved_button_preview_not_installed),
|
||||
button.text
|
||||
)
|
||||
assertEquals(
|
||||
context.getString(R.string.pref_key_migrating_from_firefox_nightly_tip),
|
||||
tip.identifier
|
||||
)
|
||||
assertEquals(
|
||||
context.getString(R.string.tip_firefox_preview_moved_header_preview_not_installed),
|
||||
tip.title
|
||||
)
|
||||
|
||||
button.action()
|
||||
verify { context.startActivity(intentFilterEq(Intent(ACTION_VIEW, SupportUtils.FIREFOX_NIGHTLY_PLAY_STORE_URL.toUri()))) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test FENIX_NIGHTLY fenix installed tip`() {
|
||||
val launchIntent = mockk<Intent>()
|
||||
every { context.packageName } returns MozillaProducts.FENIX_NIGHTLY.productName
|
||||
every { context.packageManager.getLaunchIntentForPackage(MozillaProducts.FENIX.productName) } returns launchIntent
|
||||
every { MozillaProductDetector.packageIsInstalled(context, MozillaProducts.FENIX.productName) } returns true
|
||||
val provider = MigrationTipProvider(context)
|
||||
|
||||
val tip = provider.tip!!
|
||||
val button = tip.type as TipType.Button
|
||||
assertEquals(
|
||||
context.getString(R.string.tip_firefox_preview_moved_button_preview_installed),
|
||||
button.text
|
||||
)
|
||||
assertEquals(
|
||||
context.getString(R.string.pref_key_migrating_from_fenix_nightly_tip),
|
||||
tip.identifier
|
||||
)
|
||||
assertEquals(
|
||||
context.getString(R.string.tip_firefox_preview_moved_header_preview_installed),
|
||||
tip.title
|
||||
)
|
||||
|
||||
button.action()
|
||||
verify { context.startActivity(launchIntent) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test FENIX_NIGHTLY fenix not installed tip`() {
|
||||
every { context.packageName } returns MozillaProducts.FENIX_NIGHTLY.productName
|
||||
every { MozillaProductDetector.packageIsInstalled(context, MozillaProducts.FENIX.productName) } returns false
|
||||
val provider = MigrationTipProvider(context)
|
||||
|
||||
val tip = provider.tip!!
|
||||
val button = tip.type as TipType.Button
|
||||
assertEquals(
|
||||
context.getString(R.string.tip_firefox_preview_moved_button_preview_not_installed),
|
||||
button.text
|
||||
)
|
||||
assertEquals(
|
||||
context.getString(R.string.pref_key_migrating_from_fenix_nightly_tip),
|
||||
tip.identifier
|
||||
)
|
||||
assertEquals(
|
||||
context.getString(R.string.tip_firefox_preview_moved_header_preview_not_installed),
|
||||
tip.title
|
||||
)
|
||||
|
||||
button.action()
|
||||
verify { context.startActivity(intentFilterEq(Intent(ACTION_VIEW, SupportUtils.FIREFOX_NIGHTLY_PLAY_STORE_URL.toUri()))) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test other tip`() {
|
||||
every { context.packageName } returns ""
|
||||
val provider = MigrationTipProvider(context)
|
||||
|
||||
assertNull(provider.tip)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test shouldDisplay`() {
|
||||
every { settings.shouldDisplayFenixMovingTip() } returns false
|
||||
assertFalse(MigrationTipProvider(context).shouldDisplay)
|
||||
|
||||
every { settings.shouldDisplayFenixMovingTip() } returns true
|
||||
assertTrue(MigrationTipProvider(context).shouldDisplay)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue