diff --git a/unittests/test_apiutils.py b/unittests/test_apiutils.py index 045c140fa7bec4b94aa06727a7eebfd8ce500c8a..5fcc27dfa5ec31247f5788a7bb91570d29f7311f 100644 --- a/unittests/test_apiutils.py +++ b/unittests/test_apiutils.py @@ -29,7 +29,8 @@ import caosdb as db import pickle import tempfile -from caosdb.apiutils import apply_to_ids, create_id_query, retrieve_entity_with_id +from caosdb.apiutils import apply_to_ids, create_id_query, resolve_reference +import caosdb.apiutils from .test_property import testrecord @@ -63,17 +64,42 @@ def test_apply_to_ids(): assert rec.properties[0].id == -23345 assert rec.id == -23 + def test_id_query(): - ids = [1,2,3,4,5] + ids = [1, 2, 3, 4, 5] assert create_id_query(ids) == 'FIND ENTITY WITH ID=1 OR ID=2 OR ID=3 OR ID=4 OR ID=5' -original_retrieve_entity_with_id = retrieve_entity_with_id -retrieve_entity_with_id = lambda eid: db.Record(id=eid) + +original_retrieve_entity_with_id = caosdb.apiutils.retrieve_entity_with_id + + +def dummy_entity(eid): + return db.Record(id=eid) + + +caosdb.apiutils.retrieve_entity_with_id = dummy_entity + def test_resolve_reference(): - prop = db.Property(id = 1, datatype=db.REFERENCE, value=100) - prop_list = [db.Property(id = 2, datatype=db.REFERENCE, value=200), - db.Property(id = 3, datatype=db.REFERENCE, value=300), - db.Property(id = 4, datatype=db.Integer, value=400) - ] - \ No newline at end of file + prop = db.Property(id=1, datatype=db.REFERENCE, value=100) + prop.is_valid = lambda: True + items = [200, 300, 400] + prop_list = db.Property(datatype=db.LIST(db.REFERENCE), value=items) + prop_list2 = db.Property(datatype=db.LIST(db.REFERENCE), value=db.Record(id=500)) + resolve_reference(prop) + resolve_reference(prop_list) + resolve_reference(prop_list2) + assert prop.value.id == db.Record(id=100).id + + prop_list_ids = [] + for i in prop_list.value: + prop_list_ids.append(i.id) + assert prop_list_ids == items + + for i in prop_list2.value: + assert i.id == 500 + + assert resolve_reference(db.Property(id=5000, datatype=db.INTEGER, value=2)) == None + + # restore retrive_entity_with_id + caosdb.apiutils.retrieve_entity_with_id = original_retrieve_entity_with_id