Make sure the WorkspaceRoleFactory is only flushing to the DB

This commit is contained in:
Montana
2018-11-20 10:52:16 -05:00
parent 3b2594283f
commit 67a6fe4556
2 changed files with 8 additions and 8 deletions

View File

@@ -101,9 +101,8 @@ class WorkspaceRoles(object):
return new_workspace_role return new_workspace_role
@classmethod @classmethod
def update_role(cls, member, role_name): def update_role(cls, workspace_role, role_name):
new_role = Roles.get(role_name) new_role = Roles.get(role_name)
workspace_role = WorkspaceRoles._get_workspace_role(member.user, member.workspace_id)
workspace_role.role = new_role workspace_role.role = new_role
db.session.add(workspace_role) db.session.add(workspace_role)
@@ -153,10 +152,7 @@ class WorkspaceRoles(object):
@classmethod @classmethod
def enable(cls, workspace_role): def enable(cls, workspace_role):
ws_role = WorkspaceRoles._get_workspace_role( workspace_role.status = WorkspaceRoleStatus.ACTIVE
workspace_role.user, workspace_role.workspace_id
)
ws_role.status = WorkspaceRoleStatus.ACTIVE
db.session.add(ws_role) db.session.add(workspace_role)
db.session.commit() db.session.commit()

View File

@@ -38,6 +38,7 @@ def test_has_role_history(session):
workspace = Workspaces.create(RequestFactory.create(creator=owner)) workspace = Workspaces.create(RequestFactory.create(creator=owner))
role = session.query(Role).filter(Role.name == 'developer').one() 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) workspace_role = WorkspaceRoleFactory.create(workspace=workspace, user=user, role=role)
WorkspaceRoles.update_role(workspace_role, "admin") WorkspaceRoles.update_role(workspace_role, "admin")
changed_events = ( changed_events = (
@@ -53,18 +54,21 @@ def test_has_role_history(session):
assert changed_events[0].changed_state["role"][1] == "admin" assert changed_events[0].changed_state["role"][1] == "admin"
def test_has_status_history(session): def test_has_status_history(session):
owner = UserFactory.create() owner = UserFactory.create()
user = UserFactory.create() user = UserFactory.create()
workspace = Workspaces.create(RequestFactory.create(creator=owner)) 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) workspace_role = WorkspaceRoleFactory.create(workspace=workspace, user=user)
WorkspaceRoles.enable(workspace_role) WorkspaceRoles.enable(workspace_role)
changed_events = ( changed_events = (
session.query(AuditEvent) session.query(AuditEvent)
.filter( .filter(
AuditEvent.resource_id == workspace_role.id, AuditEvent.resource_id == workspace_role.id,
AuditEvent.changed_state != None, AuditEvent.action == 'update',
) )
.all() .all()
) )