1+ package com .mapbox .services .android .navigation .v5 .navigation ;
2+
3+ import com .mapbox .api .directions .v5 .models .DirectionsRoute ;
4+ import com .mapbox .navigator .Navigator ;
5+ import com .mapbox .navigator .RouterResult ;
6+
7+ import org .junit .Test ;
8+ import org .mockito .ArgumentCaptor ;
9+
10+ import static org .junit .Assert .assertEquals ;
11+ import static org .mockito .ArgumentMatchers .any ;
12+ import static org .mockito .ArgumentMatchers .eq ;
13+ import static org .mockito .Mockito .mock ;
14+ import static org .mockito .Mockito .verify ;
15+ import static org .mockito .Mockito .when ;
16+
17+ public class OfflineRouteRetrievalTaskTest {
18+
19+ @ Test
20+ public void checksOnErrorIsCalledIfRouteIsNotFetched () {
21+ Navigator mockedNavigator = mock (Navigator .class );
22+ OnOfflineRouteFoundCallback mockedCallback = mock (OnOfflineRouteFoundCallback .class );
23+ RouterResult mockedResult = mock (RouterResult .class );
24+ when (mockedResult .getJson ()).thenReturn ("{\" status\" : \" Bad Request\" , \" status_code\" : 400, \" error\" : \" No " +
25+ "suitable edges near location\" , \" error_code\" : 171}" );
26+ OfflineRouteRetrievalTask theOfflineRouteRetrievalTask = new OfflineRouteRetrievalTask (mockedNavigator ,
27+ mockedCallback , mockedResult );
28+ DirectionsRoute nullRoute = null ;
29+
30+ theOfflineRouteRetrievalTask .onPostExecute (nullRoute );
31+
32+ verify (mockedCallback ).onError (any (OfflineError .class ));
33+ }
34+
35+ @ Test
36+ public void checksErrorMessageIsWellFormedIfRouteIsNotFetched () {
37+ Navigator mockedNavigator = mock (Navigator .class );
38+ OnOfflineRouteFoundCallback mockedCallback = mock (OnOfflineRouteFoundCallback .class );
39+ RouterResult mockedResult = mock (RouterResult .class );
40+ when (mockedResult .getJson ()).thenReturn ("{\" status\" : \" Bad Request\" , \" status_code\" : 400, \" error\" : \" No " +
41+ "suitable edges near location\" , \" error_code\" : 171}" );
42+ OfflineRouteRetrievalTask theOfflineRouteRetrievalTask = new OfflineRouteRetrievalTask (mockedNavigator ,
43+ mockedCallback , mockedResult );
44+ DirectionsRoute nullRoute = null ;
45+ ArgumentCaptor <OfflineError > offlineError = ArgumentCaptor .forClass (OfflineError .class );
46+
47+ theOfflineRouteRetrievalTask .onPostExecute (nullRoute );
48+
49+ verify (mockedCallback ).onError (offlineError .capture ());
50+ assertEquals ("Error occurred fetching offline route: No suitable edges near location - Code: 171" ,
51+ offlineError .getValue ().getMessage ());
52+ }
53+
54+ @ Test
55+ public void checksOnRouteFoundIsCalledIfRouteIsFetched () {
56+ Navigator mockedNavigator = mock (Navigator .class );
57+ OnOfflineRouteFoundCallback mockedCallback = mock (OnOfflineRouteFoundCallback .class );
58+ OfflineRouteRetrievalTask theOfflineRouteRetrievalTask = new OfflineRouteRetrievalTask (mockedNavigator ,
59+ mockedCallback );
60+ DirectionsRoute aRoute = mock (DirectionsRoute .class );
61+
62+ theOfflineRouteRetrievalTask .onPostExecute (aRoute );
63+
64+ verify (mockedCallback ).onRouteFound (eq (aRoute ));
65+ }
66+ }
0 commit comments