Skip to content
Snippets Groups Projects
Commit e39e681b authored by Alexander Schlemmer's avatar Alexander Schlemmer
Browse files

FIX: for missing entries in comparison

parent 2fff66ff
Branches
Tags
1 merge request!43F fix comparison
......@@ -558,8 +558,8 @@ def getCommitIn(folder):
return t.readline().strip()
COMPARED = ["name", "role", "datatype", "description", "importance"]
COMPARED = ["name", "role", "datatype", "description", "importance",
"id", "path", "checksum", "size"]
def compare_entities(old_entity: Entity, new_entity: Entity):
"""
......@@ -613,7 +613,7 @@ def compare_entities(old_entity: Entity, new_entity: Entity):
if new_entity_attr_exists:
newdiff[attr] = newattr
# properties
for prop in old_entity.properties:
......@@ -653,7 +653,7 @@ def compare_entities(old_entity: Entity, new_entity: Entity):
olddiff["properties"].pop(prop.name)
else:
raise NotImplementedError()
raise NotImplementedError("Comparison not implemented for multi-properties.")
for prop in new_entity.properties:
if len([0 for p in old_entity.properties if p.name == prop.name]) == 0:
......
......@@ -179,3 +179,55 @@ def test_compare_entities_units():
assert diff_r1["properties"]["test"]["unit"] == "cm"
assert diff_r2["properties"]["test"]["unit"] == "m"
def test_compare_special_properties():
# Test for all known special properties:
SPECIAL_PROPERTIES = ("description", "name", "checksum", "size", "path", "id")
INTS = ("size", "id")
HIDDEN = ("checksum", "size")
for key in SPECIAL_PROPERTIES:
set_key = key
if key in HIDDEN:
set_key = "_" + key
r1 = db.Record()
r2 = db.Record()
if key not in INTS:
setattr(r1, set_key, "bla 1")
setattr(r2, set_key, "bla 1")
else:
setattr(r1, set_key, 1)
setattr(r2, set_key, 1)
diff_r1, diff_r2 = compare_entities(r1, r2)
print(diff_r1)
print(diff_r2)
assert key not in diff_r1
assert key not in diff_r2
assert len(diff_r1["parents"]) == 0
assert len(diff_r2["parents"]) == 0
assert len(diff_r1["properties"]) == 0
assert len(diff_r2["properties"]) == 0
if key not in INTS:
setattr(r2, set_key, "bla test")
else:
setattr(r2, set_key, 2)
diff_r1, diff_r2 = compare_entities(r1, r2)
print(r1)
print(r2)
print(diff_r1)
print(diff_r2)
assert key in diff_r1
assert key in diff_r2
if key not in INTS:
assert diff_r1[key] == "bla 1"
assert diff_r2[key] == "bla test"
else:
assert diff_r1[key] == 1
assert diff_r2[key] == 2
assert len(diff_r1["properties"]) == 0
assert len(diff_r2["properties"]) == 0
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment