From 77c667dfb8f41dd06585031c8d6ea051f351de46 Mon Sep 17 00:00:00 2001 From: eibakke Date: Tue, 2 Apr 2024 14:58:46 +0200 Subject: [PATCH] Overwrites directMode when it is not set in the request. Defaulting it to walk when it was not set caused issues when the user expected no results because transportModes are defined. --- .../apis/transmodel/mapping/RequestModesMapper.java | 7 +++---- .../transmodel/mapping/RequestModesMapperTest.java | 11 +++++++++-- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/opentripplanner/apis/transmodel/mapping/RequestModesMapper.java b/src/main/java/org/opentripplanner/apis/transmodel/mapping/RequestModesMapper.java index 59259905944..e7a13dcacc9 100644 --- a/src/main/java/org/opentripplanner/apis/transmodel/mapping/RequestModesMapper.java +++ b/src/main/java/org/opentripplanner/apis/transmodel/mapping/RequestModesMapper.java @@ -15,7 +15,7 @@ class RequestModesMapper { * Maps GraphQL Modes input type to RequestModes. *

* This only maps access, egress, direct & transfer modes. Transport modes are set using filters. - * Default modes are WALK for access, egress, direct & transfer. + * Default modes are WALK for access, egress & transfer. */ static RequestModes mapRequestModes(Map modesInput) { RequestModesBuilder mBuilder = RequestModes.of(); @@ -28,9 +28,8 @@ static RequestModes mapRequestModes(Map modesInput) { if (modesInput.containsKey(egressModeKey)) { mBuilder.withEgressMode((StreetMode) modesInput.get(egressModeKey)); } - if (modesInput.containsKey(directModeKey)) { - mBuilder.withDirectMode((StreetMode) modesInput.get(directModeKey)); - } + // An unset directMode should overwrite the walk default, so we don't check for existence first. + mBuilder.withDirectMode((StreetMode) modesInput.get(directModeKey)); return mBuilder.build(); } diff --git a/src/test/java/org/opentripplanner/apis/transmodel/mapping/RequestModesMapperTest.java b/src/test/java/org/opentripplanner/apis/transmodel/mapping/RequestModesMapperTest.java index 160014213d3..b8d08c7d7f5 100644 --- a/src/test/java/org/opentripplanner/apis/transmodel/mapping/RequestModesMapperTest.java +++ b/src/test/java/org/opentripplanner/apis/transmodel/mapping/RequestModesMapperTest.java @@ -13,9 +13,11 @@ class RequestModesMapperTest { void testMapRequestModesEmptyMapReturnsDefaults() { Map inputModes = Map.of(); + RequestModes wantModes = RequestModes.of().withDirectMode(null).build(); + RequestModes mappedModes = RequestModesMapper.mapRequestModes(inputModes); - assertEquals(RequestModes.of().build(), mappedModes); + assertEquals(wantModes, mappedModes); } @Test @@ -26,6 +28,7 @@ void testMapRequestModesAccessSetReturnsDefaultsForOthers() { .of() .withAccessMode(StreetMode.BIKE) .withTransferMode(StreetMode.BIKE) + .withDirectMode(null) .build(); RequestModes mappedModes = RequestModesMapper.mapRequestModes(inputModes); @@ -37,7 +40,11 @@ void testMapRequestModesAccessSetReturnsDefaultsForOthers() { void testMapRequestModesEgressSetReturnsDefaultsForOthers() { Map inputModes = Map.of("egressMode", StreetMode.CAR); - RequestModes wantModes = RequestModes.of().withEgressMode(StreetMode.CAR).build(); + RequestModes wantModes = RequestModes + .of() + .withEgressMode(StreetMode.CAR) + .withDirectMode(null) + .build(); RequestModes mappedModes = RequestModesMapper.mapRequestModes(inputModes);