basic workspace model and repository implementation

This commit is contained in:
dandds
2018-08-16 09:51:35 -04:00
committed by richard-dds
parent e1ffd8fc56
commit ef153f5226
6 changed files with 139 additions and 11 deletions

View File

@@ -0,0 +1,36 @@
import pytest
from uuid import uuid4
from atst.domain.exceptions import NotFoundError
from atst.domain.workspaces import Workspaces
from tests.factories import WorkspaceFactory, RequestFactory, TaskOrderFactory
def test_can_create_workspace():
request = RequestFactory.create()
to = TaskOrderFactory.create()
workspace = Workspaces.create(request, to)
assert workspace.request == request
assert workspace.task_order == to
assert workspace.name == request.id
workspace = Workspaces.create(request, to, name="frugal-whale")
assert workspace.name == "frugal-whale"
def test_can_get_workspace():
workspace = WorkspaceFactory.create()
found = Workspaces.get(workspace.id)
assert workspace == found
def test_nonexistent_workspace_raises():
with pytest.raises(NotFoundError):
Workspaces.get(uuid4())
def test_can_get_workspace_by_request():
workspace = WorkspaceFactory.create()
found = Workspaces.get_by_request(workspace.request)
assert workspace == found

View File

@@ -10,6 +10,7 @@ from atst.models.pe_number import PENumber
from atst.models.task_order import TaskOrder
from atst.models.user import User
from atst.models.role import Role
from atst.models.workspace import Workspace
from atst.models.request_status_event import RequestStatusEvent
from atst.domain.roles import Roles
@@ -102,3 +103,13 @@ class PENumberFactory(factory.alchemy.SQLAlchemyModelFactory):
class TaskOrderFactory(factory.alchemy.SQLAlchemyModelFactory):
class Meta:
model = TaskOrder
class WorkspaceFactory(factory.alchemy.SQLAlchemyModelFactory):
class Meta:
model = Workspace
request = factory.SubFactory(RequestFactory)
task_order = factory.SubFactory(TaskOrderFactory)
# name it the same as the request ID by default
name = factory.LazyAttribute(lambda w: w.request.id)