Skip to content

Commit bede9ec

Browse files
authored
Merge pull request #4271 from hove-io/fix_add_requested_date_time_in_direct_path
[jormun]: add parameter requested_datetime in direct_path journey
2 parents c7ab270 + 9ea1afb commit bede9ec

File tree

8 files changed

+71
-15
lines changed

8 files changed

+71
-15
lines changed

source/jormungandr/jormungandr/street_network/andyamo.py

+5-3
Original file line numberDiff line numberDiff line change
@@ -319,10 +319,12 @@ def _direct_path(
319319
params = self._make_request_arguments_direct_path(pt_object_origin, pt_object_destination, request)
320320
response = self._call_andyamo('route', params)
321321
json_response = self.check_response_and_get_json(response)
322-
return self._get_response(json_response, pt_object_origin, pt_object_destination, fallback_extremity)
322+
return self._get_response(
323+
json_response, pt_object_origin, pt_object_destination, fallback_extremity, request
324+
)
323325

324326
@staticmethod
325-
def _get_response(json_response, pt_object_origin, pt_object_destination, fallback_extremity):
327+
def _get_response(json_response, pt_object_origin, pt_object_destination, fallback_extremity, request):
326328
'''
327329
:param fallback_extremity: is a PeriodExtremity (a datetime and it's meaning on the fallback period)
328330
'''
@@ -341,7 +343,7 @@ def _get_response(json_response, pt_object_origin, pt_object_destination, fallba
341343
journey.arrival_date_time = datetime
342344
journey.durations.total = journey.duration
343345
journey.durations.walking = journey.duration
344-
346+
journey.requested_date_time = request.get('datetime', 0)
345347
journey.distances.walking = kilometers_to_meters(andyamo_trip['summary']["length"])
346348

347349
previous_section_endtime = journey.departure_date_time

source/jormungandr/jormungandr/street_network/geovelo.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ def _get_street_network_routing_matrix(
277277
return self._get_matrix(resp_json)
278278

279279
@classmethod
280-
def _get_response(cls, json_response, pt_object_origin, pt_object_destination, fallback_extremity):
280+
def _get_response(cls, json_response, pt_object_origin, pt_object_destination, fallback_extremity, request):
281281
'''
282282
:param fallback_extremity: is a PeriodExtremity (a datetime and it's meaning on the fallback period)
283283
'''
@@ -324,6 +324,7 @@ def _get_response(cls, json_response, pt_object_origin, pt_object_destination, f
324324
journey.durations.bike = journey.duration
325325

326326
journey.distances.bike = int(geovelo_response['distances']['total'])
327+
journey.requested_date_time = request.get('datetime', 0)
327328

328329
previous_section_endtime = journey.departure_date_time
329330
for index, geovelo_section in enumerate(geovelo_response['sections']):
@@ -424,7 +425,9 @@ def _direct_path(
424425
logging.getLogger(__name__).error('Geovelo nb response != nb requested')
425426
raise UnableToParse('Geovelo nb response != nb requested')
426427

427-
return self._get_response(resp_json, pt_object_origin, pt_object_destination, fallback_extremity)
428+
return self._get_response(
429+
resp_json, pt_object_origin, pt_object_destination, fallback_extremity, request
430+
)
428431

429432
def make_path_key(self, mode, orig_uri, dest_uri, streetnetwork_path_type, period_extremity):
430433
"""

source/jormungandr/jormungandr/street_network/handimap.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -244,10 +244,12 @@ def _direct_path(
244244

245245
response = self._call_handimap('route', params)
246246
json_response = self.check_response_and_get_json(response)
247-
return self._get_response(json_response, pt_object_origin, pt_object_destination, fallback_extremity)
247+
return self._get_response(
248+
json_response, pt_object_origin, pt_object_destination, fallback_extremity, request
249+
)
248250

249251
@staticmethod
250-
def _get_response(json_response, pt_object_origin, pt_object_destination, fallback_extremity):
252+
def _get_response(json_response, pt_object_origin, pt_object_destination, fallback_extremity, request):
251253
'''
252254
:param fallback_extremity: is a PeriodExtremity (a datetime and it's meaning on the fallback period)
253255
'''
@@ -266,6 +268,7 @@ def _get_response(json_response, pt_object_origin, pt_object_destination, fallba
266268
journey.arrival_date_time = datetime
267269
journey.durations.total = journey.duration
268270
journey.durations.walking = journey.duration
271+
journey.requested_date_time = request.get('datetime', 0)
269272

270273
journey.distances.walking = kilometers_to_meters(handimap_trip['summary']["length"])
271274

source/jormungandr/jormungandr/street_network/here.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -251,7 +251,7 @@ def _read_response(response, origin, destination, mode, fallback_extremity, requ
251251
journey.departure_date_time = datetime - journey.duration
252252
journey.arrival_date_time = datetime
253253

254-
journey.requested_date_time = request['datetime']
254+
journey.requested_date_time = request.get('datetime', 0)
255255

256256
# distances
257257
length = here_section.get('summary', {}).get('length', 0)

source/jormungandr/jormungandr/street_network/tests/andyamo_test.py

+24-3
Original file line numberDiff line numberDiff line change
@@ -955,12 +955,19 @@ def get_response_andyamo_represents_start_true_test():
955955
destination = make_pt_object(type_pb2.ADDRESS, lon=-1.6740057, lat=48.097592, uri='AndyamoEnd')
956956
fallback_extremity = PeriodExtremity(str_to_time_stamp('20220503T060000'), True)
957957

958-
proto_resp = andyamo._get_response(resp_json, origin, destination, fallback_extremity)
958+
proto_resp = andyamo._get_response(
959+
json_response=resp_json,
960+
pt_object_origin=origin,
961+
pt_object_destination=destination,
962+
fallback_extremity=fallback_extremity,
963+
request={'datetime': str_to_time_stamp('20220503T060000')},
964+
)
959965

960966
assert len(proto_resp.journeys) == 1
961967
assert proto_resp.journeys[0].durations.total == 2245
962968
assert proto_resp.journeys[0].durations.walking == 2245
963969
assert proto_resp.journeys[0].distances.walking == 2807
970+
assert proto_resp.journeys[0].requested_date_time == str_to_time_stamp('20220503T060000')
964971

965972
assert len(proto_resp.journeys[0].sections) == 1
966973
assert proto_resp.journeys[0].sections[0].type == response_pb2.STREET_NETWORK
@@ -981,7 +988,13 @@ def get_response_andyamo_represents_start_false_test():
981988
destination = make_pt_object(type_pb2.ADDRESS, lon=-1.6740057, lat=48.097592, uri='AndyamoEnd')
982989
fallback_extremity = PeriodExtremity(str_to_time_stamp('20220503T060000'), False)
983990

984-
proto_resp = andyamo._get_response(resp_json, origin, destination, fallback_extremity)
991+
proto_resp = andyamo._get_response(
992+
json_response=resp_json,
993+
pt_object_origin=origin,
994+
pt_object_destination=destination,
995+
fallback_extremity=fallback_extremity,
996+
request={'datetime': str_to_time_stamp('20220503T055500')},
997+
)
985998

986999
assert len(proto_resp.journeys) == 1
9871000
assert proto_resp.journeys[0].durations.total == 2245 # Adjusted to match the response
@@ -990,6 +1003,7 @@ def get_response_andyamo_represents_start_false_test():
9901003
assert (
9911004
abs(proto_resp.journeys[0].distances.walking - 2807.08) < 0.1
9921005
) # Allow a small difference due to rounding
1006+
assert proto_resp.journeys[0].requested_date_time == str_to_time_stamp('20220503T055500')
9931007

9941008

9951009
def test_get_response_int_cast_success(): # Préparation des données de test
@@ -1008,11 +1022,18 @@ def test_get_response_int_cast_success(): # Préparation des données de test
10081022
andyamo = Andyamo(instance=instance, service_url=fake_service_url, service_backup=service_backup, zone='')
10091023

10101024
# Appel de la méthode _get_response
1011-
resp = andyamo._get_response(json_response, pt_object_origin, pt_object_destination, fallback_extremity)
1025+
resp = andyamo._get_response(
1026+
json_response=json_response,
1027+
pt_object_origin=pt_object_origin,
1028+
pt_object_destination=pt_object_destination,
1029+
fallback_extremity=fallback_extremity,
1030+
request={'datetime': str_to_time_stamp('20220503T123000')},
1031+
)
10121032

10131033
assert resp.journeys[0].sections[0].street_network.path_items[0].direction == 0
10141034
assert resp.journeys[0].sections[0].street_network.path_items[2].direction == -90
10151035
assert resp.journeys[0].sections[0].street_network.path_items[4].direction == 90
1036+
assert resp.journeys[0].requested_date_time == str_to_time_stamp('20220503T123000')
10161037

10171038

10181039
def create_pt_object(lon, lat, pt_object_type=type_pb2.POI):

source/jormungandr/jormungandr/street_network/tests/geovelo_test.py

+12-1
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,7 @@ def direct_path_geovelo_test():
284284
assert geovelo_resp.response_type == response_pb2.ITINERARY_FOUND
285285
assert len(geovelo_resp.journeys) == 1
286286
assert geovelo_resp.journeys[0].duration == 3155 # 52min35s
287+
assert geovelo_resp.journeys[0].requested_date_time == 0 # parameter datetime absent in MOCKED_REQUEST
287288
assert len(geovelo_resp.journeys[0].sections) == 1
288289
assert geovelo_resp.journeys[0].arrival_date_time == str_to_time_stamp('20161010T152000')
289290
assert geovelo_resp.journeys[0].departure_date_time == str_to_time_stamp('20161010T142725')
@@ -323,6 +324,8 @@ def direct_path_geovelo_zero_test():
323324
origin = make_pt_object(type_pb2.ADDRESS, lon=2, lat=48, uri='refStart1')
324325
destination = make_pt_object(type_pb2.ADDRESS, lon=2, lat=48, uri='refEnd1')
325326
fallback_extremity = PeriodExtremity(str_to_time_stamp('20161010T152000'), False)
327+
# Add parameter datetime in MOCKED_REQUEST to verify
328+
MOCKED_REQUEST['datetime'] = str_to_time_stamp('20161010T150000')
326329
with requests_mock.Mocker() as req:
327330
req.post(
328331
'{}/api/v2/computedroutes?instructions=true&elevations=true&geometry=true'
@@ -336,6 +339,7 @@ def direct_path_geovelo_zero_test():
336339
assert geovelo_resp.response_type == response_pb2.ITINERARY_FOUND
337340
assert len(geovelo_resp.journeys) == 1
338341
assert geovelo_resp.journeys[0].duration == 0
342+
assert geovelo_resp.journeys[0].requested_date_time == str_to_time_stamp('20161010T150000')
339343
assert len(geovelo_resp.journeys[0].sections) == 1
340344
assert geovelo_resp.journeys[0].arrival_date_time == str_to_time_stamp('20161010T152000')
341345
assert geovelo_resp.journeys[0].departure_date_time == str_to_time_stamp('20161010T152000')
@@ -388,10 +392,17 @@ def distances_durations_test():
388392
destination = make_pt_object(type_pb2.ADDRESS, lon=3, lat=48.3, uri='refEnd1')
389393
fallback_extremity = PeriodExtremity(str_to_time_stamp('20161010T152000'), True)
390394

391-
proto_resp = geovelo._get_response(resp_json, origin, destination, fallback_extremity)
395+
proto_resp = geovelo._get_response(
396+
json_response=resp_json,
397+
pt_object_origin=origin,
398+
pt_object_destination=destination,
399+
fallback_extremity=fallback_extremity,
400+
request={'datetime': str_to_time_stamp('20161010T151000')},
401+
)
392402
assert proto_resp.journeys[0].durations.total == 3155
393403
assert proto_resp.journeys[0].durations.bike == 3155
394404
assert proto_resp.journeys[0].distances.bike == 11393.0
405+
assert proto_resp.journeys[0].requested_date_time == str_to_time_stamp('20161010T151000')
395406

396407

397408
def make_request_arguments_bike_details_test():

source/jormungandr/jormungandr/street_network/tests/handimap_test.py

+16-2
Original file line numberDiff line numberDiff line change
@@ -348,12 +348,19 @@ def get_response_handimap_represents_start_true_test():
348348
destination = make_pt_object(type_pb2.ADDRESS, lon=-1.6740057, lat=48.097592, uri='HandimapEnd')
349349
fallback_extremity = PeriodExtremity(str_to_time_stamp('20220503T060000'), True)
350350

351-
proto_resp = handimap._get_response(resp_json, origin, destination, fallback_extremity)
351+
proto_resp = handimap._get_response(
352+
json_response=resp_json,
353+
pt_object_origin=origin,
354+
pt_object_destination=destination,
355+
fallback_extremity=fallback_extremity,
356+
request={'datetime': str_to_time_stamp('20220503T060000')},
357+
)
352358

353359
assert len(proto_resp.journeys) == 1
354360
assert proto_resp.journeys[0].durations.total == 126
355361
assert proto_resp.journeys[0].durations.walking == 126
356362
assert proto_resp.journeys[0].distances.walking == 412
363+
assert proto_resp.journeys[0].requested_date_time == str_to_time_stamp('20220503T060000')
357364

358365
assert len(proto_resp.journeys[0].sections) == 1
359366
assert proto_resp.journeys[0].sections[0].type == response_pb2.STREET_NETWORK
@@ -389,12 +396,19 @@ def get_response_handimap_represents_start_false_test():
389396
destination = make_pt_object(type_pb2.ADDRESS, lon=-1.6740057, lat=48.097592, uri='HandimapEnd')
390397
fallback_extremity = PeriodExtremity(str_to_time_stamp('20220503T060000'), False)
391398

392-
proto_resp = handimap._get_response(resp_json, origin, destination, fallback_extremity)
399+
proto_resp = handimap._get_response(
400+
json_response=resp_json,
401+
pt_object_origin=origin,
402+
pt_object_destination=destination,
403+
fallback_extremity=fallback_extremity,
404+
request={'datetime': str_to_time_stamp('20220503T055500')},
405+
)
393406

394407
assert len(proto_resp.journeys) == 1
395408
assert proto_resp.journeys[0].durations.total == 126
396409
assert proto_resp.journeys[0].durations.walking == 126
397410
assert proto_resp.journeys[0].distances.walking == 412
411+
assert proto_resp.journeys[0].requested_date_time == str_to_time_stamp('20220503T055500')
398412

399413
assert len(proto_resp.journeys[0].sections) == 1
400414
assert proto_resp.journeys[0].sections[0].type == response_pb2.STREET_NETWORK

source/jormungandr/jormungandr/street_network/tests/here_test.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -292,6 +292,7 @@ def here_basic_routing_test(valid_here_routing_response):
292292
assert response.response_type == response_pb2.ITINERARY_FOUND
293293
assert len(response.journeys) == 1
294294
assert response.journeys[0].duration == 1468
295+
assert response.journeys[0].requested_date_time == str_to_time_stamp('20161010T152000')
295296
assert len(response.journeys[0].sections) == 1
296297
section = response.journeys[0].sections[0]
297298
assert section.type == response_pb2.STREET_NETWORK
@@ -322,12 +323,13 @@ def here_basic_routing_test(valid_here_routing_response):
322323
origin=origin,
323324
destination=destination,
324325
fallback_extremity=fallback_extremity,
325-
request={'datetime': str_to_time_stamp('20161010T152000')},
326+
request={'datetime': str_to_time_stamp('20161010T151000')},
326327
direct_path_type=StreetNetworkPathType.DIRECT,
327328
)
328329
assert response.status_code == 200
329330
assert response.response_type == response_pb2.ITINERARY_FOUND
330331
assert len(response.journeys) == 1
332+
assert response.journeys[0].requested_date_time == str_to_time_stamp('20161010T151000')
331333
assert len(response.journeys[0].sections) == 1
332334
section = response.journeys[0].sections[0]
333335
assert section.begin_date_time == str_to_time_stamp('20161010T152000')

0 commit comments

Comments
 (0)