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