Review request page #159038263
This commit is contained in:
dandds
2018-09-07 16:07:52 -04:00
committed by GitHub
14 changed files with 303 additions and 253 deletions

View File

@@ -0,0 +1,61 @@
import os
from flask import url_for
from atst.models.attachment import Attachment
from atst.domain.roles import Roles
from tests.factories import RequestFactory, TaskOrderFactory, UserFactory
def test_ccpo_can_view_approval(user_session, client):
ccpo = Roles.get("ccpo")
user = UserFactory.create(atat_role=ccpo)
user_session(user)
request = RequestFactory.create()
response = client.get(url_for("requests.approval", request_id=request.id))
assert response.status_code == 200
def test_non_ccpo_cannot_view_approval(user_session, client):
user = UserFactory.create()
user_session(user)
request = RequestFactory.create(creator=user)
response = client.get(url_for("requests.approval", request_id=request.id))
assert response.status_code == 404
def test_task_order_download(app, client, user_session, pdf_upload):
user = UserFactory.create()
user_session(user)
attachment = Attachment.attach(pdf_upload)
task_order = TaskOrderFactory.create(number="abc123", pdf=attachment)
request = RequestFactory.create(task_order=task_order, creator=user)
# ensure that real data for pdf upload has been flushed to disk
pdf_upload.seek(0)
pdf_content = pdf_upload.read()
pdf_upload.close()
full_path = os.path.join(
app.config.get("STORAGE_CONTAINER"), attachment.object_name
)
with open(full_path, "wb") as output_file:
output_file.write(pdf_content)
output_file.flush()
response = client.get(
url_for("requests.task_order_pdf_download", request_id=request.id)
)
assert response.data == pdf_content
def test_task_order_download_does_not_exist(client, user_session):
user = UserFactory.create()
user_session(user)
request = RequestFactory.create(creator=user)
response = client.get(
url_for("requests.task_order_pdf_download", request_id=request.id)
)
assert response.status_code == 404

View File

@@ -1,3 +1,5 @@
from flask import url_for
from atst.routes.requests.index import RequestsIndex
from tests.factories import RequestFactory, UserFactory
from atst.domain.requests import Requests
@@ -21,3 +23,18 @@ def test_action_required_ccpo():
context = RequestsIndex(ccpo).execute()
assert context["num_action_required"] == 1
def test_ccpo_sees_approval_screen():
ccpo = UserFactory.from_atat_role("ccpo")
request = RequestFactory.create()
Requests.submit(request)
ccpo_context = RequestsIndex(ccpo).execute()
assert ccpo_context["requests"][0]["edit_link"] == url_for(
"requests.approval", request_id=request.id
)
mo_context = RequestsIndex(request.creator).execute()
assert mo_context["requests"][0]["edit_link"] != url_for(
"requests.approval", request_id=request.id
)

View File

@@ -31,3 +31,19 @@ def test_upload_fails_for_non_pdfs(uploader):
fs = FileStorage(fp, content_type="text/plain")
with pytest.raises(UploadError):
uploader.upload(fs)
def test_download_stream(upload_dir, uploader, pdf_upload):
# write pdf content to upload file storage and make sure it is flushed to
# disk
pdf_upload.seek(0)
pdf_content = pdf_upload.read()
pdf_upload.close()
full_path = os.path.join(upload_dir, "abc")
with open(full_path, "wb") as output_file:
output_file.write(pdf_content)
output_file.flush()
stream = uploader.download_stream("abc")
stream_content = b"".join([b for b in stream])
assert pdf_content == stream_content