Example #1
0
    def test_process_routes_count_by_type_with_some_routes(self, mock_env):
        test_env = {
            TRAM_CODE: "test_tram_code",
            SUBWAY_CODE: "test_subway_code",
            RAIL_CODE: "test_rail_code",
            BUS_CODE: "test_bus_code",
            FERRY_CODE: "test_ferry_code",
            CABLE_TRAM_CODE: "test_cable_tram_code",
            AERIAL_LIFT_CODE: "test_aerial_lift_code",
            FUNICULAR_CODE: "test_funicular_code",
            TROLLEY_BUS_CODE: "test_trolley_bus_code",
            MONORAIL_CODE: "test_monorail_code",
        }
        mock_env.__getitem__.side_effect = test_env.__getitem__

        mock_routes = PropertyMock(return_value=pd.DataFrame(
            {ROUTE_TYPE: [0, 2, 5, 0, 12, 1, 0, 0, 0]}))
        mock_dataset = MagicMock()
        mock_dataset.__class__ = Feed
        type(mock_dataset).routes = mock_routes

        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_routes_count_by_type_for_gtfs_metadata(
            mock_gtfs_representation)
        self.assertIsInstance(under_test, GtfsRepresentation)
        mock_routes.assert_called()
        self.assertEqual(
            mock_metadata.routes_count_by_type,
            {
                "test_tram_code": 5,
                "test_subway_code": 1,
                "test_rail_code": 1,
                "test_cable_tram_code": 1,
                "test_monorail_code": 1,
            },
        )
    def test_process_end_service_date_with_dataset_with_feed_info(self):
        mock_feed_info = PropertyMock(return_value=pd.DataFrame(
            {END_DATE_MAP[FEED_DATE_KEY]: ["20201010"]}))
        mock_dataset = MagicMock()
        mock_dataset.__class__ = Feed
        type(mock_dataset).feed_info = mock_feed_info

        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_service_date_for_gtfs_metadata(
            mock_gtfs_representation)
        self.assertIsInstance(under_test, GtfsRepresentation)
        mock_feed_info.assert_called()
        self.assertEqual(mock_metadata.end_service_date, "2020-10-10")
Example #3
0
    def test_process_main_language_code(self):
        mock_agency = PropertyMock(
            return_value=pd.DataFrame({AGENCY_LANG: ["fr"]}))
        mock_dataset = MagicMock()
        mock_dataset.__class__ = Feed
        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_main_language_code_for_gtfs_metadata(
            mock_gtfs_representation)
        self.assertIsInstance(under_test, GtfsRepresentation)
        mock_agency.assert_called()
        self.assertEqual(mock_metadata.main_language_code, "fr")
Example #4
0
    def test_get_gtfs_date_by_type_with_dataset_with_none_calendars_should_return_empty_dataframe(
            self, mock_dataset):
        mock_calendar = PropertyMock(return_value=None)
        mock_calendar_dates = PropertyMock(return_value=None)
        mock_dataset.__class__ = Feed
        type(mock_dataset).calendar = mock_calendar
        type(mock_dataset).calendar_dates = mock_calendar_dates

        mock_date_type = MagicMock()
        mock_date_type.__class__ = str
        mock_date_type.__str__.return_value = "test_type"

        under_test = get_gtfs_dates_by_type(mock_dataset, str(mock_date_type))
        self.assertIsInstance(under_test, pd.DataFrame)
        self.assertTrue(under_test.empty)
        mock_calendar.assert_called()
        self.assertEqual(mock_calendar.call_count, 1)
        mock_calendar_dates.assert_called()
        self.assertEqual(mock_calendar_dates.call_count, 1)
        mock_date_type.assert_not_called()
    def test_process_timezones_with_missing_stop_timezones(self):
        mock_agency = PropertyMock(
            return_value=pd.DataFrame({AGENCY_TIMEZONE: [MONTREAL_TIMEZONE]}))
        mock_dataset = MagicMock()
        mock_dataset.__class__ = Feed
        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_timezones_for_gtfs_metadata(
            mock_gtfs_representation)
        self.assertIsInstance(under_test, GtfsRepresentation)
        mock_agency.assert_called()
        self.assertEqual(mock_metadata.main_timezone, MONTREAL_TIMEZONE)
        mock_metadata.other_timezones.assert_not_called()
Example #6
0
    def test_extract_geographical_coordinates_as_float_should_return_coordinates_as_float(
            self, mock_dataset):
        mock_stops = PropertyMock(return_value=pd.DataFrame({
            STOP_LAT: [45.508888, 44.508888],
            STOP_LON: [-73.561668, -74.561668]
        }))
        type(mock_dataset).stops = mock_stops

        (
            under_test_1,
            under_test_2,
            under_test_3,
            under_test_4,
        ) = extract_geographical_coordinates_as_float(mock_dataset.stops)

        self.assertEqual(under_test_1, 45.508888)
        self.assertEqual(under_test_2, 44.508888)
        self.assertEqual(under_test_3, -73.561668)
        self.assertEqual(under_test_4, -74.561668)
        mock_stops.assert_called()
        self.assertEqual(mock_stops.call_count, 1)
Example #7
0
    def test_process_geographical_coordinates_as_string_should_return_coordinates_as_string(
            self, mock_dataset):
        mock_stops = PropertyMock(return_value=pd.DataFrame({
            STOP_LAT: [45.508888, 44.508888],
            STOP_LON: [-73.561668, -74.561668]
        }))
        type(mock_dataset).stops = mock_stops

        (
            under_test_1,
            under_test_2,
            under_test_3,
            under_test_4,
        ) = process_geographical_coordinates_as_string(mock_dataset.stops)

        self.assertEqual(under_test_1, "45°30'31.997\"N")
        self.assertEqual(under_test_2, "44°30'31.997\"N")
        self.assertEqual(under_test_3, "73°33'42.005\"W")
        self.assertEqual(under_test_4, "74°33'42.005\"W")
        mock_stops.assert_called()
        self.assertEqual(mock_stops.call_count, 1)
    def test_process_start_service_date_with_dataset_with_none_feed_info_and_calendar(
            self, mock_dates_by_type):
        mock_feed_info = PropertyMock(return_value=None)
        mock_calendar = PropertyMock(return_value=None)
        mock_calendar_dates = PropertyMock(return_value=pd.DataFrame({
            SERVICE_ID: ["test_another_service_id"],
            DATE: ["20201111"],
            EXCEPTION_TYPE: [2],
        }))
        mock_dataset = MagicMock()
        mock_dataset.__class__ = Feed
        type(mock_dataset).feed_info = mock_feed_info
        type(mock_dataset).calendar = mock_calendar
        type(mock_dataset).calendar_dates = mock_calendar_dates

        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_dates_by_type.return_value = pd.DataFrame({
            SERVICE_ID: ["test_service_id"],
            DATE: ["20201010"]
        })

        under_test = process_start_service_date_for_gtfs_metadata(
            mock_gtfs_representation)
        self.assertIsInstance(under_test, GtfsRepresentation)
        mock_feed_info.assert_called()
        mock_calendar.assert_called()
        mock_calendar_dates.assert_called()
        self.assertEqual(mock_metadata.start_service_date, "2020-10-10")
    def test_process_stops_count_execution_with_empty_stop_types(
        self,
    ):
        mock_stops = PropertyMock(return_value=pd.DataFrame({LOCATION_TYPE: []}))
        mock_dataset = MagicMock()
        mock_dataset.__class__ = Feed
        type(mock_dataset).stops = mock_stops

        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_stops_count_by_type_for_gtfs_metadata(
            mock_gtfs_representation
        )
        self.assertIsInstance(under_test, GtfsRepresentation)
        mock_stops.assert_called()
        mock_metadata.stops_count_by_type.assert_not_called()
Example #10
0
    def test_get_gtfs_date_by_type_with_calendar_and_none_calendar_dates_should_return_dataframe(
            self, mock_dataset):
        mock_calendar = PropertyMock(return_value=pd.DataFrame({
            "start_date": ["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_dataset.__class__ = Feed
        type(mock_dataset).calendar = mock_calendar
        type(mock_dataset).calendar_dates = mock_calendar_dates

        mock_date_type = MagicMock()
        mock_date_type.__class__ = str
        mock_date_type.__str__.return_value = "start_date"

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

        under_test = get_gtfs_dates_by_type(mock_dataset, str(mock_date_type))
        self.assertIsInstance(under_test, pd.DataFrame)
        self.assertEqual(under_test["service_id"].all(),
                         test_dataframe["service_id"].all())
        self.assertEqual(under_test["date"].all(),
                         test_dataframe["date"].all())
        mock_calendar.assert_called()
        self.assertEqual(mock_calendar.call_count, 2)
        mock_calendar_dates.assert_called()
        self.assertEqual(mock_calendar_dates.call_count, 1)
    def test_process_start_service_date_with_dataset_with_empty_feed_info(
            self, mock_dates_by_type):
        mock_feed_info = PropertyMock(
            return_value=pd.DataFrame({START_DATE_MAP[FEED_DATE_KEY]: []}))
        mock_calendar = PropertyMock(return_value=pd.DataFrame({
            START_DATE_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_dataset = MagicMock()
        mock_dataset.__class__ = Feed
        type(mock_dataset).feed_info = mock_feed_info
        type(mock_dataset).calendar = mock_calendar
        type(mock_dataset).calendar_dates = mock_calendar_dates

        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_dates_by_type.return_value = pd.DataFrame({
            SERVICE_ID: ["test_service_id"],
            DATE: ["20201010"]
        })

        under_test = process_start_service_date_for_gtfs_metadata(
            mock_gtfs_representation)
        self.assertIsInstance(under_test, GtfsRepresentation)
        mock_feed_info.assert_called()
        mock_calendar.assert_called()
        mock_calendar_dates.assert_called()
        self.assertEqual(mock_metadata.start_service_date, "2020-10-10")