From 15b2e3f153d733b5a94fd3bc0fbc9a3f0b6f99b5 Mon Sep 17 00:00:00 2001
From: Florian Spreckelsen <f.spreckelsen@indiscale.com>
Date: Tue, 30 Apr 2024 11:04:07 +0200
Subject: [PATCH] TST: Add test for
 https://gitlab.com/linkahead/linkahead-pylib/-/issues/120

---
 tests/test_issues_pylib.py | 31 +++++++++++++++++++++++++++++++
 1 file changed, 31 insertions(+)

diff --git a/tests/test_issues_pylib.py b/tests/test_issues_pylib.py
index 56009a8..ec9e873 100644
--- a/tests/test_issues_pylib.py
+++ b/tests/test_issues_pylib.py
@@ -90,3 +90,34 @@ def test_gitlab_com_108():
     tests = db.execute_query("FIND ENTITY test*", cache=False)
     tests.delete()
     print("deleted")
+
+
+def test_gitlab_com_120():
+    """Test that an update doesn't add unwanted subproperties.
+
+    See https://gitlab.com/linkahead/linkahead-pylib/-/issues/120.
+
+    """
+    rt1 = db.RecordType(name="TestType1")
+    rt2 = db.RecordType(name="TestType2")
+    prop = db.Property(name="TestProp", datatype=db.TEXT)
+    rt2.add_property(prop)
+    rt1.add_property(rt2)
+
+    # no subproperties in rt1's rt2 property:
+    assert len(rt1.get_property(rt2.name).properties) == 0
+
+    db.Container().extend([rt1, rt2, prop]).insert()
+
+    rt1_retrieved = db.RecordType(id=rt1.id).retrieve()
+    # Also no subproperties after retrieval
+    assert len(rt1_retrieved.get_property(rt2.name).properties) == 0
+
+    new_prop = db.Property(name="TestPropNew", datatype=db.INTEGER).insert()
+    rt1_retrieved.add_property(new_prop)
+    # Still no subproperties
+    assert len(rt1_retrieved.get_property(rt2.name).properties) == 0
+
+    rt1_retrieved.update()
+    # The update and addition of a new property must not change this, either.
+    assert len(rt1_retrieved.get_property(rt2.name).properties) == 0
-- 
GitLab