diff --git a/integrationtests/test_datamodel.schema.json b/integrationtests/test_datamodel.schema.json
index 8b861b1a55fe4e45908f5339b86796386dd90b1f..356964702dd83a8c81edf1e8d72bf4a30468e6f2 100644
--- a/integrationtests/test_datamodel.schema.json
+++ b/integrationtests/test_datamodel.schema.json
@@ -47,6 +47,39 @@
     {
         "title": "TestTypeWithLists",
         "type": "object",
-        "properties": {}
+        "properties": {
+            "string_list": {
+                "type": "array",
+                "description": "A list of words",
+                "items": { "type": "string" }
+            },
+            "named_int_list": {
+                "type": "array",
+                "title": "NamedIntList",
+                "items": { "type": "integer" }
+            },
+            "ListRecordType": {
+                "type": "array",
+                "items": { "type": "object", "properties": {} }
+            },
+            "NamedReferenceList": {
+                "type": "array",
+                "items": {
+                    "title": "ReferencedListTypeWithName",
+                    "type": "object",
+                    "description": "Referenced by a named list-of-references property",
+                    "properties": {
+                        "double_prop": {}
+                    }
+                }
+            },
+            "ListNumberEnum": {
+                "type": "array",
+                "items": {
+                    "type": "number",
+                    "enum": [ 1.1, 2.2, 3.3 ]
+                }
+            }
+        }
     }
 ]
diff --git a/integrationtests/test_json_schema_datamodel_parser.py b/integrationtests/test_json_schema_datamodel_parser.py
index 0df34a93ea6e98b02398145a11ccb20e61cc290c..21ae8d2d7bad5527a7a314220b38af8ff816475f 100644
--- a/integrationtests/test_json_schema_datamodel_parser.py
+++ b/integrationtests/test_json_schema_datamodel_parser.py
@@ -120,8 +120,10 @@ def test_json_parsed_datamodel():
         enum_type = db.execute_query(
             f"FIND RECORDTYPE {enum_type_name}", unique=True)
         assert len(enum_type.properties) == 0
-        assert len(db.execute_query(
-            f"FIND RECORD {enum_type_name}")) == len(enum_names)
+        enum_records = db.execute_query(f"FIND RECORD {enum_type_name}")
+        assert len(enum_records) == len(enum_names)
+        for rec in enum_records:
+            assert rec.name in enum_names
         assert rt2.get_property(enum_type_name) is not None
         assert rt2.get_property(enum_type_name).is_reference()
         assert rt2.get_property(enum_type_name).name == enum_type.name
@@ -129,3 +131,44 @@ def test_json_parsed_datamodel():
 
     # Recordtype with lists
     rt3 = db.execute_query("FIND RECORDTYPE TestTypeWithLists", unique=True)
+    assert rt3.get_property("string_list") is not None
+    assert rt3.get_property("string_list").datatype == db.LIST(db.TEXT)
+    string_list_prop = db.Property(name="string_list").retrieve()
+    assert string_list_prop.description == "A list of words"
+    assert string_list_prop.datatype == db.LIST(db.TEXT)
+    assert string_list_prop.id == rt3.get_property("string_list").id
+
+    assert rt3.get_property("NamedIntList") is not None
+    assert rt3.get_property("NamedIntList").datatype == db.LIST(db.INTEGER)
+
+    # This is a list of a plain references to a specific type
+    list_rt = db.execute_query("FIND RECORDTYPE ListRecordType", unique=True)
+    assert len(list_rt.properties) == 0
+    assert rt3.get_property(list_rt.name) is not None
+    assert rt3.get_property(list_rt.name).is_reference()
+    assert rt3.get_property(list_rt.name).datatype == db.LIST(list_rt)
+    assert rt3.get_property(list_rt.name).id == list_rt.id
+
+    # This is a list property of its own, referencing another separate RT
+    referenced_list_rt = db.execute_query(
+        "FIND RECORDTYPE ReferencedListTypeWithName", unique=True)
+    assert referenced_list_rt.description == "Referenced by a named list-of-references property"
+    assert referenced_list_rt.get_property("double_prop") is not None
+    assert (referenced_list_rt.get_property("double_prop").id ==
+            rt1.get_property("double_prop").id)
+    assert rt3.get_property("NamedReferenceList") is not None
+    assert rt3.get_property("NamedReferenceList").is_reference()
+    assert rt3.get_property(
+        "NamedReferenceList").datatype == db.LIST(referenced_list_rt)
+    assert rt3.get_property("NamedReferenceList").id != referenced_list_rt.id
+
+    enum_type = db.execute_query("FIND RECORDTYPE ListNumberEnum", unique=True)
+    assert len(enum_type.properties) == 0
+    enum_names = ["1.1", "2.2", "3.3"]
+    enum_records = db.execute_query("FIND RECORD ListNumberEnum")
+    assert len(enum_records) == len(enum_names)
+    for rec in enum_records:
+        assert rec.name in enum_names
+    assert rt3.get_property(enum_type.name) is not None
+    assert rt3.get_property(enum_type.name).datatype == db.LIST(enum_type)
+    assert rt3.get_property(enum_type.name).id == enum_type.id