requests domain can approve a request for financial verification

This commit is contained in:
dandds 2018-09-07 10:28:03 -04:00
parent 8e000e3e77
commit 14d03e7e66
3 changed files with 46 additions and 9 deletions

View File

@ -12,6 +12,7 @@ from atst.domain.workspaces import Workspaces
from atst.models.request import Request
from atst.models.request_revision import RequestRevision
from atst.models.request_status_event import RequestStatusEvent, RequestStatus
from atst.models.request_review import RequestReview
from atst.utils import deep_merge
from .exceptions import NotFoundError, UnauthorizedError
@ -260,3 +261,14 @@ WHERE requests_with_status.status = :status
db.session.commit()
return request
@classmethod
def approve_for_financial_verification(cls, request, review_data):
Requests.set_status(request, RequestStatus.PENDING_FINANCIAL_VERIFICATION)
request.latest_status.review = RequestReview(**review_data)
db.session.add(request)
db.session.commit()
return request

View File

@ -13,6 +13,7 @@ from tests.factories import (
RequestStatusEventFactory,
TaskOrderFactory,
RequestRevisionFactory,
RequestReviewFactory,
)
@ -178,3 +179,13 @@ def test_set_status_sets_revision():
request = RequestFactory.create()
Requests.set_status(request, RequestStatus.APPROVED)
assert request.latest_revision == request.status_events[-1].revision
def test_approve_for_financial_verification():
request = RequestFactory.create()
review_data = RequestReviewFactory.dictionary()
Requests.approve_for_financial_verification(request, review_data)
assert request.status == RequestStatus.PENDING_FINANCIAL_VERIFICATION
current_review = request.latest_status.review
assert current_review.fname_mao == review_data["fname_mao"]

View File

@ -17,14 +17,20 @@ from atst.models.workspace import Workspace
from atst.domain.roles import Roles
class RoleFactory(factory.alchemy.SQLAlchemyModelFactory):
class Base(factory.alchemy.SQLAlchemyModelFactory):
@classmethod
def dictionary(cls, **attrs):
return factory.build(dict, FACTORY_CLASS=cls, **attrs)
class RoleFactory(Base):
class Meta:
model = Role
permissions = []
class UserFactory(factory.alchemy.SQLAlchemyModelFactory):
class UserFactory(Base):
class Meta:
model = User
@ -41,7 +47,7 @@ class UserFactory(factory.alchemy.SQLAlchemyModelFactory):
return cls.create(atat_role=role, **kwargs)
class RequestStatusEventFactory(factory.alchemy.SQLAlchemyModelFactory):
class RequestStatusEventFactory(Base):
class Meta:
model = RequestStatusEvent
@ -49,19 +55,27 @@ class RequestStatusEventFactory(factory.alchemy.SQLAlchemyModelFactory):
sequence = 1
class RequestRevisionFactory(factory.alchemy.SQLAlchemyModelFactory):
class RequestRevisionFactory(Base):
class Meta:
model = RequestRevision
id = factory.Sequence(lambda x: uuid4())
class RequestReviewFactory(factory.alchemy.SQLAlchemyModelFactory):
class RequestReviewFactory(Base):
class Meta:
model = RequestReview
comments = factory.Faker("sentence")
fname_mao = factory.Faker("first_name")
lname_mao = factory.Faker("last_name")
email_mao = factory.Faker("email")
phone_mao = factory.Faker("phone_number")
fname_ccpo = factory.Faker("first_name")
lname_ccpo = factory.Faker("last_name")
class RequestFactory(factory.alchemy.SQLAlchemyModelFactory):
class RequestFactory(Base):
class Meta:
model = Request
@ -133,17 +147,17 @@ class RequestFactory(factory.alchemy.SQLAlchemyModelFactory):
return RequestRevisionFactory.build(**data)
class PENumberFactory(factory.alchemy.SQLAlchemyModelFactory):
class PENumberFactory(Base):
class Meta:
model = PENumber
class TaskOrderFactory(factory.alchemy.SQLAlchemyModelFactory):
class TaskOrderFactory(Base):
class Meta:
model = TaskOrder
class WorkspaceFactory(factory.alchemy.SQLAlchemyModelFactory):
class WorkspaceFactory(Base):
class Meta:
model = Workspace