- Move task_orders.edit rendering to function - Construct task_orders.update form route correctly in template
144 lines
4.5 KiB
Python
144 lines
4.5 KiB
Python
import pytest
|
|
from flask import url_for
|
|
|
|
from atst.domain.permission_sets import PermissionSets
|
|
from atst.domain.task_orders import TaskOrders
|
|
from atst.models import Attachment, TaskOrder
|
|
from atst.utils.localization import translate
|
|
|
|
from tests.factories import (
|
|
PortfolioFactory,
|
|
PortfolioRoleFactory,
|
|
TaskOrderFactory,
|
|
UserFactory,
|
|
)
|
|
|
|
|
|
@pytest.fixture
|
|
def task_order():
|
|
user = UserFactory.create()
|
|
portfolio = PortfolioFactory.create(owner=user)
|
|
attachment = Attachment(filename="sample_attachment", object_name="sample")
|
|
|
|
return TaskOrderFactory.create(creator=user, portfolio=portfolio)
|
|
|
|
|
|
@pytest.fixture
|
|
def portfolio():
|
|
return PortfolioFactory.create()
|
|
|
|
|
|
@pytest.fixture
|
|
def user():
|
|
return UserFactory.create()
|
|
|
|
|
|
def test_task_orders_new(client, user_session, portfolio):
|
|
user_session(portfolio.owner)
|
|
response = client.get(url_for("task_orders.edit", portfolio_id=portfolio.id))
|
|
assert response.status_code == 200
|
|
|
|
|
|
def test_task_orders_create(client, user_session, portfolio, pdf_upload, session):
|
|
user_session(portfolio.owner)
|
|
data = {"number": "0123456789", "pdf": pdf_upload}
|
|
response = client.post(
|
|
url_for("task_orders.update", portfolio_id=portfolio.id), data=data
|
|
)
|
|
assert response.status_code == 302
|
|
task_order = session.query(TaskOrder).filter_by(number=data["number"]).one()
|
|
assert task_order.pdf.filename == pdf_upload.filename
|
|
|
|
|
|
def test_task_orders_create_invalid_data(client, user_session, portfolio):
|
|
user_session(portfolio.owner)
|
|
num_task_orders = len(portfolio.task_orders)
|
|
response = client.post(
|
|
url_for("task_orders.update", portfolio_id=portfolio.id), data={"number": ""}
|
|
)
|
|
assert response.status_code == 400
|
|
assert num_task_orders == len(portfolio.task_orders)
|
|
assert "There were some errors" in response.data.decode()
|
|
|
|
|
|
def test_task_orders_update(client, user_session, portfolio, pdf_upload):
|
|
user_session(portfolio.owner)
|
|
data = {"number": "0123456789", "pdf": pdf_upload}
|
|
task_order = TaskOrderFactory.create(number="0987654321")
|
|
response = client.post(
|
|
url_for(
|
|
"task_orders.update", portfolio_id=portfolio.id, task_order_id=task_order.id
|
|
),
|
|
data=data,
|
|
)
|
|
assert response.status_code == 302
|
|
assert task_order.number == data["number"]
|
|
|
|
|
|
def test_task_orders_update_pdf(
|
|
client, user_session, portfolio, pdf_upload, pdf_upload2
|
|
):
|
|
user_session(portfolio.owner)
|
|
task_order = TaskOrderFactory.create(pdf=pdf_upload)
|
|
data = {"number": "0123456789", "pdf": pdf_upload2}
|
|
response = client.post(
|
|
url_for(
|
|
"task_orders.update", portfolio_id=portfolio.id, task_order_id=task_order.id
|
|
),
|
|
data=data,
|
|
)
|
|
assert response.status_code == 302
|
|
assert task_order.pdf.filename == pdf_upload2.filename
|
|
|
|
|
|
def test_task_orders_update_delete_pdf(client, user_session, portfolio, pdf_upload):
|
|
user_session(portfolio.owner)
|
|
task_order = TaskOrderFactory.create(pdf=pdf_upload)
|
|
data = {"number": "0123456789", "pdf": None}
|
|
response = client.post(
|
|
url_for(
|
|
"task_orders.update", portfolio_id=portfolio.id, task_order_id=task_order.id
|
|
),
|
|
data=data,
|
|
)
|
|
assert response.status_code == 302
|
|
assert task_order.pdf is None
|
|
|
|
|
|
@pytest.mark.skip(reason="Update after implementing new TO form")
|
|
def test_task_order_form_shows_errors(client, user_session, task_order):
|
|
creator = task_order.creator
|
|
user_session(creator)
|
|
|
|
task_order_data = TaskOrderFactory.dictionary()
|
|
funding_data = slice_data_for_section(task_order_data, "funding")
|
|
funding_data = serialize_dates(funding_data)
|
|
funding_data.update({"clin_01": "one milllllion dollars"})
|
|
|
|
response = client.post(
|
|
url_for(
|
|
"task_orders.update", portfolio_id=portfolio.id, task_order_id=task_order.id
|
|
),
|
|
data=funding_data,
|
|
follow_redirects=False,
|
|
)
|
|
|
|
body = response.data.decode()
|
|
assert "There were some errors" in body
|
|
assert "Not a valid decimal" in body
|
|
|
|
|
|
@pytest.mark.skip(reason="Update after implementing new TO form")
|
|
def test_task_order_review_when_complete(client, user_session, task_order):
|
|
pass
|
|
|
|
|
|
@pytest.mark.skip(reason="Update after implementing new TO form")
|
|
def test_task_order_review_when_not_complete(client, user_session, task_order):
|
|
pass
|
|
|
|
|
|
@pytest.mark.skip(reason="Update after implementing new TO form")
|
|
def test_task_order_review_and_sign(client, user_session, task_order):
|
|
pass
|