diff --git a/src/caosadvancedtools/models/parser.py b/src/caosadvancedtools/models/parser.py index 66ea016b818f6f2c0a0a03797db7aa22848dfeb8..fec4c34ff8042c894366f71949f61662e643bf82 100644 --- a/src/caosadvancedtools/models/parser.py +++ b/src/caosadvancedtools/models/parser.py @@ -650,6 +650,10 @@ class JsonSchemaParser(Parser): force_list = False if name in self.model: return self.model[name], force_list + if "type" not in elt: + # Each element must have a specific type + raise JsonSchemaDefinitionError( + f"`type` is missing in element {name}.") if "enum" in elt: ent = self._treat_enum(elt, name) elif elt["type"] in JSON_SCHEMA_ATOMIC_TYPES: diff --git a/unittests/test_json_schema_model_parser.py b/unittests/test_json_schema_model_parser.py index 359f3c6a31b81fbbcfcdc834fe7784ce02b5387e..4b44f6efa1cda19c04ee13a6a50b04cefbff9177 100644 --- a/unittests/test_json_schema_model_parser.py +++ b/unittests/test_json_schema_model_parser.py @@ -140,7 +140,8 @@ def test_missing_property_type(): parse_model_from_json_schema( os.path.join(FILEPATH, "datamodel_missing_property_type.schema.json")) - assert "FIXME" in str(err.value) + assert "`type` is missing" in str(err.value) + def test_enum(): """Enums are represented in references to records of a specific type."""