66from reporting .models .reporting_year import ReportingYear
77from reporting .service .report_validation .report_validation_error import (
88 ReportValidationError ,
9+ ReportValidationErrorKey ,
910 Severity ,
1011)
1112from reporting .service .report_validation .validators .report_activity_json_validation import (
@@ -56,7 +57,6 @@ def test_enable_jsonschema_draft_2020_validation(self):
5657 and "dependencies" not in schema ["properties" ]["test_prop" ]
5758 )
5859
59- @pytest .mark .skip ("Validator disabled until fixes with jsonschema draft2020 can be addressed. (reporting/#941)" )
6060 @patch ("service.form_builder_service.FormBuilderService.build_form_schema" )
6161 def test_validate_with_extra_field (self , mock_build_form_schema ):
6262 mock_build_form_schema .return_value = json .dumps (
@@ -102,7 +102,7 @@ def test_validate_with_extra_field(self, mock_build_form_schema):
102102
103103 raw_activity_data = make_recipe (
104104 "reporting.tests.utils.report_raw_activity_data" ,
105- report_version = 1 ,
105+ report_version = raw_activity_data . facility_report . report_version ,
106106 facility_report__facility__id = "00000000-0000-0000-0000-000000000012" ,
107107 activity__slug = "test-activity" ,
108108 json_data = {
@@ -121,6 +121,7 @@ def test_validate_with_extra_field(self, mock_build_form_schema):
121121 "facility_00000000-0000-0000-0000-000000000012_test-activity" : ReportValidationError (
122122 Severity .ERROR ,
123123 "Validation error: Unevaluated properties are not allowed ('prop3' was unexpected) at: sourceTypes > testSourceType" ,
124+ ReportValidationErrorKey .ACTIVITY_JSON_SCHEMA_VALIDATION_ERROR ,
124125 )
125126 }
126127
@@ -289,3 +290,42 @@ def test_validate_integration(self):
289290 errors = validate (raw_activity_data .facility_report .report_version )
290291
291292 assert errors == {}
293+
294+ def test_validate_with_flag_exludes_unevaluated_properties (self ):
295+ schema = {
296+ "type" : "object" ,
297+ "properties" : {
298+ "name" : {"type" : "string" },
299+ "test_prop" : {
300+ "type" : "object" ,
301+ "properties" : {
302+ "test_prop_1" : {"type" : "string" },
303+ "test_prop_2" : {"type" : "object" , "properties" : {"test_prop_3" : {"type" : "string" }}},
304+ },
305+ "dependencies" : {
306+ "test_prop_1" : {
307+ "properties" : {
308+ "test_prop_2" : {
309+ "type" : "object" ,
310+ "properties" : {"test_prop_3" : {}},
311+ },
312+ }
313+ }
314+ },
315+ },
316+ },
317+ "dependencies" : {"name" : {"minLength" : 3 }},
318+ }
319+
320+ enable_jsonschema_draft_2020_validation (schema , False )
321+
322+ assert "unevaluatedProperties" not in schema
323+ assert "unevaluatedProperties" not in schema ["properties" ]["test_prop" ]
324+ assert (
325+ "unevaluatedProperties"
326+ not in schema ["properties" ]["test_prop" ]["properties" ]["test_prop_2" ]["properties" ]["test_prop_3" ]
327+ )
328+ assert (
329+ "unevaluatedProperties"
330+ not in schema ["properties" ]["test_prop" ]["dependentSchemas" ]["test_prop_1" ]["properties" ]["test_prop_2" ]
331+ )
0 commit comments