diff --git a/tests/test_issues_server.py b/tests/test_issues_server.py index e9a93685cfd222000a50b399d44ec32692137e4f..a48f5ce31fa9ad71a248e1eed5f24223d7a99eb3 100644 --- a/tests/test_issues_server.py +++ b/tests/test_issues_server.py @@ -44,7 +44,7 @@ def setup_function(function): def teardown_function(function): """Deleting entities again.""" - setup_module() + pass # setup_module() # ########################### Issue tests start here ##################### @@ -704,3 +704,59 @@ def test_issue_221(): assert r2.get_property("B").value == 7 assert r2.get_property("B").datatype == db.INTEGER assert r2.get_property("B").id == p.id + + +def test_134_1(): + """CQL: Subproperties are not recognized in list of references. + + https://gitlab.com/caosdb/caosdb-server/-/issues/134 + """ + 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() + p_ev = db.Property(name="events", datatype=db.LIST(rt_ev)).insert() + rt_ds = db.RecordType(name="DataSet").add_property(p_ev).insert() + + r_ev_1 = db.Record().add_parent("Event").add_property("longitude", + 0.1).add_property("latitude", + 0.1).insert() + r_ev_2 = db.Record().add_parent("Event").add_property("longitude", + 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() + + 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 + + +def test_134_2(): + """CQL: Subproperties are not recognized in list of references. + + https://gitlab.com/caosdb/caosdb-server/-/issues/134 + """ + 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_ds = db.RecordType(name="DataSet").add_property(name="Event", + datatype=db.LIST(rt_ev)).insert() + + r_ev_1 = db.Record().add_parent("Event").add_property("longitude", + 0.1).add_property("latitude", + 0.1).insert() + r_ev_2 = db.Record().add_parent("Event").add_property("longitude", + 0.2).add_property("latitude", + 0.2).insert() + + r_ds = db.Record().add_parent("DataSet").add_property( + "Event", datatype=db.LIST(rt_ev), value=[r_ev_1, r_ev_2]).insert() + + 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 diff --git a/tests/test_name_properties.py b/tests/test_name_properties.py index c389945d5a46bfa8f22511554a751051ebf625fc..39e63e3b9850127f821c1679cb6ccd53c938a612 100644 --- a/tests/test_name_properties.py +++ b/tests/test_name_properties.py @@ -27,7 +27,7 @@ """ import caosdb as db -from pytest import raises +from pytest import raises, mark from nose.tools import assert_true, assert_equal @@ -351,3 +351,27 @@ def test_query_with_back_reference(): "FIND TestPerson WHICH IS REFERENCED BY TestObservation AS A TestConductor", unique=True).id, rec.id) + + +@mark.xfail(reason="Enhancement proposed") +def test_name_resource(): + name_prop = db.Property(name="name").retrieve() + alias_prop = db.Property(name="TestAlias").add_parent(name_prop).insert() + + rt = db.RecordType( + name="TestRT_primary").add_property( + alias_prop, + value="TestRT_alias").insert() + + connection = db.get_connection() + + flags = {"names": None} + + http_response = connection.retrieve( + entity_uri_segments=["Entity"], + query_dict=flags) + result = db.Container._response_to_entities(http_response) + print(result) + names = [e.name for e in result] + assert "TestRT_primary" in names + assert "TestRT_alias" in names # the alias should also be included"