From 755b87c0a03ea746ce985008d9bc1ddd558514bb Mon Sep 17 00:00:00 2001
From: fspreck <f.spreckelsen@indiscale.com>
Date: Mon, 23 May 2022 12:02:45 +0200
Subject: [PATCH] TST: Add integration test for
 https://gitlab.com/caosdb/caosdb-server/-/issues/136

---
 tests/test_issues_server.py | 54 ++++++++++++++++++++++++++++++++-----
 1 file changed, 47 insertions(+), 7 deletions(-)

diff --git a/tests/test_issues_server.py b/tests/test_issues_server.py
index a48f5ce..706092e 100644
--- a/tests/test_issues_server.py
+++ b/tests/test_issues_server.py
@@ -713,7 +713,8 @@ def test_134_1():
     """
     p_lng = db.Property(name="longitude", datatype=db.DOUBLE).insert()
     p_lat = db.Property(name="latitude", datatype=db.DOUBLE).insert()
-    rt_ev = db.RecordType(name="Event").add_property(p_lng).add_property(p_lat).insert()
+    rt_ev = db.RecordType(name="Event").add_property(
+        p_lng).add_property(p_lat).insert()
     p_ev = db.Property(name="events", datatype=db.LIST(rt_ev)).insert()
     rt_ds = db.RecordType(name="DataSet").add_property(p_ev).insert()
 
@@ -724,14 +725,17 @@ def test_134_1():
                                                           0.2).add_property("latitude",
                                                                             0.2).insert()
 
-    r_ds = db.Record().add_parent("DataSet").add_property("events", value=[r_ev_1, r_ev_2]).insert()
+    r_ds = db.Record().add_parent("DataSet").add_property(
+        "events", value=[r_ev_1, r_ev_2]).insert()
 
     result = db.execute_query("SELECT events.latitude FROM RECORD DataSet",
                               unique=True)
     print(result)
     assert len(result.get_property("events").value) == 2
-    assert result.get_property("events").value[0].get_property("latitude").value == 0.1
-    assert result.get_property("events").value[1].get_property("latitude").value == 0.2
+    assert result.get_property("events").value[0].get_property(
+        "latitude").value == 0.1
+    assert result.get_property("events").value[1].get_property(
+        "latitude").value == 0.2
 
 
 def test_134_2():
@@ -741,7 +745,8 @@ def test_134_2():
     """
     p_lng = db.Property(name="longitude", datatype=db.DOUBLE).insert()
     p_lat = db.Property(name="latitude", datatype=db.DOUBLE).insert()
-    rt_ev = db.RecordType(name="Event").add_property(p_lng).add_property(p_lat).insert()
+    rt_ev = db.RecordType(name="Event").add_property(
+        p_lng).add_property(p_lat).insert()
     rt_ds = db.RecordType(name="DataSet").add_property(name="Event",
                                                        datatype=db.LIST(rt_ev)).insert()
 
@@ -758,5 +763,40 @@ def test_134_2():
     result = db.execute_query("SELECT Event.latitude FROM RECORD DataSet",
                               unique=True)
     assert len(result.get_property("Event").value) == 2
-    assert result.get_property("Event").value[0].get_property("latitude").value == 0.1
-    assert result.get_property("Event").value[1].get_property("latitude").value == 0.2
+    assert result.get_property("Event").value[0].get_property(
+        "latitude").value == 0.1
+    assert result.get_property("Event").value[1].get_property(
+        "latitude").value == 0.2
+
+
+def test_136():
+    """Faulty creation of a multi-property when updating a non-list property
+    with a list value.
+
+    https://gitlab.com/caosdb/caosdb-server/-/issues/136
+
+    """
+    # @author Florian Spreckelsen
+    # @date 2022-05-23
+
+    # Insert data model:
+    rt = db.RecordType(name="TestBug")
+    p = db.Property(name="TestBugProperty", datatype=db.INTEGER)
+    db.Container().extend([rt, p]).insert()
+
+    # Insert test record:
+    r = db.Record(name="TestRecord")
+    r.add_parent(rt)
+    r.add_property(p, value=18)
+    r.insert()
+
+    # Update the record:
+    test_r = db.Record(id=r.id, name="TestRecord")
+    test_r.add_parent(rt)
+    test_r.add_property(id=p.id, value=[18, 12])
+    with pytest.raises(db.TransactionError) as cm:
+        test_r.update()
+
+    te = err.value
+    assert te.has_error(db.UnqualifiedPropertiesError)
+    assert "Cannot parse value to integer" in str(te)
-- 
GitLab