@@ -21,18 +21,22 @@ import android.content.SharedPreferences
2121import android.os.Build
2222import android.view.Menu
2323import android.view.MenuItem
24+ import androidx.appcompat.app.AppCompatDelegate
2425import androidx.test.ext.junit.runners.AndroidJUnit4
2526import com.google.android.material.navigation.NavigationView
2627import com.vrem.util.EMPTY
2728import com.vrem.wifianalyzer.navigation.NavigationMenu
2829import com.vrem.wifianalyzer.navigation.NavigationMenuController
2930import com.vrem.wifianalyzer.navigation.options.OptionMenu
31+ import com.vrem.wifianalyzer.settings.ThemeStyle
32+ import com.vrem.wifianalyzer.wifi.accesspoint.ConnectionViewType
3033import org.assertj.core.api.Assertions.assertThat
3134import org.junit.After
3235import org.junit.Test
3336import org.junit.runner.RunWith
3437import org.mockito.kotlin.mock
3538import org.mockito.kotlin.never
39+ import org.mockito.kotlin.spy
3640import org.mockito.kotlin.verify
3741import org.mockito.kotlin.whenever
3842import org.robolectric.Robolectric
@@ -239,6 +243,67 @@ class MainActivityTest {
239243 verify(scannerService).update()
240244 }
241245
246+ @Test
247+ fun onSharedPreferenceChangedWithLanguageKeyShouldSetLocales () {
248+ // setup
249+ val scannerService = MainContextHelper .INSTANCE .scannerService
250+ val sharedPreferences: SharedPreferences = mock()
251+ val languageKey = fixture.getString(R .string.language_key)
252+ val languageTag = " en"
253+ whenever(sharedPreferences.getString(languageKey, " " )).thenReturn(languageTag)
254+ // execute
255+ fixture.onSharedPreferenceChanged(sharedPreferences, languageKey)
256+ // validate
257+ verify(scannerService).update()
258+ assertThat(AppCompatDelegate .getApplicationLocales().toLanguageTags()).isEqualTo(languageTag)
259+ }
260+
261+ @Test
262+ fun onSharedPreferenceChangedWithLanguageKeyAndEmptyTagShouldSetEmptyLocales () {
263+ // setup
264+ val scannerService = MainContextHelper .INSTANCE .scannerService
265+ val sharedPreferences: SharedPreferences = mock()
266+ val languageKey = fixture.getString(R .string.language_key)
267+ whenever(sharedPreferences.getString(languageKey, " " )).thenReturn(" " )
268+ // execute
269+ fixture.onSharedPreferenceChanged(sharedPreferences, languageKey)
270+ // validate
271+ verify(scannerService).update()
272+ assertThat(AppCompatDelegate .getApplicationLocales().isEmpty).isTrue
273+ }
274+
275+ @Test
276+ fun onSharedPreferenceChangedWithThemeReloadRequiredShouldStopScannerAndRecreate () {
277+ // setup
278+ val scannerService = MainContextHelper .INSTANCE .scannerService
279+ val settings = MainContextHelper .INSTANCE .settings
280+ whenever(settings.themeStyle()).thenReturn(ThemeStyle .BLACK )
281+ whenever(settings.connectionViewType()).thenReturn(fixture.mainReload.connectionViewType)
282+ val sharedPreferences: SharedPreferences = mock()
283+ val spyFixture = spy(fixture)
284+ // execute
285+ spyFixture.onSharedPreferenceChanged(sharedPreferences, " some_key" )
286+ // validate
287+ verify(scannerService).stop()
288+ verify(spyFixture).recreate()
289+ }
290+
291+ @Test
292+ fun onSharedPreferenceChangedWithConnectionViewTypeReloadRequiredShouldStopScannerAndRecreate () {
293+ // setup
294+ val scannerService = MainContextHelper .INSTANCE .scannerService
295+ val settings = MainContextHelper .INSTANCE .settings
296+ whenever(settings.themeStyle()).thenReturn(fixture.mainReload.themeStyle)
297+ whenever(settings.connectionViewType()).thenReturn(ConnectionViewType .HIDE )
298+ val sharedPreferences: SharedPreferences = mock()
299+ val spyFixture = spy(fixture)
300+ // execute
301+ spyFixture.onSharedPreferenceChanged(sharedPreferences, " some_key" )
302+ // validate
303+ verify(scannerService).stop()
304+ verify(spyFixture).recreate()
305+ }
306+
242307 @Test
243308 fun optionMenu () {
244309 // execute
0 commit comments