diff --git a/src/caosdb/apiutils.py b/src/caosdb/apiutils.py index e6b4dc4ef43a8907f0d04acc3f1f46eb25496a2e..21a8cc7ca700a8b119786dbef082db286ead5d57 100644 --- a/src/caosdb/apiutils.py +++ b/src/caosdb/apiutils.py @@ -30,15 +30,15 @@ Some simplified functions for generation of records etc. import sys import tempfile -from collections.abc import Iterable import warnings +from collections.abc import Iterable from subprocess import call from caosdb.common.datatype import (BOOLEAN, DATETIME, DOUBLE, FILE, INTEGER, REFERENCE, TEXT, is_reference) from caosdb.common.models import (Container, Entity, File, Property, Query, - Record, RecordType, get_config, - execute_query) + Record, RecordType, execute_query, + get_config) def new_record(record_type, name=None, description=None, @@ -632,16 +632,12 @@ def compare_entities(old_entity: Entity, new_entity: Entity): newdiff["properties"][prop.name]["importance"] = \ new_entity.get_importance(prop.name) - if ((prop.datatype is not None and - matching[0].datatype is not None) and - (prop.datatype != matching[0].datatype)): + if (prop.datatype != matching[0].datatype): olddiff["properties"][prop.name]["datatype"] = prop.datatype newdiff["properties"][prop.name]["datatype"] = \ matching[0].datatype - if ((prop.value is not None and - matching[0].value is not None) and - (prop.value != matching[0].value)): + if (prop.value != matching[0].value): olddiff["properties"][prop.name]["value"] = prop.value newdiff["properties"][prop.name]["value"] = \ matching[0].value @@ -723,6 +719,7 @@ def apply_to_ids(entities, func): entities : list of Entity func : function with one parameter. """ + for entity in entities: _apply_to_ids_of_entity(entity, func) diff --git a/unittests/test_apiutils.py b/unittests/test_apiutils.py index 78ad9712ca9e1196e8bce6acd6d5ec219f9ef0b8..717595d049a5a7c27b644dc6079d02efa1cefb71 100644 --- a/unittests/test_apiutils.py +++ b/unittests/test_apiutils.py @@ -26,11 +26,14 @@ # Test apiutils # A. Schlemmer, 02/2018 -import caosdb as db import pickle import tempfile -from caosdb.apiutils import apply_to_ids, create_id_query, resolve_reference, compare_entities + +import caosdb as db import caosdb.apiutils +from caosdb.apiutils import (apply_to_ids, compare_entities, create_id_query, + resolve_reference) + from .test_property import testrecord @@ -67,7 +70,8 @@ def test_apply_to_ids(): def test_id_query(): 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' + assert create_id_query(ids) == 'FIND ENTITY WITH ID=1 OR ID=2 OR ID=3 OR '\ + 'ID=4 OR ID=5' def test_resolve_reference(): @@ -77,8 +81,10 @@ def test_resolve_reference(): 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)]) + 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) @@ -86,6 +92,7 @@ def test_resolve_reference(): assert isinstance(prop.value, db.Entity) prop_list_ids = [] + for i in prop_list.value: prop_list_ids.append(i.id) assert isinstance(i, db.Entity) @@ -114,6 +121,8 @@ def test_compare_entities(): r2.add_property("test", value=2) r1.add_property("tests", value=3) r2.add_property("tests", value=45) + r1.add_property("tester", value=3) + r2.add_property("tester", ) r1.add_property("tests_234234", value=45) r2.add_property("tests_TT", value=45) @@ -121,8 +130,8 @@ def test_compare_entities(): assert len(diff_r1["parents"]) == 1 assert len(diff_r2["parents"]) == 0 - assert len(diff_r1["properties"]) == 2 - assert len(diff_r2["properties"]) == 2 + assert len(diff_r1["properties"]) == 3 + assert len(diff_r2["properties"]) == 3 assert "test" not in diff_r1["properties"] assert "test" not in diff_r2["properties"] @@ -130,5 +139,8 @@ def test_compare_entities(): assert "tests" in diff_r1["properties"] assert "tests" in diff_r2["properties"] + assert "tester" in diff_r1["properties"] + assert "tester" in diff_r2["properties"] + assert "tests_234234" in diff_r1["properties"] assert "tests_TT" in diff_r2["properties"] diff --git a/unittests/test_property.py b/unittests/test_property.py index 834b1be582c58c60f70331de9cb0d0d6414fd6c9..7c756117765e510587c00d818e39fb3945d44c53 100644 --- a/unittests/test_property.py +++ b/unittests/test_property.py @@ -24,15 +24,18 @@ # ** end header # """Tests for the Property class.""" +import os + import caosdb as db from caosdb import Entity, Property, Record # pylint: disable=missing-docstring from lxml import etree parser = etree.XMLParser(remove_comments=True) -testrecord = Record._from_xml(Record(), - etree.parse("unittests/test_record.xml", - parser).getroot()) +testrecord = Record._from_xml( + Record(), + etree.parse(os.path.join(os.path.dirname(__file__), "test_record.xml"), + parser).getroot()) def test_is_entity(): @@ -48,7 +51,8 @@ def test_instance_variables(): def test_null_empty_text_value_1(): - assert testrecord.get_property("LISTofTEXT").value == ["One", "Two", "Three", None, ""] + assert testrecord.get_property("LISTofTEXT").value == ["One", "Two", + "Three", None, ""] def test_null_empty_text_value_2():