Skip to content
Snippets Groups Projects
Commit ca71283a authored by Henrik tom Wörden's avatar Henrik tom Wörden
Browse files

FIX: compare condition

parent 2af1695f
No related branches found
No related tags found
2 merge requests!36RELEASE: 0.6.1,!35F fix compare entities branch2
Pipeline #16451 passed
......@@ -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)
......
......@@ -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"]
......@@ -24,14 +24,17 @@
# ** 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",
testrecord = Record._from_xml(
Record(),
etree.parse(os.path.join(os.path.dirname(__file__), "test_record.xml"),
parser).getroot())
......@@ -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():
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment