@@ -2,6 +2,7 @@ package com.mapbox.navigation.core.reroute
22
33import com.mapbox.api.directions.v5.DirectionsCriteria
44import com.mapbox.api.directions.v5.models.RouteOptions
5+ import com.mapbox.geojson.Point
56import com.mapbox.navigation.base.internal.route.routerOrigin
67import com.mapbox.navigation.base.options.RerouteOptions
78import com.mapbox.navigation.base.route.NavigationRoute
@@ -14,8 +15,10 @@ import com.mapbox.navigation.core.trip.session.LocationMatcherResult
1415import com.mapbox.navigation.core.trip.session.TripSession
1516import com.mapbox.navigation.testing.LoggingFrontendTestRule
1617import com.mapbox.navigation.testing.MainCoroutineRule
18+ import com.mapbox.navigation.testing.MapboxJavaObjectsFactory
1719import com.mapbox.navigation.utils.internal.ThreadController
1820import io.mockk.MockKAnnotations
21+ import io.mockk.clearMocks
1922import io.mockk.every
2023import io.mockk.impl.annotations.MockK
2124import io.mockk.just
@@ -55,11 +58,12 @@ class MapboxRerouteControllerTest {
5558 @MockK
5659 private lateinit var rerouteOptions: RerouteOptions
5760
58- @MockK
59- private lateinit var successFromResult: RouteOptionsUpdater .RouteOptionsResult .Success
61+ private val routeOptionsFromSuccessResult = MapboxJavaObjectsFactory .routeOptions(
62+ coordinates = listOf (Point .fromLngLat(53.0 , 27.0 ), Point .fromLngLat(76.5 , 34.8 ))
63+ )
6064
61- @MockK
62- private lateinit var routeOptionsFromSuccessResult : RouteOptions
65+ private val successFromResult =
66+ RouteOptionsUpdater . RouteOptionsResult . Success (routeOptionsFromSuccessResult)
6367
6468 @MockK
6569 private lateinit var errorFromResult: RouteOptionsUpdater .RouteOptionsResult .Error
@@ -79,6 +83,9 @@ class MapboxRerouteControllerTest {
7983 @Before
8084 fun setup () {
8185 MockKAnnotations .init (this , relaxUnitFun = true , relaxed = true )
86+ every {
87+ directionsSession.getPrimaryRouteOptions()
88+ } returns MapboxJavaObjectsFactory .routeOptions()
8289 rerouteController = spyk(
8390 MapboxRerouteController (
8491 directionsSession,
@@ -88,7 +95,6 @@ class MapboxRerouteControllerTest {
8895 ThreadController ()
8996 )
9097 )
91- every { successFromResult.routeOptions } returns routeOptionsFromSuccessResult
9298 }
9399
94100 @After
@@ -142,9 +148,9 @@ class MapboxRerouteControllerTest {
142148 addRerouteStateObserver()
143149 val routes = listOf (
144150 mockk<NavigationRoute > {
145- every { directionsRoute } returns mockk {
146- every { routeOptions() } returns null
147- }
151+ every {
152+ directionsRoute
153+ } returns MapboxJavaObjectsFactory .directionsRoute(routeOptions = null )
148154 }
149155 )
150156 val origin = mockk<RouterOrigin >()
@@ -242,7 +248,7 @@ class MapboxRerouteControllerTest {
242248 } returns 1L
243249
244250 rerouteController.reroute(routeCallback)
245- routeRequestCallback.captured.onFailure(mockk(), mockk ())
251+ routeRequestCallback.captured.onFailure(mockk(), MapboxJavaObjectsFactory .routeOptions ())
246252
247253 verify(exactly = 1 ) {
248254 primaryRerouteObserver.onRerouteStateChanged(RerouteState .FetchingRoute )
@@ -274,7 +280,7 @@ class MapboxRerouteControllerTest {
274280 } returns 1L
275281
276282 rerouteController.reroute(routeCallback)
277- routeRequestCallback.captured.onCanceled(mockk (), mockk())
283+ routeRequestCallback.captured.onCanceled(MapboxJavaObjectsFactory .routeOptions (), mockk())
278284
279285 verify(exactly = 1 ) {
280286 primaryRerouteObserver.onRerouteStateChanged(RerouteState .FetchingRoute )
@@ -343,7 +349,10 @@ class MapboxRerouteControllerTest {
343349 every {
344350 directionsSession.cancelRouteRequest(1L )
345351 } answers {
346- routeRequestCallback.captured.onCanceled(mockk(), mockk())
352+ routeRequestCallback.captured.onCanceled(
353+ MapboxJavaObjectsFactory .routeOptions(),
354+ mockk()
355+ )
347356 }
348357
349358 rerouteController.reroute(routeCallback)
@@ -408,14 +417,10 @@ class MapboxRerouteControllerTest {
408417 Triple (5000f , 1 , 1000.0 ),
409418 Triple (200f , 0 , null ),
410419 ).forEach { (speed, secondsRadius, expectedMetersRadius) ->
411- val mockRo = mockk<RouteOptions > {
412- every { profile() } returns DirectionsCriteria .PROFILE_DRIVING_TRAFFIC
413- }
414- val mockRoBuilder = mockk<RouteOptions .Builder >()
415- every { directionsSession.getPrimaryRouteOptions() } returns mockRo
416- every { mockRo.toBuilder() } returns mockRoBuilder
417- every { mockRoBuilder.avoidManeuverRadius(any()) } returns mockRoBuilder
418- every { mockRoBuilder.build() } returns mockRo
420+ val mockRoute = MapboxJavaObjectsFactory .routeOptions(
421+ profile = DirectionsCriteria .PROFILE_DRIVING_TRAFFIC
422+ )
423+ every { directionsSession.getPrimaryRouteOptions() } returns mockRoute
419424 mockRouteOptionsResult(successFromResult)
420425 addRerouteStateObserver()
421426 every { rerouteOptions.avoidManeuverSeconds } returns secondsRadius
@@ -429,10 +434,15 @@ class MapboxRerouteControllerTest {
429434 }
430435 }
431436
437+ clearMocks(routeOptionsUpdater, answers = false )
432438 rerouteController.reroute(routeCallback)
433439
434440 verify(exactly = 1 ) {
435- mockRoBuilder.avoidManeuverRadius(expectedMetersRadius)
441+ routeOptionsUpdater.update(
442+ mockRoute.toBuilder().avoidManeuverRadius(expectedMetersRadius).build(),
443+ any(),
444+ any()
445+ )
436446 }
437447 }
438448
@@ -455,14 +465,8 @@ class MapboxRerouteControllerTest {
455465 Pair (DirectionsCriteria .PROFILE_DRIVING_TRAFFIC , true ),
456466 Pair (DirectionsCriteria .PROFILE_WALKING , false ),
457467 ).forEach { (profile, result) ->
458- val mockRo = mockk<RouteOptions > {
459- every { profile() } returns profile
460- }
461- val mockRoBuilder = mockk<RouteOptions .Builder >()
468+ val mockRo = MapboxJavaObjectsFactory .routeOptions(profile = profile)
462469 every { directionsSession.getPrimaryRouteOptions() } returns mockRo
463- every { mockRo.toBuilder() } returns mockRoBuilder
464- every { mockRoBuilder.avoidManeuverRadius(any()) } returns mockRoBuilder
465- every { mockRoBuilder.build() } returns mockRo
466470 mockRouteOptionsResult(successFromResult)
467471 addRerouteStateObserver()
468472 every { rerouteOptions.avoidManeuverSeconds } returns 1
@@ -476,16 +480,15 @@ class MapboxRerouteControllerTest {
476480 }
477481 }
478482
483+ clearMocks(routeOptionsUpdater, answers = false )
479484 rerouteController.reroute(routeCallback)
480485
481- verify(
482- exactly = if (result) {
483- 1
484- } else {
485- 0
486- }
487- ) {
488- mockRoBuilder.avoidManeuverRadius(any())
486+ verify(exactly = 1 ) {
487+ routeOptionsUpdater.update(
488+ mockRo.toBuilder().avoidManeuverRadius(if (result) 200.0 else null ).build(),
489+ any(),
490+ any()
491+ )
489492 }
490493 }
491494
@@ -510,7 +513,7 @@ class MapboxRerouteControllerTest {
510513 @Test
511514 fun uses_route_options_delegate () {
512515 mockRouteOptionsResult(successFromResult)
513- val mockNewRouteOptions = mockk< RouteOptions > ()
516+ val mockNewRouteOptions = MapboxJavaObjectsFactory .routeOptions ()
514517 val mockRerouteOptionsDelegateManger = mockk<RerouteOptionsAdapter > {
515518 every { onRouteOptions(any()) } returns mockNewRouteOptions
516519 }
0 commit comments