diff --git a/instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/core/RouteAlternativesTest.kt b/instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/core/RouteAlternativesTest.kt index 0ec57ce1498..78a50bfb47d 100644 --- a/instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/core/RouteAlternativesTest.kt +++ b/instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/core/RouteAlternativesTest.kt @@ -10,6 +10,7 @@ import com.mapbox.navigation.base.trip.model.RouteProgress import com.mapbox.navigation.core.MapboxNavigation import com.mapbox.navigation.core.directions.session.RoutesExtra import com.mapbox.navigation.core.internal.extensions.flowLocationMatcherResult +import com.mapbox.navigation.core.internal.extensions.flowOnFinalDestinationArrival import com.mapbox.navigation.core.routealternatives.NavigationRouteAlternativesObserver import com.mapbox.navigation.core.routealternatives.RouteAlternativesError import com.mapbox.navigation.instrumentation_tests.R @@ -301,6 +302,55 @@ class RouteAlternativesTest : BaseCoreNoCleanUpTest() { } } + @Test // NN-1023 + fun disableContinuousAlternatives() = sdkTest { + setupMockRequestHandlers() + withMapboxNavigation( + customConfig = """{"navigation":{"alternativeRoutes":{"maxAlternatives":0}}}""", + historyRecorderRule = mapboxHistoryTestRule + ) { mapboxNavigation -> + val routes = mapboxNavigation.requestNavigationRoutes(startCoordinates) + + mockWebServerRule.requestHandlers.clear() + mockWebServerRule.requestHandlers.add( + MockDirectionsRequestHandler( + "driving-traffic", + readRawFileText(context, R.raw.route_response_alternative_during_navigation), + startCoordinates, + relaxedExpectedCoordinates = true + ) + ) + stayOnPosition( + startCoordinates.first().latitude(), + startCoordinates.first().longitude(), + 30f + ) { + mapboxNavigation.startTripSession() + mapboxNavigation.flowLocationMatcherResult().first() + } + mapboxNavigation.setNavigationRoutesAsync(routes) + var alternativeUpdates = 0 + mapboxNavigation.registerRouteAlternativesObserver( + object : NavigationRouteAlternativesObserver { + override fun onRouteAlternatives( + routeProgress: RouteProgress, + alternatives: List, + routerOrigin: RouterOrigin + ) { + alternativeUpdates++ + } + + override fun onRouteAlternativesError(error: RouteAlternativesError) { + } + } + ) + mockLocationReplayerRule.playRoute(routes.first().directionsRoute) + + mapboxNavigation.flowOnFinalDestinationArrival().first() + assertEquals(0, alternativeUpdates) + } + } + private fun createExternalAlternatives(): List { return NavigationRoute.create( readRawFileText(context, R.raw.route_response_alternative_continue), diff --git a/instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/utils/MapboxNavigationCreator.kt b/instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/utils/MapboxNavigationCreator.kt index 186f8544544..85f3e6bfe95 100644 --- a/instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/utils/MapboxNavigationCreator.kt +++ b/instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/utils/MapboxNavigationCreator.kt @@ -6,6 +6,7 @@ import com.mapbox.bindgen.Value import com.mapbox.common.TileDataDomain import com.mapbox.common.TileStore import com.mapbox.common.TileStoreOptions +import com.mapbox.navigation.base.options.DeviceProfile import com.mapbox.navigation.base.options.NavigationOptions import com.mapbox.navigation.base.options.RoutingTilesOptions import com.mapbox.navigation.core.MapboxNavigation @@ -17,6 +18,7 @@ import java.net.URI suspend inline fun BaseCoreNoCleanUpTest.withMapboxNavigation( useRealTiles: Boolean = false, tileStore: TileStore? = null, + customConfig: String? = null, historyRecorderRule: MapboxHistoryTestRule? = null, // TODO: copy features to new infra block: (navigation: MapboxNavigation) -> Unit ) { @@ -37,6 +39,9 @@ suspend inline fun BaseCoreNoCleanUpTest.withMapboxNavigation( .tileStore(tileStore) .build() routingTilesOptions(routingTilesOptions) + customConfig?.let { + deviceProfile(DeviceProfile.Builder().customConfig(it).build()) + } } .build() )