From 604fb21076f2c04a873c81c85bec4ab9f08fa9f7 Mon Sep 17 00:00:00 2001
From: Timm Fitschen <t.fitschen@indiscale.com>
Date: Fri, 11 Mar 2022 15:59:24 +0100
Subject: [PATCH] TST: add tests for server#217 and server#221

---
 tests/test_issues_server.py | 88 ++++++++++++++++++++++++++++++++++++-
 1 file changed, 87 insertions(+), 1 deletion(-)

diff --git a/tests/test_issues_server.py b/tests/test_issues_server.py
index ba2f31a..551bf88 100644
--- a/tests/test_issues_server.py
+++ b/tests/test_issues_server.py
@@ -608,8 +608,94 @@ def test_issue_217():
     # prop = db.Property(name="LP", datatype=db.LIST("TestRT")).insert()
     r = db.Record().add_parent(id=rt.id).add_property(name=rt.name,
                                                       datatype=db.LIST(db.INTEGER),
-                                                      value=[1, 2]).insert()
+                                                      value=[10001, 10002])
+    assert r.get_property(rt.name).datatype == db.LIST(db.INTEGER)
+    assert r.get_property(rt.name).value == [10001, 10002]
+    r.insert()
+    assert r.get_property(rt.name).datatype == db.LIST(db.INTEGER)
+    assert r.get_property(rt.name).value == [10001, 10002]
     r.retrieve()
+    assert r.get_property(rt.name).datatype == db.LIST(db.INTEGER)
+    assert r.get_property(rt.name).value == [10001, 10002]
+    r.retrieve(flags={"cache": "false"})
+    assert r.get_property(rt.name).datatype == db.LIST(db.INTEGER)
+    assert r.get_property(rt.name).value == [10001, 10002]
     r.description = "Changed description"
     r.update()
+    assert r.get_property(rt.name).datatype == db.LIST(db.INTEGER)
+    assert r.get_property(rt.name).value == [10001, 10002]
     r.retrieve()                # This line fails in the bug report with invalid XML.
+    assert r.get_property(rt.name).datatype == db.LIST(db.INTEGER)
+    assert r.get_property(rt.name).value == [10001, 10002]
+
+
+def test_issue_217_2():
+    """Server gets overridden name of property wrong when the description of record is being updated."""
+
+    rt = db.RecordType(name="TestRT").insert()
+    # prop = db.Property(name="LP", datatype=db.LIST("TestRT")).insert()
+    overridden_name="TestRT-overridden"
+    r = db.Record().add_parent(id=rt.id).add_property(name=overridden_name,
+                                                      id=rt.id)
+    assert r.get_property(overridden_name) is not None
+    assert r.get_property(overridden_name).id == rt.id
+    r.insert()
+    assert r.get_property(overridden_name) is not None
+    assert r.get_property(overridden_name).id == rt.id
+    r.retrieve()
+    assert r.get_property(overridden_name) is not None
+    assert r.get_property(overridden_name).id == rt.id
+    r.retrieve(flags={"cache": "false"})
+    assert r.get_property(overridden_name) is not None
+    assert r.get_property(overridden_name).id == rt.id
+    r.description = "Changed description" # change description of the record
+    r.update()
+    assert r.get_property(overridden_name) is not None
+    assert r.get_property(overridden_name).id == rt.id
+    r.retrieve()
+    assert r.get_property(overridden_name) is not None
+    assert r.get_property(overridden_name).id == rt.id
+
+
+def test_issue_217_3():
+    """Server gets overridden description of property wrong when the description of record is being updated."""
+
+    rt = db.RecordType(name="TestRT", description="Desc").insert()
+    # prop = db.Property(name="LP", datatype=db.LIST("TestRT")).insert()
+    r = db.Record().add_parent(id=rt.id).add_property(description="Desc-overridden",
+                                                      id=rt.id)
+    r.insert()
+    assert r.get_property(rt.name).id == rt.id
+    assert r.get_property(rt.name).description == "Desc-overridden"
+    r.retrieve()
+    assert r.get_property(rt.name).id == rt.id
+    assert r.get_property(rt.name).description == "Desc-overridden"
+    r.retrieve(flags={"cache": "false"})
+    assert r.get_property(rt.name).id == rt.id
+    assert r.get_property(rt.name).description == "Desc-overridden"
+    r.description = "Changed description" # change description of the record
+    r.update()
+    assert r.get_property(rt.name).id == rt.id
+    assert r.get_property(rt.name).description == "Desc-overridden"
+    r.retrieve()
+    assert r.get_property(rt.name).id == rt.id
+    assert r.get_property(rt.name).description == "Desc-overridden"
+
+
+def test_issue_221():
+    """Unknown error during update of property leaving out datatype"""
+
+    rt = db.RecordType("A")
+    r = db.Record()
+    r.add_parent(rt)
+    p = db.Property(name="B", datatype=db.INTEGER)
+    r.add_property(name="B", value=5)
+    db.Container().extend([rt, r, p]).insert()
+
+    r2 = db.Record(id=r.id).retrieve()
+    r2.remove_property("B")
+    r2.add_property(p, value=7)
+    r2.update()
+    assert r2.get_property("B").value == 7
+    assert r2.get_property("B").datatype == db.INTEGER
+    assert r2.get_property("B").id == p.id
-- 
GitLab