From 68a32e0a082c21b966b2b86f600043c9addac2fe Mon Sep 17 00:00:00 2001 From: dandds Date: Tue, 11 Sep 2018 11:20:27 -0400 Subject: [PATCH] requests domain method for advancing a request to the next stage --- atst/domain/requests.py | 7 +++++-- atst/routes/requests/approval.py | 4 +--- tests/domain/test_requests.py | 23 +++++++++++++++++++---- tests/routes/test_request_approval.py | 6 ++++++ 4 files changed, 31 insertions(+), 9 deletions(-) diff --git a/atst/domain/requests.py b/atst/domain/requests.py index f87a8382..57a636a4 100644 --- a/atst/domain/requests.py +++ b/atst/domain/requests.py @@ -281,8 +281,11 @@ WHERE requests_with_status.status = :status return request @classmethod - def accept_for_financial_verification(cls, user, request, review_data): - Requests.set_status(request, RequestStatus.PENDING_FINANCIAL_VERIFICATION) + def advance(cls, user, request, review_data): + if request.status == RequestStatus.PENDING_CCPO_ACCEPTANCE: + Requests.set_status(request, RequestStatus.PENDING_FINANCIAL_VERIFICATION) + elif request.status == RequestStatus.PENDING_CCPO_APPROVAL: + Requests.approve_and_create_workspace(request) return Requests._add_review(user, request, review_data) diff --git a/atst/routes/requests/approval.py b/atst/routes/requests/approval.py index ca02933f..1555c389 100644 --- a/atst/routes/requests/approval.py +++ b/atst/routes/requests/approval.py @@ -60,9 +60,7 @@ def submit_approval(request_id): form = CCPOReviewForm(http_request.form) if form.validate(): if http_request.form.get("approved"): - Requests.accept_for_financial_verification( - g.current_user, request, form.data - ) + Requests.advance(g.current_user, request, form.data) else: Requests.request_changes(g.current_user, request, form.data) diff --git a/tests/domain/test_requests.py b/tests/domain/test_requests.py index 34045076..d49379b5 100644 --- a/tests/domain/test_requests.py +++ b/tests/domain/test_requests.py @@ -181,12 +181,27 @@ def test_set_status_sets_revision(): assert request.latest_revision == request.status_events[-1].revision -def test_accept_for_financial_verification(): +def test_advance_to_financial_verification(): request = RequestFactory.create() - review_data = RequestReviewFactory.dictionary() - Requests.accept_for_financial_verification( - UserFactory.create(), request, review_data + RequestStatusEventFactory.create( + request=request, + revision=request.latest_revision, + new_status=RequestStatus.PENDING_CCPO_ACCEPTANCE, ) + review_data = RequestReviewFactory.dictionary() + Requests.advance(UserFactory.create(), 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"] + + +def test_advance_to_approval(): + request = RequestFactory.create() + RequestStatusEventFactory.create( + request=request, + revision=request.latest_revision, + new_status=RequestStatus.PENDING_CCPO_APPROVAL, + ) + review_data = RequestReviewFactory.dictionary() + Requests.advance(UserFactory.create(), request, review_data) + assert request.status == RequestStatus.APPROVED diff --git a/tests/routes/test_request_approval.py b/tests/routes/test_request_approval.py index ced46240..df3b698d 100644 --- a/tests/routes/test_request_approval.py +++ b/tests/routes/test_request_approval.py @@ -10,6 +10,7 @@ from tests.factories import ( TaskOrderFactory, UserFactory, RequestReviewFactory, + RequestStatusEventFactory, ) @@ -71,6 +72,11 @@ def test_can_submit_request_approval(client, user_session): user = UserFactory.from_atat_role("ccpo") user_session(user) request = RequestFactory.create() + RequestStatusEventFactory.create( + request=request, + revision=request.latest_revision, + new_status=RequestStatus.PENDING_CCPO_ACCEPTANCE, + ) review_data = RequestReviewFactory.dictionary() review_data["approved"] = True response = client.post(