diff --git a/tests/test_issues_server.py b/tests/test_issues_server.py index ba2f31a3f5c2885c5eee10cedfb11be982d9ad50..e9a93685cfd222000a50b399d44ec32692137e4f 100644 --- a/tests/test_issues_server.py +++ b/tests/test_issues_server.py @@ -603,13 +603,104 @@ def test_issue_132(): def test_issue_217(): """Server gets list property datatype wrong if description is updated.""" + # @review Florian Spreckelsen 2022-03-15 rt = db.RecordType(name="TestRT").insert() # 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() + datatype=db.LIST( + db.INTEGER), + 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() - 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] + # This line fails in the bug report with invalid XML. + r.retrieve() + 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.""" + # @review Florian Spreckelsen 2022-03-15 + + 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.""" + # @review Florian Spreckelsen 2022-03-15 + + 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