diff --git a/tests/test_issues_server.py b/tests/test_issues_server.py index 13e10ac6d7d4777f38bbde14b2ffe0a7ee5e483c..206a7ace1c958b6e6814243e6d2e30b1539057eb 100644 --- a/tests/test_issues_server.py +++ b/tests/test_issues_server.py @@ -47,7 +47,8 @@ def setup(): def teardown(): """Deleting entities again.""" - setup_module() + #setup_module() + pass # ########################### Issue tests start here ##################### @@ -257,3 +258,87 @@ def test_issue_131(): "FIND Entity WITH {} > 100.5 €".format(prop.name))] assert rec.id in result_ids + + +def test_issue_154_no_versioning(): + """ FIND MusicalInstrument WITH Manufacturer = "Antonio Stradivari" and + FIND MusicalInstrument WITH Manufacturer != "Antonio Stradivari" """ + rt_man = db.RecordType("Manufacturer") + rt_inst = db.RecordType("MusicalInstrument").add_property(rt_man) + + rec_man = db.Record("Antonio Stradivari").add_parent("Manufacturer") + rec_man2 = db.Record("The other guy").add_parent("Manufacturer") + rec_inst = db.Record("Violin").add_parent("MusicalInstrument").add_property("Manufacturer", rec_man) + rec_inst2 = db.Record("Guitar").add_parent("MusicalInstrument").add_property("Manufacturer", rec_man2) + rec_inst3 = db.Record("Broken Record").add_parent("MusicalInstrument") + + c = db.Container().extend([rt_man, rt_inst, rec_man, rec_inst, rec_man2, + rec_inst2, rec_inst3]).insert() + + assert "Violin" not in [e.name for e in db.execute_query("FIND RECORD MusicalInstrument WITH Manufacturer != 'Antonio Stradivari'")] + assert "Violin" not in [e.name for e in db.execute_query("FIND RECORD MusicalInstrument WITH NOT Manufacturer = 'Antonio Stradivari'")] + assert len(db.execute_query("FIND MusicalInstrument")) == 4 + assert len(db.execute_query("FIND RECORD MusicalInstrument")) == 3 + assert len(db.execute_query("FIND MusicalInstrument WITH Manufacturer")) == 3 + assert len(db.execute_query("FIND RECORD MusicalInstrument WITH Manufacturer")) == 2 + assert rec_inst.id == db.execute_query("FIND MusicalInstrument WITH Manufacturer = 'Antonio Stradivari'", unique=True).id + assert len(db.execute_query("FIND MusicalInstrument WITH NOT Manufacturer = 'Antonio Stradivari'")) == 3 + assert len(db.execute_query("FIND RECORD MusicalInstrument WITH NOT Manufacturer = 'Antonio Stradivari'")) == 2 + assert len(db.execute_query("FIND MusicalInstrument WITH Manufacturer != 'Antonio Stradivari'")) == 1 + assert len(db.execute_query("FIND RECORD MusicalInstrument WITH Manufacturer != 'Antonio Stradivari'")) == 1 + + +def test_issue_154_with_versioning(): + """ FIND MusicalInstrument WITH Manufacturer = "Antonio Stradivari" and + FIND MusicalInstrument WITH Manufacturer != "Antonio Stradivari" """ + rt_man = db.RecordType("Manufacturer") + rt_inst = db.RecordType("MusicalInstrument").add_property(rt_man) + + rec_man = db.Record("Antonio Stradivari").add_parent("Manufacturer") + rec_man2 = db.Record("The other guy").add_parent("Manufacturer") + rec_inst = db.Record("Violin").add_parent("MusicalInstrument").add_property("Manufacturer", rec_man) + rec_inst2 = db.Record("Guitar").add_parent("MusicalInstrument").add_property("Manufacturer", rec_man2) + rec_inst3 = db.Record("Broken Record").add_parent("MusicalInstrument") + + db.Container().extend([rt_man, rt_inst, rec_man, rec_inst, rec_man2, rec_inst2, rec_inst3]).insert() + + assert "Violin" not in [e.name for e in db.execute_query("FIND ANY VERSION OF RECORD MusicalInstrument WITH Manufacturer != 'Antonio Stradivari'")] + assert "Violin" not in [e.name for e in db.execute_query("FIND ANY VERSION OF RECORD MusicalInstrument WITH NOT Manufacturer = 'Antonio Stradivari'")] + assert len(db.execute_query("FIND ANY VERSION OF MusicalInstrument")) == 4 + assert len(db.execute_query("FIND ANY VERSION OF RECORD MusicalInstrument")) == 3 + assert len(db.execute_query("FIND ANY VERSION OF MusicalInstrument WITH Manufacturer")) == 3 + assert len(db.execute_query("FIND ANY VERSION OF RECORD MusicalInstrument WITH Manufacturer")) == 2 + assert rec_inst.id == db.execute_query("FIND ANY VERSION OF MusicalInstrument WITH Manufacturer = 'Antonio Stradivari'", unique=True).id + assert len(db.execute_query("FIND ANY VERSION OF MusicalInstrument WITH NOT Manufacturer = 'Antonio Stradivari'")) == 3 + assert len(db.execute_query("FIND ANY VERSION OF RECORD MusicalInstrument WITH NOT Manufacturer = 'Antonio Stradivari'")) == 2 + assert len(db.execute_query("FIND ANY VERSION OF MusicalInstrument WITH Manufacturer != 'Antonio Stradivari'")) == 1 + assert len(db.execute_query("FIND ANY VERSION OF RECORD MusicalInstrument WITH Manufacturer != 'Antonio Stradivari'")) == 1 + + # now, some updates + rt_man.description = "Updated Description" + rt_inst.description = "Updated Description" + + rec_man.description = "Updated Description" + rec_man2.description = "Updated Description" + rec_inst.description = "Updated Description" + rec_inst2.description = "Updated Description" + rec_inst3.description = "Updated Description" + db.Container().extend([rt_man, rt_inst, rec_man, rec_inst, rec_man2, rec_inst2, rec_inst3]).update() + + assert "Violin" not in [e.name for e in db.execute_query("FIND ANY VERSION OF RECORD MusicalInstrument WITH Manufacturer != 'Antonio Stradivari'")] + assert "Violin" not in [e.name for e in db.execute_query("FIND ANY VERSION OF RECORD MusicalInstrument WITH NOT Manufacturer = 'Antonio Stradivari'")] + assert len(db.execute_query("FIND ANY VERSION OF MusicalInstrument")) == 8 + assert len(db.execute_query("FIND ANY VERSION OF RECORD MusicalInstrument")) == 6 + assert len(db.execute_query("FIND ANY VERSION OF MusicalInstrument WITH Manufacturer")) == 6 + assert len(db.execute_query("FIND ANY VERSION OF RECORD MusicalInstrument WITH Manufacturer")) == 4 + assert len(db.execute_query("FIND ANY VERSION OF MusicalInstrument WITH Manufacturer = 'Antonio Stradivari'")) == 2 + assert len(db.execute_query("FIND ANY VERSION OF MusicalInstrument WITH NOT Manufacturer = 'Antonio Stradivari'")) == 6 + assert len(db.execute_query("FIND ANY VERSION OF RECORD MusicalInstrument WITH NOT Manufacturer = 'Antonio Stradivari'")) == 4 + assert len(db.execute_query("FIND ANY VERSION OF MusicalInstrument WITH Manufacturer != 'Antonio Stradivari'")) == 2 + assert len(db.execute_query("FIND ANY VERSION OF RECORD MusicalInstrument WITH Manufacturer != 'Antonio Stradivari'")) == 2 + + +def test_issue_127(): + """https://gitlab.com/caosdb/caosdb-server/-/issues/127""" + p = db.Property("TestProp", datatype=db.LIST(db.DOUBLE)).insert() + rt = db.RecordType("TestRT").add_property("TestProp", ["NaN"]).insert()