requests domain can approve a request for financial verification
This commit is contained in:
parent
8e000e3e77
commit
14d03e7e66
@ -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
|
||||
|
@ -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"]
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user