From 7b9f74138c3132ac70f8b0884cb79b75287bd9aa Mon Sep 17 00:00:00 2001 From: Mihai Branescu Date: Mon, 27 Jan 2020 15:42:28 +0200 Subject: [PATCH] For #7559 - added unit test for same locale selected --- .../advanced/LocaleSettingsControllerTest.kt | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) diff --git a/app/src/test/java/org/mozilla/fenix/settings/advanced/LocaleSettingsControllerTest.kt b/app/src/test/java/org/mozilla/fenix/settings/advanced/LocaleSettingsControllerTest.kt index cc5b0110b..ebe78b5a6 100644 --- a/app/src/test/java/org/mozilla/fenix/settings/advanced/LocaleSettingsControllerTest.kt +++ b/app/src/test/java/org/mozilla/fenix/settings/advanced/LocaleSettingsControllerTest.kt @@ -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() + 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() } }