From 089b8804e5c3a82936771e851c5c007985dc3e1f Mon Sep 17 00:00:00 2001 From: Timm Fitschen <t.fitschen@indiscale.com> Date: Thu, 26 Nov 2020 04:41:04 +0100 Subject: [PATCH] WIP: entity state --- tests/test_state.py | 43 +++++++++++++++++++++++++++++++++++++++---- 1 file changed, 39 insertions(+), 4 deletions(-) diff --git a/tests/test_state.py b/tests/test_state.py index 780f45e..2e520fb 100644 --- a/tests/test_state.py +++ b/tests/test_state.py @@ -746,15 +746,14 @@ def test_unauthorized_initial(): # it is not allowed to "steal" the entity with the state feature rec.update(sync = False) assert "You are not allowed to do this." in str(exc.value) - rec_retrieve = db.Record(id=rec.id).retrieve(flags={"ACL": None}) + rec_retrieve = db.Record(id=rec.id).retrieve() assert rec_retrieve.state is None # we need to give ownership to "team-leader" switch_to_admin_user() - rec_update = rec_retrieve - print(rec_update.acl) + rec_update = db.Record(id=rec.id).retrieve(flags={"ACL": None}) rec_update.acl.grant(role="team-leader", permission="EDIT:ACL") - print(rec_update.acl) + rec_update.acl.grant(role="team-leader", permission="RETRIEVE:ACL") rec_update.update_acl() switch_to_test_user("team-leader") @@ -763,3 +762,39 @@ def test_unauthorized_initial(): rec_retrieve = db.Record(id=rec.id).retrieve() assert rec_retrieve.state == db.State(model="Model1", name="State1") + +@pytest.mark.xfail(reason="This is a very special corner case bug with low severity") +def test_transitions_included_after_empty_update(): + rec = db.Record() + rec.description = "old description" + rec.add_parent("TestRT") + rec.state = db.State(model="Model1", name="State1") + rec_insert = rec.insert(sync=False) + + assert rec_insert.state.transitions is not None + assert rec_insert.state.transitions == {db.Transition(name="Transition1", + from_state="State1", + to_state="State2")} + + rec_insert.description = "new_description" + rec_insert.state = db.State(model="Model1", name="State2") + rec_update = rec_insert.update(sync=False) + assert rec_update.state.transitions is not None + assert rec_update.state.transitions == {db.Transition(name="Transition2", + from_state="State2", + to_state="State3"), + db.Transition(name="Transition4", + from_state="State2", + to_state="State2")} + + + rec_update_2 = rec_update.update(sync=False) + + # this fails + assert rec_update_2.state.transitions is not None + assert rec_update_2.state.transitions == {db.Transition(name="Transition1", + from_state="State1", + to_state="State2"), + db.Transition(name="Transition4", + from_state="State2", + to_state="State2")} -- GitLab