diff --git a/main/src/main/java/org/mobilitydata/gtfsvalidator/validator/PickupBookingRuleIdValidator.java b/main/src/main/java/org/mobilitydata/gtfsvalidator/validator/PickupBookingRuleIdValidator.java index 7cd01933e5..e8f236c707 100644 --- a/main/src/main/java/org/mobilitydata/gtfsvalidator/validator/PickupBookingRuleIdValidator.java +++ b/main/src/main/java/org/mobilitydata/gtfsvalidator/validator/PickupBookingRuleIdValidator.java @@ -25,6 +25,7 @@ public PickupBookingRuleIdValidator( public void validate(GtfsStopTime entity, NoticeContainer noticeContainer) { if (entity.hasPickupType() && entity.pickupType() == GtfsPickupDropOff.MUST_PHONE + && entity.hasStartPickupDropOffWindow() && !entity.hasPickupBookingRuleId()) { noticeContainer.addValidationNotice( new MissingPickupDropOffBookingRuleIdNotice( @@ -34,6 +35,7 @@ public void validate(GtfsStopTime entity, NoticeContainer noticeContainer) { } if (entity.hasDropOffType() && entity.dropOffType() == GtfsPickupDropOff.MUST_PHONE + && entity.hasEndPickupDropOffWindow() && !entity.hasDropOffBookingRuleId()) { noticeContainer.addValidationNotice( new MissingPickupDropOffBookingRuleIdNotice( @@ -61,8 +63,12 @@ public boolean shouldCallValidate() { } /** - * `pickup_booking_rule_id` is recommended when `pickup_type=2` and `drop_off_booking_rule_id` is - * recommended when `drop_off_type=2` + * pickup_booking_rule_id is recommended when pickup_type=2 and drop_off_booking_rule_id is + * recommended when drop_off_type=2. + * + *
Currently, this notice is only triggered on feeds when either start_pickup_drop_off_window + * or end_pickup_drop_off_window is defined, since this recommendation was added to the + * specification for feeds with GTFS-Flex. */ @GtfsValidationNotice( severity = SeverityLevel.WARNING, diff --git a/main/src/test/java/org/mobilitydata/gtfsvalidator/validator/PickupBookingRuleIdValidatorTest.java b/main/src/test/java/org/mobilitydata/gtfsvalidator/validator/PickupBookingRuleIdValidatorTest.java index 9735e2a405..4597a716be 100644 --- a/main/src/test/java/org/mobilitydata/gtfsvalidator/validator/PickupBookingRuleIdValidatorTest.java +++ b/main/src/test/java/org/mobilitydata/gtfsvalidator/validator/PickupBookingRuleIdValidatorTest.java @@ -10,6 +10,7 @@ import org.mobilitydata.gtfsvalidator.notice.ValidationNotice; import org.mobilitydata.gtfsvalidator.table.GtfsPickupDropOff; import org.mobilitydata.gtfsvalidator.table.GtfsStopTime; +import org.mobilitydata.gtfsvalidator.type.GtfsTime; @RunWith(JUnit4.class) public class PickupBookingRuleIdValidatorTest { @@ -27,6 +28,7 @@ public void missingBookingRuleIdShouldGenerateNotice() { new GtfsStopTime.Builder() .setCsvRowNumber(1) .setPickupType(GtfsPickupDropOff.MUST_PHONE) + .setStartPickupDropOffWindow(GtfsTime.fromSecondsSinceMidnight(18614)) .build(); assertThat(generateNotices(stopTime)) .containsExactly( @@ -40,7 +42,8 @@ public void existingBookingRuleIdShouldNotGenerateNotice() { new GtfsStopTime.Builder() .setCsvRowNumber(2) .setPickupType(GtfsPickupDropOff.MUST_PHONE) - .setPickupBookingRuleId("bookingRuleId") + .setStartPickupDropOffWindow(GtfsTime.fromSecondsSinceMidnight(18614)) + .setPickupBookingRuleId("booking_rule_id") .build(); assertThat(generateNotices(stopTime)).isEmpty(); }