Skip to content
Snippets Groups Projects
Commit d9a8ba5d authored by I. Nüske's avatar I. Nüske
Browse files

BUG: The diff returned by compare_entities now uses id instead of name as key...

BUG: The diff returned by compare_entities now uses id instead of name as key if either of the compared properties do not have a name
parent b590249b
Branches
Tags
2 merge requests!175BUG: Request responses without the "Set-Cookie" header no longer overwrite the...,!165Compare_entities diff uses id instead of name where needed
Pipeline #58401 passed
...@@ -377,15 +377,18 @@ def compare_entities(entity0: Optional[Entity] = None, ...@@ -377,15 +377,18 @@ def compare_entities(entity0: Optional[Entity] = None,
# compare properties # compare properties
for prop in entity0.properties: for prop in entity0.properties:
matching = entity1.properties.filter(name=prop.name, pid=prop.id) key = prop.name if prop.name else prop.id # ToDo: Would making id default break anything?
matching = entity1.properties.filter(prop)
if len(matching) == 0: if len(matching) == 0:
# entity1 has prop, entity0 does not # entity1 has prop, entity0 does not
diff[0]["properties"][prop.name] = {} diff[0]["properties"][key] = {}
elif len(matching) == 1: elif len(matching) == 1:
diff[0]["properties"][prop.name] = {} # It's possible that prop has name and id, but match only has id
diff[1]["properties"][prop.name] = {} key = prop.name if prop.name and matching[0].name else prop.id
propdiff = (diff[0]["properties"][prop.name], diff[0]["properties"][key] = {}
diff[1]["properties"][prop.name]) diff[1]["properties"][key] = {}
propdiff = (diff[0]["properties"][key],
diff[1]["properties"][key])
# We should compare the wrapped properties instead of the # We should compare the wrapped properties instead of the
# wrapping entities if possible: # wrapping entities if possible:
...@@ -417,8 +420,8 @@ def compare_entities(entity0: Optional[Entity] = None, ...@@ -417,8 +420,8 @@ def compare_entities(entity0: Optional[Entity] = None,
# in case there is no difference, we remove the dict keys again # in case there is no difference, we remove the dict keys again
if len(propdiff[0]) == 0 and len(propdiff[1]) == 0: if len(propdiff[0]) == 0 and len(propdiff[1]) == 0:
diff[0]["properties"].pop(prop.name) diff[0]["properties"].pop(key)
diff[1]["properties"].pop(prop.name) diff[1]["properties"].pop(key)
else: else:
raise NotImplementedError( raise NotImplementedError(
...@@ -426,11 +429,12 @@ def compare_entities(entity0: Optional[Entity] = None, ...@@ -426,11 +429,12 @@ def compare_entities(entity0: Optional[Entity] = None,
# we have not yet compared properties that do not exist in entity0 # we have not yet compared properties that do not exist in entity0
for prop in entity1.properties: for prop in entity1.properties:
key = prop.name if prop.name else prop.id # ToDo: Would making id default break anything?
# check how often the property appears in entity0 # check how often the property appears in entity0
num_prop_in_ent0 = len(entity0.properties.filter(prop)) num_prop_in_ent0 = len(entity0.properties.filter(prop))
if num_prop_in_ent0 == 0: if num_prop_in_ent0 == 0:
# property is only present in entity0 - add to diff # property is only present in entity0 - add to diff
diff[1]["properties"][prop.name] = {} diff[1]["properties"][key] = {}
if num_prop_in_ent0 > 1: if num_prop_in_ent0 > 1:
# Check whether the property is present multiple times in entity0 # Check whether the property is present multiple times in entity0
# and raise error - result would be incorrect # and raise error - result would be incorrect
...@@ -441,9 +445,10 @@ def compare_entities(entity0: Optional[Entity] = None, ...@@ -441,9 +445,10 @@ def compare_entities(entity0: Optional[Entity] = None,
for index, parents, other_entity in [(0, entity0.parents, entity1), for index, parents, other_entity in [(0, entity0.parents, entity1),
(1, entity1.parents, entity0)]: (1, entity1.parents, entity0)]:
for parent in parents: for parent in parents:
key = parent.name if parent.name else parent.id # ToDo: Would making id default break anything?
matching = other_entity.parents.filter(parent) matching = other_entity.parents.filter(parent)
if len(matching) == 0: if len(matching) == 0:
diff[index]["parents"].append(parent.name) diff[index]["parents"].append(key)
continue continue
return diff return diff
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment