diff --git a/main/src/main/java/org/mobilitydata/gtfsvalidator/validator/TransferStopIdsConditionalValidator.java b/main/src/main/java/org/mobilitydata/gtfsvalidator/validator/TransferStopIdsConditionalValidator.java index 453fc72b3b..1cfcd1c77b 100644 --- a/main/src/main/java/org/mobilitydata/gtfsvalidator/validator/TransferStopIdsConditionalValidator.java +++ b/main/src/main/java/org/mobilitydata/gtfsvalidator/validator/TransferStopIdsConditionalValidator.java @@ -35,6 +35,9 @@ *
An empty {@code transfer_type} means a recommended transfer point, which is the same as {@code + * transfer_type=0}, so both stop ids are required for it as well. */ @GtfsValidator public class TransferStopIdsConditionalValidator extends FileValidator { @@ -49,9 +52,7 @@ public TransferStopIdsConditionalValidator(GtfsTransferTableContainer transfersC @Override public void validate(NoticeContainer noticeContainer) { for (GtfsTransfer transfer : transfersContainer.getEntities()) { - if (transfer.hasTransferType()) { - validateTransferEntity(transfer, noticeContainer); - } + validateTransferEntity(transfer, noticeContainer); } } diff --git a/main/src/test/java/org/mobilitydata/gtfsvalidator/validator/TransferStopIdsConditionalValidatorTest.java b/main/src/test/java/org/mobilitydata/gtfsvalidator/validator/TransferStopIdsConditionalValidatorTest.java index 364243c0cf..5411a44844 100644 --- a/main/src/test/java/org/mobilitydata/gtfsvalidator/validator/TransferStopIdsConditionalValidatorTest.java +++ b/main/src/test/java/org/mobilitydata/gtfsvalidator/validator/TransferStopIdsConditionalValidatorTest.java @@ -94,4 +94,42 @@ public void testTransferFromStopIdNoInSeatTransfer() { noticeContainer.getValidationNotices().clear(); } } + + /** + * This test is used to verify that the validator generates a notice when the stop ids are missing + * and the {@code transfer_type} is empty, which is a recommended transfer point. + */ + @Test + public void testTransferMissingStopIdsEmptyTransferType() { + GtfsTransferTableContainer gtfsTransferTableContainer = + GtfsTransferTableContainer.forEntities( + ImmutableList.of(new GtfsTransfer.Builder().build()), noticeContainer); + + new TransferStopIdsConditionalValidator(gtfsTransferTableContainer).validate(noticeContainer); + + assertThat(noticeContainer.getValidationNotices()) + .containsExactlyElementsIn( + Arrays.asList( + new MissingRequiredFieldNotice( + GtfsTransfer.FILENAME, 0, GtfsTransfer.FROM_STOP_ID_FIELD_NAME), + new MissingRequiredFieldNotice( + GtfsTransfer.FILENAME, 0, GtfsTransfer.TO_STOP_ID_FIELD_NAME))); + } + + /** + * This test is used to verify that the validator does not generate a notice when the stop ids are + * present and the {@code transfer_type} is empty. + */ + @Test + public void testTransferStopIdsPresentEmptyTransferTypeNoNotice() { + GtfsTransferTableContainer gtfsTransferTableContainer = + GtfsTransferTableContainer.forEntities( + ImmutableList.of( + new GtfsTransfer.Builder().setFromStopId("stop1").setToStopId("stop2").build()), + noticeContainer); + + new TransferStopIdsConditionalValidator(gtfsTransferTableContainer).validate(noticeContainer); + + assertThat(noticeContainer.getValidationNotices()).isEmpty(); + } }