diff --git a/tests/test_issues_server.py b/tests/test_issues_server.py index 7f14550fe85a0a7c37e01c88b48082fb8c6335f5..6c1a1ac25191e81da2a7062138c078321f41cb3e 100644 --- a/tests/test_issues_server.py +++ b/tests/test_issues_server.py @@ -542,3 +542,52 @@ def test_issue_130(): query = 'SELECT "TestWrapper With Spaces".name FROM RECORD TestRT_B' row = db.execute_query(query).get_property_values(("TestWrapper With Spaces", "name")) assert row == [("ReferencedRecord",)] #FAILS + + +def test_issue_132(): + """Query: Parenthesis around subproperties. + + https://gitlab.com/caosdb/caosdb-server/-/issues/132 + """ + db.RecordType("TestRT").insert() + db.RecordType("TestRT_Foo").insert() + db.Property("TestP_Bar", datatype=db.TEXT).insert() + db.Property("TestP_Baz", datatype=db.TEXT).insert() + + rt1 = db.Record().add_parent("TestRT_Foo").add_property("TestP_Bar", "val1").add_property("TestP_Baz", "the other baz").insert() + rt2 = db.Record().add_parent("TestRT").add_property("TestP_Baz", "val2").add_property("TestRT_Foo", rt1).insert() + + query = "FIND RECORD TestRT_Foo" + assert db.execute_query(query, unique=True).id == rt1.id + + query = "FIND RECORD TestRT" + assert db.execute_query(query, unique=True).id == rt2.id + + query = "FIND RECORD TestRT WITH TestRT_Foo" + assert db.execute_query(query, unique=True).id == rt2.id + + query = "FIND RECORD TestRT WITH TestRT_Foo.TestP_Bar" + assert db.execute_query(query, unique=True).id == rt2.id + + query = "FIND RECORD TestRT WITH TestRT_Foo.TestP_Bar = val1" + assert db.execute_query(query, unique=True).id == rt2.id + + query = "FIND RECORD TestRT WITH (TestRT_Foo.TestP_Bar = val1)" + assert db.execute_query(query, unique=True).id == rt2.id + + query = "FIND RECORD TestRT WITH ( TestRT_Foo.TestP_Bar = val1 )" + assert db.execute_query(query, unique=True).id == rt2.id + + query = "FIND RECORD TestRT WITH (TestRT_Foo.TestP_Bar = val1) AND TestP_Baz = val2" + assert db.execute_query(query, unique=True).id == rt2.id + + query = "FIND RECORD TestRT WITH (TestRT_Foo WITH (TestP_Bar = val1 AND TestP_Baz = 'the other baz')) AND TestP_Baz = val2" + assert db.execute_query(query, unique=True).id == rt2.id + + query = "FIND RECORD TestRT WITH TestRT_Foo WITH (TestP_Bar = val1 AND TestP_Baz = 'the other baz') AND TestP_Baz = val2" + assert db.execute_query(query, unique=True).id == rt2.id + + # this one has the wront scope of the conjunction. + query = "FIND RECORD TestRT WITH TestRT_Foo.TestP_Bar = val1 AND TestP_Baz = 'the other one'" + assert len(db.execute_query(query)) == 0 +