commit 02679476ca2ac52172cca6b336cf87fbcce76bf3 parent 2e4fd6c92d3b3ce04f1b7e86ce49070d7f0da011 Author: mcarare <48995920+mcarare@users.noreply.github.com> Date: Mon, 3 Nov 2025 14:15:01 +0000 Bug 1997888 - Use real LocaleManager in tests. r=android-reviewers,giorga This patch refactors `LocaleManagerExtensionTest` to use a real `LocaleManager` instance instead of mocks. This provides more realistic test coverage. Differential Revision: https://phabricator.services.mozilla.com/D271059 Diffstat:
2 files changed, 21 insertions(+), 13 deletions(-)
diff --git a/mobile/android/android-components/components/support/locale/src/main/java/mozilla/components/support/locale/LocaleManager.kt b/mobile/android/android-components/components/support/locale/src/main/java/mozilla/components/support/locale/LocaleManager.kt @@ -9,9 +9,11 @@ import android.content.Context import android.content.SharedPreferences import android.content.res.Configuration import android.content.res.Resources -import androidx.appcompat.app.AppCompatActivity +import androidx.annotation.VisibleForTesting import androidx.core.content.edit import androidx.core.os.ConfigurationCompat +import mozilla.components.support.locale.LocaleManager.getCurrentLocale +import mozilla.components.support.locale.LocaleManager.setNewLocale import java.util.Locale import mozilla.components.support.base.R as supportBaseR @@ -106,7 +108,13 @@ object LocaleManager { Locale.setDefault(locale) } - internal fun clear(context: Context) { + /** + * Clears the stored locale preference. + * + * @param context The [Context] used to access SharedPreferences. + */ + @VisibleForTesting + fun clear(context: Context) { Storage.clear(context) } diff --git a/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/settings/advanced/LocaleManagerExtensionTest.kt b/mobile/android/fenix/app/src/test/java/org/mozilla/fenix/settings/advanced/LocaleManagerExtensionTest.kt @@ -5,10 +5,9 @@ package org.mozilla.fenix.settings.advanced import android.content.Context -import io.mockk.every -import io.mockk.mockk -import io.mockk.mockkObject import mozilla.components.support.locale.LocaleManager +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.assertTrue @@ -27,8 +26,13 @@ class LocaleManagerExtensionTest { @Before fun setup() { - context = mockk() - mockkObject(LocaleManager) + context = testContext + LocaleManager.clear(context) + } + + @After + fun tearDown() { + LocaleManager.clear(context) } @Test @@ -46,8 +50,6 @@ class LocaleManagerExtensionTest { @Test @Config(qualifiers = "en-rUS") fun `default locale selected`() { - every { LocaleManager.getCurrentLocale(context) } returns null - assertTrue(LocaleManager.isDefaultLocaleSelected(context)) } @@ -55,7 +57,7 @@ class LocaleManagerExtensionTest { @Config(qualifiers = "en-rUS") fun `custom locale selected`() { val selectedLocale = Locale.Builder().setLanguage("en").setRegion("UK").build() - every { LocaleManager.getCurrentLocale(context) } returns selectedLocale + LocaleManager.setNewLocale(context, locale = selectedLocale) assertFalse(LocaleManager.isDefaultLocaleSelected(context)) } @@ -67,7 +69,7 @@ class LocaleManagerExtensionTest { val selectedLocale = Locale.Builder().setLanguage("en").setRegion("UK").build() val localeList = listOf(otherLocale, selectedLocale) - every { LocaleManager.getCurrentLocale(context) } returns selectedLocale + LocaleManager.setNewLocale(context, locale = selectedLocale) assertEquals(selectedLocale, LocaleManager.getSelectedLocale(context, localeList)) } @@ -79,8 +81,6 @@ class LocaleManagerExtensionTest { val secondLocale = Locale.Builder().setLanguage("en").setRegion("UK").build() val localeList = listOf(firstLocale, secondLocale) - every { LocaleManager.getCurrentLocale(context) } returns null - assertEquals("en-US", LocaleManager.getSelectedLocale(context, localeList).toLanguageTag()) } }