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")
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")
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()
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)
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()
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")