diff --git a/tests/test_issues_server.py b/tests/test_issues_server.py index a48f5ce31fa9ad71a248e1eed5f24223d7a99eb3..706092e0832eeaacb97cd1e0073d75bfa61b28dd 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)