@@ -329,3 +329,115 @@ def test_compute_validation_report_counters(self, db_session):
329329 self .assertEqual (validation_report .unique_info_count , 1 )
330330 self .assertEqual (validation_report .unique_warning_count , 1 )
331331 self .assertEqual (validation_report .unique_error_count , 2 )
332+
333+ @mock .patch ("requests.get" )
334+ @with_db_session (db_url = default_db_url )
335+ def test_create_validation_report_entities_missing_validator_version (
336+ self , mock_get , db_session
337+ ):
338+ """Test create_validation_report_entities function
339+ when the validator version is missing from the JSON report."""
340+ mock_get .return_value = MagicMock (
341+ status_code = 200 ,
342+ json = lambda : {
343+ "summary" : {
344+ "validatedAt" : "2021-01-01T00:00:00Z" ,
345+ "gtfsFeatures" : ["stops" , "routes" ],
346+ },
347+ "notices" : [
348+ {"code" : "notice_code" , "severity" : "ERROR" , "totalNotices" : 1 }
349+ ],
350+ },
351+ )
352+ feed_stable_id = faker .word ()
353+ dataset_stable_id = faker .word ()
354+
355+ # Create GTFS Feed
356+ feed = Gtfsfeed (id = faker .word (), data_type = "gtfs" , stable_id = feed_stable_id )
357+ # Create a new dataset
358+ dataset = Gtfsdataset (
359+ id = faker .word (), feed_id = feed .id , stable_id = dataset_stable_id , latest = True
360+ )
361+ try :
362+ db_session .add (feed )
363+ db_session .add (dataset )
364+ db_session .commit ()
365+ create_validation_report_entities (feed_stable_id , dataset_stable_id , "1.0" )
366+
367+ # Validate that the validation report was created
368+ validation_report = (
369+ db_session .query (Validationreport )
370+ .filter (Validationreport .id == f"{ dataset_stable_id } _1.0" )
371+ .one_or_none ()
372+ )
373+ self .assertIsNotNone (validation_report )
374+ except Exception as e :
375+ raise e
376+ finally :
377+ db_session .rollback ()
378+ db_session .close ()
379+
380+ @mock .patch ("requests.get" )
381+ @with_db_session (db_url = default_db_url )
382+ def test_create_validation_report_entities_validation_report_exists (
383+ self , mock_get , db_session
384+ ):
385+ """Test create_validation_report_entities function
386+ when the validation report already exists."""
387+ version = "1.0"
388+ mock_get .return_value = MagicMock (
389+ status_code = 200 ,
390+ json = lambda : {
391+ "summary" : {
392+ "validatedAt" : "2021-01-01T00:00:00Z" ,
393+ "gtfsFeatures" : ["stops" , "routes" ],
394+ "validatorVersion" : version ,
395+ },
396+ "notices" : [
397+ {"code" : "notice_code" , "severity" : "ERROR" , "totalNotices" : 1 }
398+ ],
399+ },
400+ )
401+ feed_stable_id = faker .word ()
402+ dataset_stable_id = faker .word ()
403+ report_id = f"{ dataset_stable_id } _{ version } "
404+ # Create GTFS Feed
405+ feed = Gtfsfeed (id = faker .word (), data_type = "gtfs" , stable_id = feed_stable_id )
406+ # Create a new dataset
407+ dataset = Gtfsdataset (
408+ id = faker .word (),
409+ feed_id = feed .id ,
410+ stable_id = dataset_stable_id ,
411+ latest = True ,
412+ validation_reports = [
413+ Validationreport (
414+ id = report_id , validator_version = "1.0" , notices = [], features = []
415+ )
416+ ],
417+ )
418+
419+ try :
420+ db_session .add (feed )
421+ db_session .add (dataset )
422+ db_session .commit ()
423+ # Validate that the validation report is already in the DB
424+ validation_report = (
425+ db_session .query (Validationreport )
426+ .filter (Validationreport .id == report_id )
427+ .one_or_none ()
428+ )
429+ self .assertIsNotNone (validation_report )
430+ create_validation_report_entities (feed_stable_id , dataset_stable_id , "1.0" )
431+
432+ # Validate that the validation report remained in the DB
433+ validation_report = (
434+ db_session .query (Validationreport )
435+ .filter (Validationreport .id == report_id )
436+ .one_or_none ()
437+ )
438+ self .assertIsNotNone (validation_report )
439+ except Exception as e :
440+ raise e
441+ finally :
442+ db_session .rollback ()
443+ db_session .close ()
0 commit comments