Fix workspace_role workspace relationship

This commit is contained in:
richard-dds 2018-08-20 10:52:04 -04:00
parent a438e409ba
commit 43263f35cc
4 changed files with 45 additions and 16 deletions

View File

@ -0,0 +1,28 @@
"""add workspace_role workspace_id fk
Revision ID: f36f130622b9
Revises: f064247f2988
Create Date: 2018-08-20 10:36:23.920881
"""
from alembic import op
import sqlalchemy as sa
# revision identifiers, used by Alembic.
revision = 'f36f130622b9'
down_revision = 'f064247f2988'
branch_labels = None
depends_on = None
def upgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.create_foreign_key('workspace_role_workspace_id_fk', 'workspace_role', 'workspaces', ['workspace_id'], ['id'])
# ### end Alembic commands ###
def downgrade():
# ### commands auto generated by Alembic - please adjust! ###
op.drop_constraint('workspace_role_workspace_id_fk', 'workspace_role', type_='foreignkey')
# ### end Alembic commands ###

View File

@ -18,7 +18,7 @@ class Workspaces(object):
workspace = Workspace(request=request, name=name)
role = Roles.get("owner")
workspace_role = WorkspaceRole(user_id=request.creator.id, role=role, workspace_id=workspace.id)
workspace_role = WorkspaceRole(user=request.creator, role=role, workspace=workspace)
db.session.add(workspace)
db.session.add(workspace_role)

View File

@ -10,11 +10,14 @@ class WorkspaceRole(Base):
__tablename__ = "workspace_role"
id = Id()
workspace_id = Column(UUID(as_uuid=True), index=True)
workspace_id = Column(UUID(as_uuid=True), ForeignKey("workspaces.id"), index=True)
workspace = relationship("Workspace")
role_id = Column(UUID(as_uuid=True), ForeignKey("roles.id"))
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id"), index=True)
role = relationship("Role")
user_id = Column(UUID(as_uuid=True), ForeignKey("users.id"), index=True)
Index(
"workspace_role_user_workspace",

View File

@ -1,32 +1,30 @@
from uuid import uuid4
from atst.domain.workspace_users import WorkspaceUsers
from atst.domain.users import Users
from tests.factories import WorkspaceFactory
def test_can_create_new_workspace_user():
workspace_id = uuid4()
user = Users.create("developer")
workspace = WorkspaceFactory.create()
new_user = Users.create("developer")
workspace_user_dicts = [{"id": user.id, "workspace_role": "owner"}]
workspace_user_dicts = [{"id": new_user.id, "workspace_role": "owner"}]
workspace_users = WorkspaceUsers.add_many(workspace.id, workspace_user_dicts)
workspace_users = WorkspaceUsers.add_many(workspace_id, workspace_user_dicts)
assert workspace_users[0].user.id == user.id
assert workspace_users[0].user.id == new_user.id
assert workspace_users[0].user.atat_role.name == "developer"
assert workspace_users[0].workspace_role.role.name == "owner"
def test_can_update_existing_workspace_user():
workspace_id = uuid4()
user = Users.create("developer")
workspace = WorkspaceFactory.create()
new_user = Users.create("developer")
WorkspaceUsers.add_many(
workspace_id, [{"id": user.id, "workspace_role": "owner"}]
workspace.id, [{"id": new_user.id, "workspace_role": "owner"}]
)
workspace_users = WorkspaceUsers.add_many(
workspace_id, [{"id": user.id, "workspace_role": "developer"}]
workspace.id, [{"id": new_user.id, "workspace_role": "developer"}]
)
assert workspace_users[0].user.id == user.id
assert workspace_users[0].user.id == new_user.id
assert workspace_users[0].workspace_role.role.name == "developer"