|
|
|
@ -11,6 +11,7 @@ import io.mockk.every
|
|
|
|
|
import io.mockk.just
|
|
|
|
|
import io.mockk.mockk
|
|
|
|
|
import io.mockk.mockkObject
|
|
|
|
|
import io.mockk.mockkStatic
|
|
|
|
|
import io.mockk.verify
|
|
|
|
|
import mozilla.components.support.locale.LocaleManager
|
|
|
|
|
import mozilla.components.support.test.mock
|
|
|
|
@ -30,6 +31,33 @@ class LocaleSettingsControllerTest {
|
|
|
|
|
controller = DefaultLocaleSettingsController(context, localeSettingsStore)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
fun `don't set locale if same locale is chosen`() {
|
|
|
|
|
val selectedLocale = Locale("en", "UK")
|
|
|
|
|
every { localeSettingsStore.state } returns LocaleSettingsState(
|
|
|
|
|
mockk(),
|
|
|
|
|
mockk(),
|
|
|
|
|
selectedLocale
|
|
|
|
|
)
|
|
|
|
|
mockkObject(LocaleManager)
|
|
|
|
|
mockkStatic("org.mozilla.fenix.settings.advanced.LocaleManagerExtensionKt")
|
|
|
|
|
every { LocaleManager.getCurrentLocale(context) } returns mockk()
|
|
|
|
|
every { LocaleManager.isDefaultLocaleSelected(context) } returns false
|
|
|
|
|
|
|
|
|
|
controller.handleLocaleSelected(selectedLocale)
|
|
|
|
|
|
|
|
|
|
verify(
|
|
|
|
|
inverse = true,
|
|
|
|
|
verifyBlock = { localeSettingsStore.dispatch(LocaleSettingsAction.Select(selectedLocale)) })
|
|
|
|
|
verify(
|
|
|
|
|
inverse = true,
|
|
|
|
|
verifyBlock = { LocaleManager.setNewLocale(context, selectedLocale.toLanguageTag()) })
|
|
|
|
|
verify(
|
|
|
|
|
inverse = true,
|
|
|
|
|
verifyBlock = { LocaleManager.updateBaseConfiguration(context, selectedLocale) })
|
|
|
|
|
verify(inverse = true, verifyBlock = { (context as Activity).recreate() })
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
fun `set a new locale from the list`() {
|
|
|
|
|
val selectedLocale = Locale("en", "UK")
|
|
|
|
@ -40,6 +68,8 @@ class LocaleSettingsControllerTest {
|
|
|
|
|
otherLocale
|
|
|
|
|
)
|
|
|
|
|
mockkObject(LocaleManager)
|
|
|
|
|
mockkStatic("org.mozilla.fenix.settings.advanced.LocaleManagerExtensionKt")
|
|
|
|
|
every { LocaleManager.updateBaseConfiguration(context, selectedLocale) } just Runs
|
|
|
|
|
every {
|
|
|
|
|
LocaleManager.setNewLocale(
|
|
|
|
|
context,
|
|
|
|
@ -51,9 +81,37 @@ class LocaleSettingsControllerTest {
|
|
|
|
|
|
|
|
|
|
verify { localeSettingsStore.dispatch(LocaleSettingsAction.Select(selectedLocale)) }
|
|
|
|
|
verify { LocaleManager.setNewLocale(context, selectedLocale.toLanguageTag()) }
|
|
|
|
|
verify { LocaleManager.updateBaseConfiguration(context, selectedLocale) }
|
|
|
|
|
verify { (context as Activity).recreate() }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
fun `don't set default locale if default locale is already chosen`() {
|
|
|
|
|
val selectedLocale = Locale("en", "UK")
|
|
|
|
|
val localeList = ArrayList<Locale>()
|
|
|
|
|
localeList.add(selectedLocale)
|
|
|
|
|
every { localeSettingsStore.state } returns LocaleSettingsState(
|
|
|
|
|
localeList,
|
|
|
|
|
mockk(),
|
|
|
|
|
mockk()
|
|
|
|
|
)
|
|
|
|
|
mockkStatic("org.mozilla.fenix.settings.advanced.LocaleManagerExtensionKt")
|
|
|
|
|
every { LocaleManager.isDefaultLocaleSelected(context) } returns true
|
|
|
|
|
|
|
|
|
|
controller.handleDefaultLocaleSelected()
|
|
|
|
|
|
|
|
|
|
verify(
|
|
|
|
|
inverse = true,
|
|
|
|
|
verifyBlock = { localeSettingsStore.dispatch(LocaleSettingsAction.Select(selectedLocale)) })
|
|
|
|
|
verify(
|
|
|
|
|
inverse = true,
|
|
|
|
|
verifyBlock = { LocaleManager.resetToSystemDefault(context) })
|
|
|
|
|
verify(
|
|
|
|
|
inverse = true,
|
|
|
|
|
verifyBlock = { LocaleManager.updateBaseConfiguration(context, selectedLocale) })
|
|
|
|
|
verify(inverse = true, verifyBlock = { (context as Activity).recreate() })
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@Test
|
|
|
|
|
fun `set the default locale as the new locale`() {
|
|
|
|
|
val selectedLocale = Locale("en", "UK")
|
|
|
|
@ -65,12 +123,15 @@ class LocaleSettingsControllerTest {
|
|
|
|
|
mockk()
|
|
|
|
|
)
|
|
|
|
|
mockkObject(LocaleManager)
|
|
|
|
|
mockkStatic("org.mozilla.fenix.settings.advanced.LocaleManagerExtensionKt")
|
|
|
|
|
every { LocaleManager.resetToSystemDefault(context) } just Runs
|
|
|
|
|
every { LocaleManager.updateBaseConfiguration(context, selectedLocale) } just Runs
|
|
|
|
|
|
|
|
|
|
controller.handleDefaultLocaleSelected()
|
|
|
|
|
|
|
|
|
|
verify { localeSettingsStore.dispatch(LocaleSettingsAction.Select(selectedLocale)) }
|
|
|
|
|
verify { LocaleManager.resetToSystemDefault(context) }
|
|
|
|
|
verify { LocaleManager.updateBaseConfiguration(context, selectedLocale) }
|
|
|
|
|
verify { (context as Activity).recreate() }
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|