Merge pull request #299 from dod-ccpo/details-view-tests

refactor request details rendering logic
This commit is contained in:
dandds 2018-09-18 12:00:39 -04:00 committed by GitHub
commit 09a18220e6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 49 additions and 14 deletions

View File

@ -204,3 +204,11 @@ class Request(Base):
review = self.latest_status.review review = self.latest_status.review
if review: if review:
return review.comment return review.comment
@property
def has_financial_data(self):
return (
self.is_pending_ccpo_approval
or self.is_pending_financial_verification_changes
or self.is_approved
) and self.task_order

View File

@ -20,9 +20,7 @@ def map_ccpo_authorizing(user):
def render_approval(request, form=None): def render_approval(request, form=None):
data = request.body data = request.body
pending_final_approval = request.is_pending_ccpo_approval if request.has_financial_data:
pending_review = request.is_pending_ccpo_acceptance or pending_final_approval
if pending_final_approval and request.task_order:
data["task_order"] = request.task_order.to_dictionary() data["task_order"] = request.task_order.to_dictionary()
if not form: if not form:
@ -35,8 +33,6 @@ def render_approval(request, form=None):
reviews=list(reversed(request.reviews)), reviews=list(reversed(request.reviews)),
request=request, request=request,
current_status=request.status.value, current_status=request.status.value,
pending_review=pending_review,
financial_review=pending_final_approval,
f=form or CCPOReviewForm(), f=form or CCPOReviewForm(),
) )

View File

@ -128,24 +128,18 @@ def requests_submit(request_id=None):
@requests_bp.route("/requests/details/<string:request_id>", methods=["GET"]) @requests_bp.route("/requests/details/<string:request_id>", methods=["GET"])
def view_request_details(request_id=None): def view_request_details(request_id=None):
request = Requests.get(g.current_user, request_id) request = Requests.get(g.current_user, request_id)
financial_review = (
request.is_pending_ccpo_approval
or request.is_approved
or request.is_pending_financial_verification_changes
)
requires_fv_action = ( requires_fv_action = (
request.is_pending_financial_verification request.is_pending_financial_verification
or request.is_pending_financial_verification_changes or request.is_pending_financial_verification_changes
) )
data = request.body data = request.body
if financial_review and request.task_order: if request.has_financial_data:
data["task_order"] = request.task_order.to_dictionary() data["task_order"] = request.task_order.to_dictionary()
return render_template( return render_template(
"requests/details.html", "requests/details.html",
data=data, data=data,
request=request, request=request,
financial_review=financial_review,
requires_fv_action=requires_fv_action, requires_fv_action=requires_fv_action,
) )

View File

@ -132,7 +132,7 @@
{{ DefinitionReviewField("DoD ID", "primary_poc", "dodid_poc") }} {{ DefinitionReviewField("DoD ID", "primary_poc", "dodid_poc") }}
</dl> </dl>
{% if financial_review %} {% if request.has_financial_data %}
<hr> <hr>
<h2> <h2>
Financial Verification Financial Verification

View File

@ -32,7 +32,7 @@
</section> </section>
{% if pending_review %} {% if request.is_pending_ccpo_action %}
<section class='request-approval__review'> <section class='request-approval__review'>
<form method="POST" action="{{ url_for("requests.submit_approval", request_id=request.id) }}" autocomplete="off"> <form method="POST" action="{{ url_for("requests.submit_approval", request_id=request.id) }}" autocomplete="off">
{{ f.csrf_token }} {{ f.csrf_token }}

View File

@ -0,0 +1,37 @@
import re
from flask import url_for
from atst.models.request_status_event import RequestStatus
from tests.factories import RequestFactory, TaskOrderFactory, UserFactory
def test_can_show_financial_data(client, user_session):
user = UserFactory.create()
user_session(user)
task_order = TaskOrderFactory.create()
request = RequestFactory.create_with_status(
status=RequestStatus.PENDING_CCPO_APPROVAL, task_order=task_order, creator=user
)
response = client.get(
url_for("requests.view_request_details", request_id=request.id)
)
body = response.data.decode()
assert re.search(">\s+Financial Verification\s+<", body)
def test_can_not_show_financial_data(client, user_session):
user = UserFactory.create()
user_session(user)
request = RequestFactory.create_with_status(
status=RequestStatus.PENDING_CCPO_ACCEPTANCE, creator=user
)
response = client.get(
url_for("requests.view_request_details", request_id=request.id)
)
body = response.data.decode()
assert not re.search(">\s+Financial Verification\s+<", body)