@@ -20,6 +20,7 @@ import io.mockk.unmockkAll
2020import io.mockk.verify
2121import io.mockk.verifyOrder
2222import org.junit.After
23+ import org.junit.Assert.assertArrayEquals
2324import org.junit.Assert.assertEquals
2425import org.junit.Assert.assertNotNull
2526import org.junit.Assert.assertNull
@@ -476,6 +477,62 @@ class MapboxNavigationAppDelegateTest {
476477 assertEquals(retrieved, retrievedJava)
477478 }
478479
480+ @Test
481+ fun `verify isConfigurationChanging is false for setup changes` () {
482+ mockMultiMapboxNavigation()
483+ mapboxNavigationApp.setup { navigationOptions }
484+ val testLifecycleOwner = CarAppLifecycleOwnerTest .TestLifecycleOwner ()
485+ testLifecycleOwner.lifecycleRegistry.currentState = Lifecycle .State .RESUMED
486+ mapboxNavigationApp.attach(testLifecycleOwner)
487+
488+ val onAttachedSlot = mutableListOf<Boolean >()
489+ val onDetachedSlot = mutableListOf<Boolean >()
490+ val observerFirst = object : MapboxNavigationObserver {
491+ override fun onAttached (mapboxNavigation : MapboxNavigation ) {
492+ onAttachedSlot.add(mapboxNavigationApp.isConfigurationChanging())
493+ }
494+
495+ override fun onDetached (mapboxNavigation : MapboxNavigation ) {
496+ onDetachedSlot.add(mapboxNavigationApp.isConfigurationChanging())
497+ }
498+ }
499+ mapboxNavigationApp.registerObserver(observerFirst)
500+ mapboxNavigationApp.setup { mockk { every { accessToken } returns " test_access_token_1" } }
501+ mapboxNavigationApp.setup { mockk { every { accessToken } returns " test_access_token_2" } }
502+
503+ assertArrayEquals(onAttachedSlot.toBooleanArray(), booleanArrayOf(false , false , false ))
504+ assertArrayEquals(onDetachedSlot.toBooleanArray(), booleanArrayOf(false , false ))
505+ }
506+
507+ @Test
508+ fun `verify isOptionsChanging is true while the setup changes` () {
509+ mockMultiMapboxNavigation()
510+ mapboxNavigationApp.setup { navigationOptions }
511+ val testLifecycleOwner = CarAppLifecycleOwnerTest .TestLifecycleOwner ()
512+ testLifecycleOwner.lifecycleRegistry.currentState = Lifecycle .State .RESUMED
513+ mapboxNavigationApp.attach(testLifecycleOwner)
514+
515+ val onAttachedSlot = mutableListOf<Boolean >()
516+ val onDetachedSlot = mutableListOf<Boolean >()
517+ val observerFirst = object : MapboxNavigationObserver {
518+ override fun onAttached (mapboxNavigation : MapboxNavigation ) {
519+ onAttachedSlot.add(mapboxNavigationApp.isOptionsChanging())
520+ }
521+
522+ override fun onDetached (mapboxNavigation : MapboxNavigation ) {
523+ onDetachedSlot.add(mapboxNavigationApp.isOptionsChanging())
524+ }
525+ }
526+ mapboxNavigationApp.registerObserver(observerFirst)
527+ mapboxNavigationApp.setup { mockk { every { accessToken } returns " test_access_token_1" } }
528+ mapboxNavigationApp.setup { mockk { every { accessToken } returns " test_access_token_2" } }
529+
530+ assertEquals(3 , onAttachedSlot.size)
531+ assertEquals(2 , onDetachedSlot.size)
532+ assertArrayEquals(onAttachedSlot.toBooleanArray(), booleanArrayOf(false , true , true ))
533+ assertArrayEquals(onDetachedSlot.toBooleanArray(), booleanArrayOf(true , true ))
534+ }
535+
479536 private fun mockActivityLifecycle (): Pair <ComponentActivity , LifecycleRegistry > {
480537 val activity = mockk<ComponentActivity > {
481538 every { isChangingConfigurations } returns false
@@ -486,6 +543,14 @@ class MapboxNavigationAppDelegateTest {
486543 return Pair (activity, lifecycle)
487544 }
488545
546+ private fun mockMultiMapboxNavigation () {
547+ every { MapboxNavigationProvider .create(any()) } answers {
548+ mockk {
549+ every { navigationOptions } returns firstArg()
550+ }
551+ }
552+ }
553+
489554 /* *
490555 * Used for the [MapboxNavigationApp.getObserver] tests because they require a class definition.
491556 */
0 commit comments