diff --git a/unittests/json-schema-models/datamodel_enum_prop.schema.json b/unittests/json-schema-models/datamodel_enum_prop.schema.json
index 07b6a146a3af818da253293cb5744ad3a99d93fc..a764ceca246971a2bbfa1aecab14c9c3a1f54fe1 100644
--- a/unittests/json-schema-models/datamodel_enum_prop.schema.json
+++ b/unittests/json-schema-models/datamodel_enum_prop.schema.json
@@ -6,6 +6,10 @@
         "license": {
             "type": "string",
             "enum": ["CC-BY", "CC-BY-SA", "CC0", "restricted access"]
+        },
+        "int_enum": {
+            "type": "integer",
+            "enum": [1, 2, 3]
         }
     },
     "required": ["license"]
diff --git a/unittests/json-schema-models/datamodel_references.schema.json b/unittests/json-schema-models/datamodel_references.schema.json
new file mode 100644
index 0000000000000000000000000000000000000000..6b79a9bcdbbd8beaf9974a600e9c5ff30cb513f4
--- /dev/null
+++ b/unittests/json-schema-models/datamodel_references.schema.json
@@ -0,0 +1,24 @@
+{
+    "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"]
+}
diff --git a/unittests/test_json_schema_model_parser.py b/unittests/test_json_schema_model_parser.py
index b432af5c1fee410cfb23637c1734a0fed7a44e6a..637adac9d11daac9aec6bbbdabba00d5bb733057 100644
--- a/unittests/test_json_schema_model_parser.py
+++ b/unittests/test_json_schema_model_parser.py
@@ -147,5 +147,63 @@ def test_enum():
 
     for name in licenses:
         assert isinstance(model[name], db.Record)
+        assert model[name].name == name
         assert len(model[name].parents) == 1
         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)"