Skip to content
Snippets Groups Projects
Commit 41ec62d6 authored by Florian Spreckelsen's avatar Florian Spreckelsen
Browse files

TST: Extend enum test and add unittest for reference properties

parent 8129f953
No related branches found
No related tags found
2 merge requests!39Release 0.4.0,!33F json schema datamodel
Pipeline #20508 passed
...@@ -6,6 +6,10 @@ ...@@ -6,6 +6,10 @@
"license": { "license": {
"type": "string", "type": "string",
"enum": ["CC-BY", "CC-BY-SA", "CC0", "restricted access"] "enum": ["CC-BY", "CC-BY-SA", "CC0", "restricted access"]
},
"int_enum": {
"type": "integer",
"enum": [1, 2, 3]
} }
}, },
"required": ["license"] "required": ["license"]
......
{
"title": "Dataset",
"description": "",
"type": "object",
"properties": {
"event": {
"type": "object",
"properties": {
"longitude": {
"type": "number"
},
"latitude": {
"type": "number"
},
"location": {
"type": "string",
"description": "geographical location (e.g., North Sea; Espoo, Finland)"
}
},
"required": ["longitude", "latitude"]
}
},
"required": ["event"]
}
...@@ -147,5 +147,63 @@ def test_enum(): ...@@ -147,5 +147,63 @@ def test_enum():
for name in licenses: for name in licenses:
assert isinstance(model[name], db.Record) assert isinstance(model[name], db.Record)
assert model[name].name == name
assert len(model[name].parents) == 1 assert len(model[name].parents) == 1
assert model[name].has_parent(model["license"]) assert model[name].has_parent(model["license"])
# Also allow enums with non-string types
int_enums = ["1", "2", "3"]
for name in ["int_enum"] + int_enums:
assert name in model
assert isinstance(model["int_enum"], db.RecordType)
assert model["Dataset"].get_property("int_enum") is not None
assert model["Dataset"].get_property("int_enum").is_reference()
assert model["Dataset"].get_property(
"int_enum").datatype.name == "int_enum"
for name in int_enums:
assert isinstance(model[name], db.Record)
assert model[name].name == name
assert len(model[name].parents) == 1
assert model[name].has_parent(model["int_enum"])
def test_references():
"""Test reference properties"""
# @author Florian Spreckelsen
# @date 2022-03-17
model = parse_model_from_json_schema(os.path.join(
FILEPATH, "datamodel_references.schema.json"))
for name in ["Dataset", "event", "longitude", "latitude", "location"]:
assert name in model
assert isinstance(model["Dataset"], db.RecordType)
assert model["Dataset"].get_property("event") is not None
assert model["Dataset"].get_importance("event") == db.OBLIGATORY
assert model["Dataset"].get_property("event").is_reference()
assert model["Dataset"].get_property("event").datatype.name == "event"
assert isinstance(model["event"], db.RecordType)
assert model["event"].get_property("longitude") is not None
assert model["event"].get_importance("longitude") == db.OBLIGATORY
assert model["event"].get_property("longitude").datatype == db.DOUBLE
assert model["event"].get_property("latitude") is not None
assert model["event"].get_importance("latitude") == db.OBLIGATORY
assert model["event"].get_property("latitude").datatype == db.DOUBLE
assert model["event"].get_property("location") is not None
assert model["event"].get_importance("location") == db.RECOMMENDED
assert model["event"].get_property("location").datatype == db.TEXT
assert isinstance(model["longitude"], db.Property)
assert model["longitude"].datatype == db.DOUBLE
assert isinstance(model["latitude"], db.Property)
assert model["latitude"].datatype == db.DOUBLE
assert isinstance(model["location"], db.Property)
assert model["location"].datatype == db.TEXT
assert model["location"].description == "geographical location (e.g., North Sea; Espoo, Finland)"
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment