def test_process_end_timestamp_execution_missing_calendar_fields(self):
        mock_calendar = PropertyMock(return_value=pd.DataFrame({}))
        mock_calendar_dates = PropertyMock(return_value=pd.DataFrame({}))
        mock_stop_times = PropertyMock(return_value=pd.DataFrame({
            TRIP_ID: ["test_trip_id"],
            END_TIMESTAMP_MAP[STOP_TIME_KEY]: ["test_stop_time"],
        }))
        mock_trips = PropertyMock(return_value=pd.DataFrame({
            SERVICE_ID: ["test_service_id"],
        }))
        mock_agency = PropertyMock(return_value=pd.DataFrame({
            AGENCY_TIMEZONE: ["test_agency_timezone"],
        }))
        mock_dataset = MagicMock()
        mock_dataset.__class__ = Feed
        type(mock_dataset).calendar = mock_calendar
        type(mock_dataset).calendar_dates = mock_calendar_dates
        type(mock_dataset).stop_times = mock_stop_times
        type(mock_dataset).trips = mock_trips
        type(mock_dataset).agency = mock_agency

        mock_metadata = MagicMock()
        mock_metadata.__class__ = GtfsMetadata

        mock_gtfs_representation = MagicMock()
        mock_gtfs_representation.__class__ = GtfsRepresentation
        type(mock_gtfs_representation).dataset = mock_dataset
        type(mock_gtfs_representation).metadata = mock_metadata

        under_test = process_end_timestamp_for_gtfs_metadata(
            mock_gtfs_representation)
        self.assertIsInstance(under_test, GtfsRepresentation)
        mock_metadata.end_timestamp.assert_not_called()
    def test_process_end_timestamp_execution_with_empty_timezone_utc_offset(
            self, mock_stop_times_for_date, mock_utc_offset,
            mock_dates_by_type):
        mock_dataset = MagicMock()
        mock_dataset.__class__ = Feed

        mock_metadata = MagicMock()
        mock_metadata.__class__ = GtfsMetadata

        mock_gtfs_representation = MagicMock()
        mock_gtfs_representation.__class__ = GtfsRepresentation
        type(mock_gtfs_representation).dataset = mock_dataset
        type(mock_gtfs_representation).metadata = mock_metadata

        mock_stop_times_for_date.return_value = pd.DataFrame({
            "trip_id": ["test_trip_id"],
            "departure_time": ["05:00:00"]
        })

        mock_dates_by_type.return_value = pd.DataFrame({
            "service_id": ["test_service_id"],
            "date": ["20201010"]
        })

        mock_utc_offset.return_value = ""

        under_test = process_end_timestamp_for_gtfs_metadata(
            mock_gtfs_representation)
        self.assertIsInstance(under_test, GtfsRepresentation)
        mock_metadata.end_timestamp.assert_not_called()
    def test_process_end_timestamp_execution_with_no_calendar_dates(
            self, mock_stop_times_for_date, mock_utc_offset,
            mock_dates_by_type):
        mock_calendar = PropertyMock(return_value=pd.DataFrame({
            END_TIMESTAMP_MAP[CALENDAR_DATE_KEY]: ["20201010"],
            MONDAY: [0],
            TUESDAY: [0],
            WEDNESDAY: [0],
            THURSDAY: [0],
            FRIDAY: [0],
            SATURDAY: [1],
            SUNDAY: [0],
            SERVICE_ID: ["test_service_id"],
        }))
        mock_calendar_dates = PropertyMock(return_value=None)
        mock_stop_times = PropertyMock(return_value=pd.DataFrame({
            TRIP_ID: ["test_trip_id"],
            END_TIMESTAMP_MAP[STOP_TIME_KEY]: ["test_stop_time"],
        }))
        mock_trips = PropertyMock(return_value=pd.DataFrame({
            SERVICE_ID: ["test_service_id"],
        }))
        mock_agency = PropertyMock(return_value=pd.DataFrame({
            AGENCY_TIMEZONE: ["test_agency_timezone"],
        }))
        mock_dataset = MagicMock()
        mock_dataset.__class__ = Feed
        type(mock_dataset).calendar = mock_calendar
        type(mock_dataset).calendar_dates = mock_calendar_dates
        type(mock_dataset).stop_times = mock_stop_times
        type(mock_dataset).trips = mock_trips
        type(mock_dataset).agency = mock_agency

        mock_metadata = MagicMock()
        mock_metadata.__class__ = GtfsMetadata

        mock_gtfs_representation = MagicMock()
        mock_gtfs_representation.__class__ = GtfsRepresentation
        type(mock_gtfs_representation).dataset = mock_dataset
        type(mock_gtfs_representation).metadata = mock_metadata

        mock_stop_times_for_date.return_value = pd.DataFrame({
            TRIP_ID: ["test_trip_id"],
            END_TIMESTAMP_MAP[STOP_TIME_KEY]: ["05:00:00"]
        })

        mock_dates_by_type.return_value = pd.DataFrame({
            SERVICE_ID: ["test_service_id"],
            DATE: ["20201010"]
        })

        mock_utc_offset.return_value = "-05:00"

        under_test = process_end_timestamp_for_gtfs_metadata(
            mock_gtfs_representation)
        self.assertIsInstance(under_test, GtfsRepresentation)
        self.assertEqual(mock_metadata.end_timestamp,
                         "2020-10-10T05:00:00-05:00")
def call_usecases(
    dataset_representation, source_name, dataset_url, api_url, username, password
):
    dataset_representation = process_start_service_date_for_gtfs_metadata(
        dataset_representation
    )
    dataset_representation = process_end_service_date_for_gtfs_metadata(
        dataset_representation
    )
    # TODO: fix the actual issue. might be taken care of once validator is deployed.
    try:
        dataset_representation = process_start_timestamp_for_gtfs_metadata(
            dataset_representation
        )
    except TypeError as te:
        print(
            f"process_start_timestamp_for_gtfs_metadata for source {source_name},"
            f"dataset {dataset_url} raised: \n {te}",
            file=sys.stderr,
        )
    try:
        dataset_representation = process_end_timestamp_for_gtfs_metadata(
            dataset_representation
        )
    except TypeError as te:
        print(
            f"process_end_timestamp_for_gtfs_metadata for source {source_name}, dataset {dataset_url} raised: \n {te}",
            file=sys.stderr,
        )
    dataset_representation = process_main_language_code_for_gtfs_metadata(
        dataset_representation
    )
    dataset_representation = process_timezones_for_gtfs_metadata(dataset_representation)
    dataset_representation = process_bounding_box_for_gtfs_metadata(
        dataset_representation
    )
    dataset_representation = process_bounding_octagon_for_gtfs_metadata(
        dataset_representation
    )
    dataset_representation = process_agencies_count_for_gtfs_metadata(
        dataset_representation
    )
    dataset_representation = process_routes_count_by_type_for_gtfs_metadata(
        dataset_representation
    )
    dataset_representation = process_stops_count_by_type_for_gtfs_metadata(
        dataset_representation
    )
    dataset_representation = create_dataset_entity_for_gtfs_metadata(
        dataset_representation, api_url, username, password
    )
    return dataset_representation
    def test_process_end_timestamp_execution_missing_agency_fields(self):
        mock_calendar = PropertyMock(return_value=pd.DataFrame({
            END_TIMESTAMP_MAP[CALENDAR_DATE_KEY]: ["20201010"],
            MONDAY: [0],
            TUESDAY: [0],
            WEDNESDAY: [0],
            THURSDAY: [0],
            FRIDAY: [0],
            SATURDAY: [1],
            SUNDAY: [0],
            SERVICE_ID: ["test_service_id"],
        }))
        mock_calendar_dates = PropertyMock(return_value=pd.DataFrame({
            SERVICE_ID: ["test_another_service_id"],
            DATE: ["20201111"],
            EXCEPTION_TYPE: [2],
        }))
        mock_stop_times = PropertyMock(return_value=pd.DataFrame({
            TRIP_ID: ["test_trip_id"],
            END_TIMESTAMP_MAP[STOP_TIME_KEY]: ["test_stop_time"],
        }))
        mock_trips = PropertyMock(return_value=pd.DataFrame({
            SERVICE_ID: ["test_service_id"],
        }))
        mock_agency = PropertyMock(return_value=pd.DataFrame({}))
        mock_dataset = MagicMock()
        mock_dataset.__class__ = Feed
        type(mock_dataset).calendar = mock_calendar
        type(mock_dataset).calendar_dates = mock_calendar_dates
        type(mock_dataset).stop_times = mock_stop_times
        type(mock_dataset).trips = mock_trips
        type(mock_dataset).agency = mock_agency

        mock_metadata = MagicMock()
        mock_metadata.__class__ = GtfsMetadata

        mock_gtfs_representation = MagicMock()
        mock_gtfs_representation.__class__ = GtfsRepresentation
        type(mock_gtfs_representation).dataset = mock_dataset
        type(mock_gtfs_representation).metadata = mock_metadata

        under_test = process_end_timestamp_for_gtfs_metadata(
            mock_gtfs_representation)
        self.assertIsInstance(under_test, GtfsRepresentation)
        mock_metadata.end_timestamp.assert_not_called()
Ejemplo n.º 6
0
                                   args.data_type)

    # Process each dataset representation in the data_repository
    for (
            dataset_key,
            dataset_representation,
    ) in data_repository.get_dataset_representations().items():
        dataset_representation = process_country_codes_for_gtfs_metadata(
            dataset_representation)
        dataset_representation = process_start_service_date_for_gtfs_metadata(
            dataset_representation)
        dataset_representation = process_end_service_date_for_gtfs_metadata(
            dataset_representation)
        dataset_representation = process_start_timestamp_for_gtfs_metadata(
            dataset_representation)
        dataset_representation = process_end_timestamp_for_gtfs_metadata(
            dataset_representation)
        dataset_representation = process_main_language_code_for_gtfs_metadata(
            dataset_representation)
        dataset_representation = process_timezones_for_gtfs_metadata(
            dataset_representation)
        dataset_representation = process_bounding_box_for_gtfs_metadata(
            dataset_representation)
        dataset_representation = process_bounding_octagon_for_gtfs_metadata(
            dataset_representation)
        dataset_representation = process_agencies_count_for_gtfs_metadata(
            dataset_representation)
        dataset_representation = process_routes_count_by_type_for_gtfs_metadata(
            dataset_representation)
        dataset_representation = process_stops_count_by_type_for_gtfs_metadata(
            dataset_representation)
        dataset_representation = create_dataset_entity_for_gtfs_metadata(