Skip to content

Commit 7ce205c

Browse files
authored
fix(journey): fix support of add_poi_infos (#67)
Fix issue described in PR #63 * Add arg as optional (see documentation) * Update docs * Add tests to check URL
1 parent 6b767fc commit 7ce205c

File tree

3 files changed

+61
-12
lines changed

3 files changed

+61
-12
lines changed

docs/api_support/journeys.md

+3-3
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ Methods
3737
wheelchair: bool = False,
3838
direct_path: str = "indifferent",
3939
direct_path_mode: Optional[Sequence[str]] = None,
40-
add_poi_infos: Sequence[str] = [],
40+
add_poi_infos: Optional[Sequence[str]] = None,
4141
debug: bool = False,
4242
free_radius_from: int = 0,
4343
free_radius_to: int = 0,
@@ -74,7 +74,7 @@ Methods
7474
wheelchair: bool = False,
7575
direct_path: str = "indifferent",
7676
direct_path_mode: Optional[Sequence[str]] = None,
77-
add_poi_infos: Sequence[str] = [],
77+
add_poi_infos: Optional[Sequence[str]] = None,
7878
debug: bool = False,
7979
free_radius_from: int = 0,
8080
free_radius_to: int = 0,
@@ -111,7 +111,7 @@ Methods
111111
wheelchair: bool = False,
112112
direct_path: str = "indifferent",
113113
direct_path_mode: Optional[Sequence[str]] = None,
114-
add_poi_infos: Sequence[str] = [],
114+
add_poi_infos: Optional[Sequence[str]] = None,
115115
debug: bool = False,
116116
free_radius_from: int = 0,
117117
free_radius_to: int = 0,

navitia_client/client/apis/journeys_apis.py

+15-9
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class JourneyApiClient(ApiBaseClient):
4242
wheelchair: bool = False,
4343
direct_path: str = "indifferent",
4444
direct_path_mode: Optional[Sequence[str]] = None,
45-
add_poi_infos: Sequence[str] = [],
45+
add_poi_infos: Optional[Sequence[str]] = None,
4646
debug: bool = False,
4747
free_radius_from: int = 0,
4848
free_radius_to: int = 0,
@@ -79,7 +79,7 @@ class JourneyApiClient(ApiBaseClient):
7979
wheelchair: bool = False,
8080
direct_path: str = "indifferent",
8181
direct_path_mode: Optional[Sequence[str]] = None,
82-
add_poi_infos: Sequence[str] = [],
82+
add_poi_infos: Optional[Sequence[str]] = None,
8383
debug: bool = False,
8484
free_radius_from: int = 0,
8585
free_radius_to: int = 0,
@@ -116,7 +116,7 @@ class JourneyApiClient(ApiBaseClient):
116116
wheelchair: bool = False,
117117
direct_path: str = "indifferent",
118118
direct_path_mode: Optional[Sequence[str]] = None,
119-
add_poi_infos: Sequence[str] = [],
119+
add_poi_infos: Optional[Sequence[str]] = None,
120120
debug: bool = False,
121121
free_radius_from: int = 0,
122122
free_radius_to: int = 0,
@@ -173,7 +173,7 @@ def list_journeys(
173173
wheelchair: bool = False,
174174
direct_path: str = "indifferent",
175175
direct_path_mode: Optional[Sequence[str]] = None,
176-
add_poi_infos: Sequence[str] = [],
176+
add_poi_infos: Optional[Sequence[str]] = None,
177177
debug: bool = False,
178178
free_radius_from: int = 0,
179179
free_radius_to: int = 0,
@@ -274,7 +274,6 @@ def list_journeys(
274274
"max_duration": max_duration,
275275
"wheelchair": wheelchair,
276276
"direct_path": direct_path,
277-
"add_poi_infos[]": add_poi_infos,
278277
"debug": debug,
279278
"free_radius_from": free_radius_from,
280279
"free_radius_to": free_radius_to,
@@ -299,6 +298,9 @@ def list_journeys(
299298
if last_section_mode:
300299
filters["last_section_mode[]"] = last_section_mode
301300

301+
if add_poi_infos:
302+
filters["add_poi_infos[]"] = add_poi_infos
303+
302304
if any([direct_path_mode, first_section_mode]):
303305
filters["direct_path_mode[]"] = direct_path_mode or first_section_mode
304306

@@ -333,7 +335,7 @@ def list_journeys_with_region_id(
333335
wheelchair: bool = False,
334336
direct_path: str = "indifferent",
335337
direct_path_mode: Optional[Sequence[str]] = None,
336-
add_poi_infos: Sequence[str] = [],
338+
add_poi_infos: Optional[Sequence[str]] = None,
337339
debug: bool = False,
338340
free_radius_from: int = 0,
339341
free_radius_to: int = 0,
@@ -436,7 +438,6 @@ def list_journeys_with_region_id(
436438
"max_duration": max_duration,
437439
"wheelchair": wheelchair,
438440
"direct_path": direct_path,
439-
"add_poi_infos[]": add_poi_infos,
440441
"debug": debug,
441442
"free_radius_from": free_radius_from,
442443
"free_radius_to": free_radius_to,
@@ -461,6 +462,9 @@ def list_journeys_with_region_id(
461462
if last_section_mode:
462463
filters["last_section_mode[]"] = last_section_mode
463464

465+
if add_poi_infos:
466+
filters["add_poi_infos[]"] = add_poi_infos
467+
464468
if any([direct_path_mode, first_section_mode]):
465469
filters["direct_path_mode[]"] = direct_path_mode or first_section_mode
466470

@@ -495,7 +499,7 @@ def list_journeys_with_resource_path(
495499
wheelchair: bool = False,
496500
direct_path: str = "indifferent",
497501
direct_path_mode: Optional[Sequence[str]] = None,
498-
add_poi_infos: Sequence[str] = [],
502+
add_poi_infos: Optional[Sequence[str]] = None,
499503
debug: bool = False,
500504
free_radius_from: int = 0,
501505
free_radius_to: int = 0,
@@ -598,7 +602,6 @@ def list_journeys_with_resource_path(
598602
"max_duration": max_duration,
599603
"wheelchair": wheelchair,
600604
"direct_path": direct_path,
601-
"add_poi_infos[]": add_poi_infos,
602605
"debug": debug,
603606
"free_radius_from": free_radius_from,
604607
"free_radius_to": free_radius_to,
@@ -623,6 +626,9 @@ def list_journeys_with_resource_path(
623626
if last_section_mode:
624627
filters["last_section_mode[]"] = last_section_mode
625628

629+
if add_poi_infos:
630+
filters["add_poi_infos[]"] = add_poi_infos
631+
626632
if any([direct_path_mode, first_section_mode]):
627633
filters["direct_path_mode[]"] = direct_path_mode or first_section_mode
628634

tests/client/apis/test_journeys_apis.py

+43
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
from datetime import datetime
12
import json
23
from unittest.mock import MagicMock, patch
34

@@ -69,3 +70,45 @@ def test_list_covered_areas(
6970
# Then
7071
assert len(journeys) == 1
7172
assert isinstance(journeys[0], Journey)
73+
74+
75+
@patch.object(JourneyApiClient, "get_navitia_api")
76+
def test_list_empty_add_poi_infos_parameter(
77+
mock_get_navitia_api: MagicMock, journeys_apis: JourneyApiClient
78+
) -> None:
79+
# Given
80+
mock_response = MagicMock()
81+
with open("tests/test_data/journeys.json", encoding="utf-8") as file:
82+
mock_response.json.return_value = json.load(file)
83+
84+
mock_get_navitia_api.return_value = mock_response
85+
expected_url = "https://api.navitia.io/v1//journeys?datetime=2024-06-01T00:00:00&datetime_represents=departure&traveler_type=standard&data_freshness=realtime&language=en-GB&depth=1&max_duration_to_pt=1800&walking_speed=1.12&bike_speed=4.1&bss_speed=4.1&car_speed=16.8&min_nb_journeys=1&max_nb_journeys=1&count=1&max_nb_transfers=10&min_nb_transfers=0&max_duration=86400&wheelchair=False&direct_path=indifferent&debug=False&free_radius_from=0&free_radius_to=0&timeframe_duration=0&from=foo"
86+
87+
# When
88+
journeys_apis.list_journeys(datetime_=datetime(2024, 6, 1), from_="foo")
89+
90+
# Then
91+
mock_get_navitia_api.assert_called_with(expected_url)
92+
93+
94+
@patch.object(JourneyApiClient, "get_navitia_api")
95+
def test_list_add_poi_infos_parameter(
96+
mock_get_navitia_api: MagicMock, journeys_apis: JourneyApiClient
97+
) -> None:
98+
# Given
99+
mock_response = MagicMock()
100+
with open("tests/test_data/journeys.json", encoding="utf-8") as file:
101+
mock_response.json.return_value = json.load(file)
102+
103+
mock_get_navitia_api.return_value = mock_response
104+
expected_url = "https://api.navitia.io/v1//journeys?datetime=2024-06-01T00:00:00&datetime_represents=departure&traveler_type=standard&data_freshness=realtime&language=en-GB&depth=1&max_duration_to_pt=1800&walking_speed=1.12&bike_speed=4.1&bss_speed=4.1&car_speed=16.8&min_nb_journeys=1&max_nb_journeys=1&count=1&max_nb_transfers=10&min_nb_transfers=0&max_duration=86400&wheelchair=False&direct_path=indifferent&debug=False&free_radius_from=0&free_radius_to=0&timeframe_duration=0&from=foo&add_poi_infos[]=bss_stands&add_poi_infos[]=car_parks"
105+
106+
# When
107+
journeys_apis.list_journeys(
108+
datetime_=datetime(2024, 6, 1),
109+
from_="foo",
110+
add_poi_infos=["bss_stands", "car_parks"],
111+
)
112+
113+
# Then
114+
mock_get_navitia_api.assert_called_with(expected_url)

0 commit comments

Comments
 (0)