@@ -83,6 +83,58 @@ def test_backfill_datasets(mock_get, mock_storage_client):
8383 mock_session .commit .assert_called_once ()
8484
8585
86+ @patch ("logging.error" , autospec = True )
87+ @patch ("google.cloud.storage.Client" , autospec = True )
88+ @patch ("requests.get" )
89+ def test_backfill_datasets_error_commit (mock_get , mock_storage_client , mock_logger ):
90+ # Mock the storage client and bucket
91+ mock_bucket = MagicMock ()
92+ mock_client_instance = mock_storage_client .return_value
93+ mock_client_instance .bucket .return_value = mock_bucket
94+ mock_blob = MagicMock ()
95+ mock_blob .exists .return_value = False
96+ mock_bucket .blob .return_value = mock_blob
97+
98+ mock_session = MagicMock ()
99+ mock_dataset = Mock (spec = Gtfsdataset )
100+ mock_dataset .id = 1
101+ mock_dataset .stable_id = "mdb-392-202406181921"
102+ mock_dataset .service_date_range_end = None
103+ mock_dataset .service_date_range_start = None
104+ mock_dataset .validation_reports = [
105+ MagicMock (
106+ validator_version = "6.0.0" ,
107+ validated_at = "2022-01-01T00:00:00Z" ,
108+ json_report = "http://example-2.com/report.json" ,
109+ )
110+ ]
111+
112+ mock_query = MagicMock ()
113+ mock_query .options .return_value = mock_query
114+ mock_query .filter .return_value = mock_query
115+ mock_query .all .return_value = [mock_dataset ]
116+ mock_session .query .return_value = mock_query
117+ mock_session .commit .side_effect = Exception ("Commit failed" )
118+
119+ mock_response = Mock ()
120+ mock_response .status_code = 200
121+ mock_response .json .return_value = {
122+ "summary" : {
123+ "feedInfo" : {
124+ "feedServiceWindowStart" : "2023-01-01" ,
125+ "feedServiceWindowEnd" : "2023-12-31" ,
126+ }
127+ }
128+ }
129+ mock_get .return_value = mock_response
130+
131+ try :
132+ backfill_datasets (mock_session )
133+ except Exception :
134+ mock_session .rollback .assert_called_once ()
135+ mock_session .close .assert_called_once ()
136+
137+
86138@patch ("google.cloud.storage.Client" , autospec = True )
87139@patch ("requests.get" )
88140def test_backfill_datasets_no_validation_reports (mock_get , mock_storage_client ):
0 commit comments