Skip to content

Commit ccef265

Browse files
committed
add tests for handling shared preference changes in MainActivityTest
1 parent 90ad6a6 commit ccef265

1 file changed

Lines changed: 65 additions & 0 deletions

File tree

app/src/test/kotlin/com/vrem/wifianalyzer/MainActivityTest.kt

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,22 @@ import android.content.SharedPreferences
2121
import android.os.Build
2222
import android.view.Menu
2323
import android.view.MenuItem
24+
import androidx.appcompat.app.AppCompatDelegate
2425
import androidx.test.ext.junit.runners.AndroidJUnit4
2526
import com.google.android.material.navigation.NavigationView
2627
import com.vrem.util.EMPTY
2728
import com.vrem.wifianalyzer.navigation.NavigationMenu
2829
import com.vrem.wifianalyzer.navigation.NavigationMenuController
2930
import com.vrem.wifianalyzer.navigation.options.OptionMenu
31+
import com.vrem.wifianalyzer.settings.ThemeStyle
32+
import com.vrem.wifianalyzer.wifi.accesspoint.ConnectionViewType
3033
import org.assertj.core.api.Assertions.assertThat
3134
import org.junit.After
3235
import org.junit.Test
3336
import org.junit.runner.RunWith
3437
import org.mockito.kotlin.mock
3538
import org.mockito.kotlin.never
39+
import org.mockito.kotlin.spy
3640
import org.mockito.kotlin.verify
3741
import org.mockito.kotlin.whenever
3842
import 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

Comments
 (0)