@@ -22,6 +22,7 @@ import com.mapbox.navigation.instrumentation_tests.utils.routes.RoutesProvider.t
2222import com.mapbox.navigation.testing.ui.BaseTest
2323import com.mapbox.navigation.testing.ui.utils.getMapboxAccessTokenFromResources
2424import com.mapbox.navigation.testing.ui.utils.runOnMainSync
25+ import kotlinx.coroutines.flow.drop
2526import kotlinx.coroutines.flow.first
2627import org.junit.Assert.assertEquals
2728import org.junit.Assert.assertNull
@@ -136,4 +137,55 @@ class RoutesPreviewTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.j
136137 it.navigationRoute == updatedRoutes[0 ]
137138 }
138139 }
140+
141+ @Test
142+ fun start_active_guidance_from_previewed_alternative_route () = sdkTest {
143+ // set routes preview
144+ val routes = RoutesProvider .dc_short_with_alternative(activity).toNavigationRoutes()
145+ mapboxNavigation.setRoutesPreview(routes)
146+ val preview = mapboxNavigation.routesPreviewUpdates()
147+ .first { it.reason == RoutesPreviewUpdateReasons .PREVIEW_NEW }
148+ // switch to alternative route
149+ mapboxNavigation.changeRoutesPreviewPrimaryRoute(
150+ preview.routesPreview!! .originalRoutesList[1 ]
151+ )
152+ val updatedPreview = mapboxNavigation.routesPreviewUpdates()
153+ .first { it != preview }
154+ // start active guidance
155+ mapboxNavigation.setNavigationRoutes(updatedPreview.routesPreview!! .routesList)
156+ mapboxNavigation.setRoutesPreview(emptyList())
157+ val routesUpdate = mapboxNavigation.routesUpdates()
158+ .first { it.reason == RoutesExtra .ROUTES_UPDATE_REASON_NEW }
159+ assertEquals(
160+ listOf (
161+ routes[1 ],
162+ routes[0 ]
163+ ),
164+ routesUpdate.navigationRoutes
165+ )
166+ val previewAlternativeMetadata = updatedPreview.routesPreview!! .alternativesMetadata.first()
167+ val activeGuidanceAlternativeMetadata = mapboxNavigation
168+ .getAlternativeMetadataFor(routes[0 ])!!
169+ // Doesn't pass as they have different alternative ids
170+ // assertEquals(
171+ // previewAlternativeMetadata,
172+ // activeGuidanceAlternativeMetadata
173+ // )
174+ assertEquals(
175+ previewAlternativeMetadata.infoFromStartOfPrimary,
176+ activeGuidanceAlternativeMetadata.infoFromStartOfPrimary
177+ )
178+ assertEquals(
179+ previewAlternativeMetadata.forkIntersectionOfAlternativeRoute,
180+ activeGuidanceAlternativeMetadata.forkIntersectionOfAlternativeRoute
181+ )
182+ assertEquals(
183+ previewAlternativeMetadata.infoFromFork,
184+ activeGuidanceAlternativeMetadata.infoFromFork
185+ )
186+ assertEquals(
187+ previewAlternativeMetadata.forkIntersectionOfPrimaryRoute,
188+ activeGuidanceAlternativeMetadata.forkIntersectionOfPrimaryRoute
189+ )
190+ }
139191}
0 commit comments