Skip to content

Commit 1bf319a

Browse files
committed
add tests for eta_model parameter
1 parent a0f2c8c commit 1bf319a

File tree

4 files changed

+156
-1
lines changed

4 files changed

+156
-1
lines changed

instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/core/CoreRerouteTest.kt

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import com.mapbox.navigation.instrumentation_tests.utils.http.MockDirectionsRefr
3535
import com.mapbox.navigation.instrumentation_tests.utils.http.MockDirectionsRequestHandler
3636
import com.mapbox.navigation.instrumentation_tests.utils.idling.RouteProgressStateIdlingResource
3737
import com.mapbox.navigation.instrumentation_tests.utils.location.MockLocationReplayerRule
38+
import com.mapbox.navigation.instrumentation_tests.utils.location.stayOnPosition
3839
import com.mapbox.navigation.instrumentation_tests.utils.readRawFileText
3940
import com.mapbox.navigation.instrumentation_tests.utils.routes.MockRoute
4041
import com.mapbox.navigation.instrumentation_tests.utils.routes.RoutesProvider
@@ -853,6 +854,49 @@ class CoreRerouteTest : BaseTest<EmptyTestActivity>(EmptyTestActivity::class.jav
853854
assertEquals(routes[1], rerouteResult.navigationRoutes.first())
854855
}
855856

857+
@Test
858+
fun reroute_keeps_eta_model_parameter() = sdkTest {
859+
val mapboxNavigation = createMapboxNavigation()
860+
val coordinates = listOf(
861+
Point.fromLngLat(-77.031991, 38.894721),
862+
Point.fromLngLat(-77.030923, 38.895433)
863+
)
864+
val offRouteLocation = mockLocationUpdatesRule.generateLocationUpdate {
865+
this.latitude = coordinates[0].latitude() + 0.002
866+
this.longitude = coordinates[0].longitude()
867+
}
868+
val handler = MockDirectionsRequestHandler(
869+
DirectionsCriteria.PROFILE_DRIVING_TRAFFIC,
870+
readRawFileText(context, R.raw.route_response_dc_very_short), // TODO
871+
coordinates,
872+
relaxedExpectedCoordinates = true
873+
)
874+
mockWebServerRule.requestHandlers.add(handler)
875+
876+
mapboxNavigation.startTripSession()
877+
stayOnPosition(coordinates[0].latitude(), coordinates[0].longitude(), 0f) {
878+
val routes = mapboxNavigation.requestRoutes(
879+
RouteOptions.builder()
880+
.applyDefaultNavigationOptions()
881+
.applyLanguageAndVoiceUnitOptions(activity)
882+
.baseUrl(mockWebServerRule.baseUrl)
883+
.coordinatesList(coordinates)
884+
.unrecognizedProperties(mapOf("eta_model" to "enhanced"))
885+
.build()
886+
).getSuccessfulResultOrThrowException().routes
887+
888+
mapboxNavigation.setNavigationRoutesAndWaitForUpdate(routes)
889+
}
890+
stayOnPosition(offRouteLocation.latitude, offRouteLocation.longitude, 0f) {
891+
mapboxNavigation.routesUpdates()
892+
.filter { it.reason == RoutesExtra.ROUTES_UPDATE_REASON_REROUTE }
893+
.first()
894+
895+
val rerouteRequest = handler.handledRequests.last()
896+
assertEquals("enhanced", rerouteRequest.requestUrl?.queryParameter("eta_model"))
897+
}
898+
}
899+
856900
private fun createMapboxNavigation(customRefreshInterval: Long? = null): MapboxNavigation {
857901
var mapboxNavigation: MapboxNavigation? = null
858902

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
package com.mapbox.navigation.instrumentation_tests.core
2+
3+
import android.location.Location
4+
import com.mapbox.navigation.base.route.RouterOrigin
5+
import com.mapbox.navigation.instrumentation_tests.utils.location.stayOnPosition
6+
import com.mapbox.navigation.instrumentation_tests.utils.routes.EvRoutesProvider
7+
import com.mapbox.navigation.instrumentation_tests.utils.routes.MockedEvRoutes
8+
import com.mapbox.navigation.instrumentation_tests.utils.tiles.OfflineRegions
9+
import com.mapbox.navigation.instrumentation_tests.utils.tiles.withMapboxNavigationAndOfflineTilesForRegion
10+
import com.mapbox.navigation.instrumentation_tests.utils.withMapboxNavigation
11+
import com.mapbox.navigation.instrumentation_tests.utils.withoutInternet
12+
import com.mapbox.navigation.testing.ui.BaseCoreNoCleanUpTest
13+
import com.mapbox.navigation.testing.ui.utils.coroutines.RouteRequestResult
14+
import com.mapbox.navigation.testing.ui.utils.coroutines.getSuccessfulResultOrThrowException
15+
import com.mapbox.navigation.testing.ui.utils.coroutines.requestRoutes
16+
import com.mapbox.navigation.testing.ui.utils.coroutines.sdkTest
17+
import com.mapbox.navigation.testing.ui.utils.coroutines.setNavigationRoutesAndWaitForUpdate
18+
import com.mapbox.navigation.testing.ui.utils.coroutines.setNavigationRoutesAsync
19+
import org.junit.Assert
20+
import org.junit.Assert.assertEquals
21+
import org.junit.Test
22+
23+
class RequestRoutesTest : BaseCoreNoCleanUpTest() {
24+
25+
override fun setupMockLocation(): Location {
26+
return mockLocationUpdatesRule.generateLocationUpdate {
27+
longitude = 13.361378213031003
28+
latitude = 52.49813341962201
29+
}
30+
}
31+
32+
@Test
33+
fun buildOfflineRouteWithUnknownParameters() = sdkTest(
34+
timeout = INCREASED_TIMEOUT_BECAUSE_OF_REAL_ROUTING_TILES_USAGE
35+
) {
36+
val testRoute = setupBerlinEvRoute()
37+
withMapboxNavigationAndOfflineTilesForRegion(
38+
OfflineRegions.Berlin,
39+
) { navigation ->
40+
navigation.startTripSession()
41+
stayOnPosition(
42+
testRoute.origin.latitude(),
43+
testRoute.origin.longitude(),
44+
0.0f,
45+
) {
46+
withoutInternet {
47+
val requestResult = navigation.requestRoutes(
48+
testRoute.routeOptions.toBuilder()
49+
.unrecognizedProperties(
50+
mapOf(
51+
"unknown_key1" to "unknown_value1",
52+
"unknown_key2" to "333",
53+
)
54+
)
55+
.build()
56+
).getSuccessfulResultOrThrowException()
57+
assertEquals(RouterOrigin.Onboard, requestResult.routerOrigin)
58+
navigation.setNavigationRoutesAndWaitForUpdate(requestResult.routes)
59+
}
60+
}
61+
}
62+
}
63+
64+
private fun setupBerlinEvRoute(): MockedEvRoutes {
65+
val originalTestRoute = EvRoutesProvider.getBerlinEvRoute(
66+
context,
67+
mockWebServerRule.baseUrl
68+
)
69+
mockWebServerRule.requestHandlers.add(originalTestRoute.mockWebServerHandler)
70+
return originalTestRoute
71+
}
72+
}

instrumentation-tests/src/androidTest/java/com/mapbox/navigation/instrumentation_tests/core/RouteAlternativesTest.kt

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,43 @@ class RouteAlternativesTest : BaseCoreNoCleanUpTest() {
295295
}
296296
}
297297

298+
@Test
299+
fun alternative_request_keeps_eta_model_parameter() = sdkTest {
300+
setupMockRequestHandlers()
301+
withMapboxNavigation(
302+
historyRecorderRule = mapboxHistoryTestRule
303+
) { mapboxNavigation ->
304+
val routes = mapboxNavigation.requestNavigationRoutes(
305+
startCoordinates,
306+
unrecognized = mapOf("eta_model" to "enhanced")
307+
)
308+
mockWebServerRule.requestHandlers.clear()
309+
val alternativesHandler = MockDirectionsRequestHandler(
310+
"driving-traffic",
311+
readRawFileText(context, R.raw.route_response_alternative_during_navigation),
312+
startCoordinates,
313+
relaxedExpectedCoordinates = true
314+
)
315+
mockWebServerRule.requestHandlers.add(alternativesHandler)
316+
mapboxNavigation.startTripSession()
317+
mapboxNavigation.flowLocationMatcherResult().first()
318+
mapboxNavigation.setNavigationRoutesAsync(routes)
319+
mockLocationReplayerRule.playRoute(routes.first().directionsRoute)
320+
321+
mapboxNavigation.alternativesUpdates()
322+
.filterIsInstance<NavigationRouteAlternativesResult.OnRouteAlternatives>()
323+
.filter {
324+
it.alternatives.isNotEmpty() && it.alternatives.none {
325+
it.id.startsWith("1SSd29ZxmjD7ELLqDJHRPPDP5W4wdh633IbGo41pJrL6wpJRmzNaMA==")
326+
}
327+
}
328+
.first()
329+
330+
val alternativesRequest = alternativesHandler.handledRequests.last()
331+
assertEquals("enhanced", alternativesRequest.requestUrl?.queryParameter("eta_model"))
332+
}
333+
}
334+
298335
private fun createExternalAlternatives(): List<NavigationRoute> {
299336
return NavigationRoute.create(
300337
readRawFileText(context, R.raw.route_response_alternative_continue),
@@ -328,12 +365,14 @@ class RouteAlternativesTest : BaseCoreNoCleanUpTest() {
328365
}
329366

330367
private suspend fun MapboxNavigation.requestNavigationRoutes(
331-
coordinates: List<Point>
368+
coordinates: List<Point>,
369+
unrecognized: Map<String, String>? = null
332370
): List<NavigationRoute> {
333371
val routeOptions = RouteOptions.builder()
334372
.applyDefaultNavigationOptions()
335373
.alternatives(true)
336374
.coordinatesList(coordinates)
375+
.unrecognizedProperties(unrecognized)
337376
.baseUrl(mockWebServerRule.baseUrl) // Comment out to test a real server
338377
.build()
339378
return requestRoutes(routeOptions)

instrumentation-tests/src/main/res/raw/route_response_dc_enhanced_model.json

Whitespace-only changes.

0 commit comments

Comments
 (0)