From 85307e27e41651de3bbd06800b054980a0a965f3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Henrik=20tom=20W=C3=B6rden?= <h.tomwoerden@indiscale.com>
Date: Thu, 15 Feb 2024 14:36:37 +0100
Subject: [PATCH] FIX: broken test related to importance of property

---
 src/linkahead/apiutils.py  |  6 ++++--
 unittests/test_apiutils.py | 41 ++++++++++++++++++++++++++++++++++++--
 2 files changed, 43 insertions(+), 4 deletions(-)

diff --git a/src/linkahead/apiutils.py b/src/linkahead/apiutils.py
index 558266f9..e2ed0fac 100644
--- a/src/linkahead/apiutils.py
+++ b/src/linkahead/apiutils.py
@@ -215,8 +215,9 @@ def compare_entities(old_entity: Entity, new_entity: Entity, compare_referenced_
     if old_entity is new_entity:
         return (olddiff, newdiff)
 
-    if (isinstance(old_entity, Property) or isinstance(old_entity, Property)):
-        raise NotImplementedError("Comparing Properties is currently not supported.")
+    if type(old_entity) is not type(new_entity):
+        raise ValueError(
+            "Comparison of different Entity types is not supported.")
 
     for attr in SPECIAL_ATTRIBUTES:
         try:
@@ -249,6 +250,7 @@ def compare_entities(old_entity: Entity, new_entity: Entity, compare_referenced_
                 newdiff[attr] = newattr
 
     # properties
+
     for prop in old_entity.properties:
         matching = [p for p in new_entity.properties if p.name == prop.name]
 
diff --git a/unittests/test_apiutils.py b/unittests/test_apiutils.py
index ea13ba44..4705f19a 100644
--- a/unittests/test_apiutils.py
+++ b/unittests/test_apiutils.py
@@ -103,6 +103,8 @@ def test_compare_entities():
     r1.add_parent("lopp")
     r1.add_property("test", value=2)
     r2.add_property("test", value=2)
+    r1.add_property("testi", importance=linkahead.SUGGESTED, value=2)
+    r2.add_property("testi", importance=linkahead.RECOMMENDED, value=2)
     r1.add_property("tests", value=3)
     r2.add_property("tests", value=45)
     r1.add_property("tester", value=3)
@@ -114,8 +116,8 @@ def test_compare_entities():
 
     assert len(diff_r1["parents"]) == 1
     assert len(diff_r2["parents"]) == 0
-    assert len(diff_r1["properties"]) == 3
-    assert len(diff_r2["properties"]) == 3
+    assert len(diff_r1["properties"]) == 4
+    assert len(diff_r2["properties"]) == 4
 
     assert "test" not in diff_r1["properties"]
     assert "test" not in diff_r2["properties"]
@@ -123,6 +125,9 @@ def test_compare_entities():
     assert "tests" in diff_r1["properties"]
     assert "tests" in diff_r2["properties"]
 
+    assert "testi" in diff_r1["properties"]
+    assert "testi" in diff_r2["properties"]
+
     assert "tester" in diff_r1["properties"]
     assert "tester" in diff_r2["properties"]
 
@@ -211,6 +216,38 @@ def test_compare_special_properties():
         assert len(diff_r2["properties"]) == 0
 
 
+def test_compare_properties():
+    p1 = db.Property()
+    p2 = db.Property()
+
+    diff_r1, diff_r2 = compare_entities(p1, p2)
+    assert len(diff_r1["parents"]) == 0
+    assert len(diff_r2["parents"]) == 0
+    assert len(diff_r1["properties"]) == 0
+    assert len(diff_r2["properties"]) == 0
+
+    diff_r1, diff_r2 = compare_entities(p1, p2)
+    assert len(diff_r1["parents"]) == 0
+    assert len(diff_r2["parents"]) == 0
+    assert len(diff_r1["properties"]) == 0
+    assert len(diff_r2["properties"]) == 0
+
+    p1.value = 42
+    p2.value = 4
+
+    diff_r1, diff_r2 = compare_entities(p1, p2)
+    assert len(diff_r1["parents"]) == 0
+    assert len(diff_r2["parents"]) == 0
+    assert len(diff_r1["properties"]) == 0
+    assert len(diff_r2["properties"]) == 0
+
+    # Comparing values currently does not seem to be implemented:
+    assert "value" in diff_r1
+    assert diff_r1["value"] == 42
+    assert "value" in diff_r2
+    assert diff_r2["value"] == 4
+
+
 def test_copy_entities():
     r = db.Record(name="A")
     r.add_parent(name="B")
-- 
GitLab