From 67a6fe4556a758c2fe11a912ad9a7e6388b784c6 Mon Sep 17 00:00:00 2001 From: Montana Date: Tue, 20 Nov 2018 10:52:16 -0500 Subject: [PATCH] Make sure the WorkspaceRoleFactory is only flushing to the DB --- atst/domain/workspace_roles.py | 10 +++------- tests/models/test_workspace_role.py | 6 +++++- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/atst/domain/workspace_roles.py b/atst/domain/workspace_roles.py index 60b3f4c4..ff9604fa 100644 --- a/atst/domain/workspace_roles.py +++ b/atst/domain/workspace_roles.py @@ -101,9 +101,8 @@ class WorkspaceRoles(object): return new_workspace_role @classmethod - def update_role(cls, member, role_name): + def update_role(cls, workspace_role, role_name): new_role = Roles.get(role_name) - workspace_role = WorkspaceRoles._get_workspace_role(member.user, member.workspace_id) workspace_role.role = new_role db.session.add(workspace_role) @@ -153,10 +152,7 @@ class WorkspaceRoles(object): @classmethod def enable(cls, workspace_role): - ws_role = WorkspaceRoles._get_workspace_role( - workspace_role.user, workspace_role.workspace_id - ) - ws_role.status = WorkspaceRoleStatus.ACTIVE + workspace_role.status = WorkspaceRoleStatus.ACTIVE - db.session.add(ws_role) + db.session.add(workspace_role) db.session.commit() diff --git a/tests/models/test_workspace_role.py b/tests/models/test_workspace_role.py index 28c1bc22..3be8f7c3 100644 --- a/tests/models/test_workspace_role.py +++ b/tests/models/test_workspace_role.py @@ -38,6 +38,7 @@ def test_has_role_history(session): workspace = Workspaces.create(RequestFactory.create(creator=owner)) role = session.query(Role).filter(Role.name == 'developer').one() + WorkspaceRoleFactory._meta.sqlalchemy_session_persistence = 'flush' workspace_role = WorkspaceRoleFactory.create(workspace=workspace, user=user, role=role) WorkspaceRoles.update_role(workspace_role, "admin") changed_events = ( @@ -53,18 +54,21 @@ def test_has_role_history(session): assert changed_events[0].changed_state["role"][1] == "admin" + def test_has_status_history(session): owner = UserFactory.create() user = UserFactory.create() workspace = Workspaces.create(RequestFactory.create(creator=owner)) + # in order to get the history, we don't want the WorkspaceRoleFactory to commit + WorkspaceRoleFactory._meta.sqlalchemy_session_persistence = 'flush' workspace_role = WorkspaceRoleFactory.create(workspace=workspace, user=user) WorkspaceRoles.enable(workspace_role) changed_events = ( session.query(AuditEvent) .filter( AuditEvent.resource_id == workspace_role.id, - AuditEvent.changed_state != None, + AuditEvent.action == 'update', ) .all() )