1
0
Fork 0
fenix/app/src/test/java/org/mozilla/fenix/settings/advanced/LocaleManagerExtensionTest.kt

97 lines
3.1 KiB
Kotlin

/* 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.settings.advanced
import android.content.Context
import io.mockk.every
import io.mockk.mockk
import io.mockk.mockkObject
import io.mockk.mockkStatic
import mozilla.components.support.locale.LocaleManager
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.BuildConfig
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
import org.robolectric.annotation.Config
import java.util.Locale
@RunWith(FenixRobolectricTestRunner::class)
class LocaleManagerExtensionTest {
@Before
fun setup() {
mockkStatic("org.mozilla.fenix.settings.advanced.LocaleManagerExtensionKt")
}
@Test
@Config(qualifiers = "en-rUS")
fun `build supported locale list`() {
val list = LocaleManager.getSupportedLocales()
// Expect all supported locales + 'follow default option'
val expectedSize = BuildConfig.SUPPORTED_LOCALE_ARRAY.size + 1
assertEquals(expectedSize, list.size)
assertTrue(list.isNotEmpty())
}
@Test
@Config(qualifiers = "en-rUS")
fun `default locale selected`() {
val context: Context = mockk()
mockkObject(LocaleManager)
every { LocaleManager.getCurrentLocale(context) } returns null
assertTrue(LocaleManager.isDefaultLocaleSelected(context))
}
@Test
@Config(qualifiers = "en-rUS")
fun `custom locale selected`() {
val context: Context = mockk()
mockkObject(LocaleManager)
val selectedLocale = Locale("en", "UK")
every { LocaleManager.getCurrentLocale(context) } returns selectedLocale
assertFalse(LocaleManager.isDefaultLocaleSelected(context))
}
@Test
@Config(qualifiers = "en-rUS")
fun `match current stored locale string with a Locale from our list`() {
val context: Context = mockk()
mockkObject(LocaleManager)
val otherLocale = Locale("fr")
val selectedLocale = Locale("en", "UK")
val localeList = ArrayList<Locale>()
localeList.add(otherLocale)
localeList.add(selectedLocale)
every { LocaleManager.getCurrentLocale(context) } returns selectedLocale
assertEquals(selectedLocale, LocaleManager.getSelectedLocale(context, localeList))
}
@Test
@Config(qualifiers = "en-rUS")
fun `match null stored locale with the default Locale from our list`() {
val context: Context = mockk()
mockkObject(LocaleManager)
val firstLocale = Locale("fr")
val secondLocale = Locale("en", "UK")
val localeList = ArrayList<Locale>()
localeList.add(firstLocale)
localeList.add(secondLocale)
every { LocaleManager.getCurrentLocale(context) } returns null
assertEquals("en-US", LocaleManager.getSelectedLocale(context, localeList).toLanguageTag())
}
}