Merge pull request #489 from dod-ccpo/legacy-task-orders

change current task order name
This commit is contained in:
dandds
2018-12-13 15:50:39 -05:00
committed by GitHub
33 changed files with 321 additions and 240 deletions

View File

@@ -139,7 +139,7 @@ def extended_financial_verification_data(pdf_upload):
"clin_1003": "7000",
"clin_2001": "30000",
"clin_2003": "7000",
"task_order": pdf_upload,
"legacy_task_order": pdf_upload,
}

View File

@@ -1,17 +1,17 @@
from atst.domain.reports import Reports
from tests.factories import RequestFactory, TaskOrderFactory, WorkspaceFactory
from tests.factories import RequestFactory, LegacyTaskOrderFactory, WorkspaceFactory
CLIN_NUMS = ["0001", "0003", "1001", "1003", "2001", "2003"]
def test_workspace_totals():
task_order = TaskOrderFactory.create()
legacy_task_order = LegacyTaskOrderFactory.create()
for num in CLIN_NUMS:
setattr(task_order, "clin_{}".format(num), 200)
setattr(legacy_task_order, "clin_{}".format(num), 200)
request = RequestFactory.create(task_order=task_order)
request = RequestFactory.create(legacy_task_order=legacy_task_order)
workspace = WorkspaceFactory.create(request=request)
report = Reports.workspace_totals(workspace)
total = 200 * len(CLIN_NUMS)

View File

@@ -1,27 +1,28 @@
import pytest
from atst.domain.exceptions import NotFoundError
from atst.domain.task_orders import TaskOrders
from atst.domain.legacy_task_orders import LegacyTaskOrders
from atst.eda_client import MockEDAClient
from tests.factories import TaskOrderFactory
from tests.factories import LegacyTaskOrderFactory
def test_can_get_task_order():
new_to = TaskOrderFactory.create(number="0101969F")
to = TaskOrders.get(new_to.number)
new_to = LegacyTaskOrderFactory.create(number="0101969F")
to = LegacyTaskOrders.get(new_to.number)
assert to.id == to.id
def test_nonexistent_task_order_raises_without_client():
with pytest.raises(NotFoundError):
TaskOrders.get("some fake number")
LegacyTaskOrders.get("some fake number")
def test_nonexistent_task_order_raises_with_client(monkeypatch):
monkeypatch.setattr(
"atst.domain.task_orders.TaskOrders._client", lambda: MockEDAClient()
"atst.domain.legacy_task_orders.LegacyTaskOrders._client",
lambda: MockEDAClient(),
)
with pytest.raises(NotFoundError):
TaskOrders.get("some other fake numer")
LegacyTaskOrders.get("some other fake numer")

View File

@@ -13,7 +13,7 @@ from atst.models.request_review import RequestReview
from atst.models.request_status_event import RequestStatusEvent, RequestStatus
from atst.models.pe_number import PENumber
from atst.models.project import Project
from atst.models.task_order import TaskOrder, Source, FundingType
from atst.models.legacy_task_order import LegacyTaskOrder, Source, FundingType
from atst.models.user import User
from atst.models.role import Role
from atst.models.workspace import Workspace
@@ -122,8 +122,8 @@ class RequestFactory(Base):
@classmethod
def _adjust_kwargs(cls, **kwargs):
if kwargs.pop("with_task_order", False) and "task_order" not in kwargs:
kwargs["task_order"] = TaskOrderFactory.build()
if kwargs.pop("with_task_order", False) and "legacy_task_order" not in kwargs:
kwargs["legacy_task_order"] = LegacyTaskOrderFactory.build()
return kwargs
@classmethod
@@ -212,9 +212,9 @@ class PENumberFactory(Base):
model = PENumber
class TaskOrderFactory(Base):
class LegacyTaskOrderFactory(Base):
class Meta:
model = TaskOrder
model = LegacyTaskOrder
source = Source.MANUAL
funding_type = FundingType.PROC

View File

@@ -20,17 +20,17 @@ def test_suggest_pe_id(input_, expected):
def test_funding_type_other_not_required_if_funding_type_is_not_other():
form_data = ImmutableMultiDict({"task_order-funding_type": "PROC"})
form_data = ImmutableMultiDict({"legacy_task_order-funding_type": "PROC"})
form = FinancialVerificationForm(form_data)
form.validate()
assert "funding_type_other" not in form.errors
def test_funding_type_other_required_if_funding_type_is_other():
form_data = ImmutableMultiDict({"task_order-funding_type": "OTHER"})
form_data = ImmutableMultiDict({"legacy_task_order-funding_type": "OTHER"})
form = FinancialVerificationForm(form_data)
form.validate()
assert "funding_type_other" in form.errors["task_order"]
assert "funding_type_other" in form.errors["legacy_task_order"]
@pytest.mark.parametrize(
@@ -85,8 +85,8 @@ def test_ba_code_validation(input_, expected):
def test_can_submit_zero_for_clin():
form_first = FinancialVerificationForm()
form_first.validate()
assert "clin_0001" in form_first.errors["task_order"]
form_data = ImmutableMultiDict([("task_order-clin_0001", "0")])
assert "clin_0001" in form_first.errors["legacy_task_order"]
form_data = ImmutableMultiDict([("legacy_task_order-clin_0001", "0")])
form_second = FinancialVerificationForm(form_data)
form_second.validate()
assert "clin_0001" not in form_second.errors["task_order"]
assert "clin_0001" not in form_second.errors["legacy_task_order"]

View File

@@ -1,15 +1,15 @@
from tests.factories import TaskOrderFactory
from tests.factories import LegacyTaskOrderFactory
from tests.assert_util import dict_contains
def test_as_dictionary():
data = TaskOrderFactory.dictionary()
real_task_order = TaskOrderFactory.create(**data)
data = LegacyTaskOrderFactory.dictionary()
real_task_order = LegacyTaskOrderFactory.create(**data)
assert dict_contains(real_task_order.to_dictionary(), data)
def test_budget():
task_order = TaskOrderFactory.create(
legacy_task_order = LegacyTaskOrderFactory.create(
clin_0001=500,
clin_0003=200,
clin_1001=None,
@@ -17,4 +17,4 @@ def test_budget():
clin_2001=None,
clin_2003=None,
)
assert task_order.budget == 700
assert legacy_task_order.budget == 700

View File

@@ -3,16 +3,18 @@ from flask import url_for
from atst.models.request_status_event import RequestStatus
from tests.factories import RequestFactory, TaskOrderFactory, UserFactory
from tests.factories import RequestFactory, LegacyTaskOrderFactory, UserFactory
def test_can_show_financial_data(client, user_session):
user = UserFactory.create()
user_session(user)
task_order = TaskOrderFactory.create()
legacy_task_order = LegacyTaskOrderFactory.create()
request = RequestFactory.create_with_status(
status=RequestStatus.PENDING_CCPO_APPROVAL, task_order=task_order, creator=user
status=RequestStatus.PENDING_CCPO_APPROVAL,
legacy_task_order=legacy_task_order,
creator=user,
)
response = client.get(
url_for("requests.view_request_details", request_id=request.id)

View File

@@ -7,7 +7,7 @@ from atst.domain.roles import Roles
from tests.factories import (
RequestFactory,
TaskOrderFactory,
LegacyTaskOrderFactory,
UserFactory,
RequestReviewFactory,
RequestStatusEventFactory,
@@ -46,10 +46,12 @@ def test_non_ccpo_cannot_view_approval(user_session, client):
def prepare_request_pending_approval(creator, pdf_attachment=None):
task_order = TaskOrderFactory.create(number="abc123", pdf=pdf_attachment)
legacy_task_order = LegacyTaskOrderFactory.create(
number="abc123", pdf=pdf_attachment
)
return RequestFactory.create_with_status(
status=RequestStatus.PENDING_CCPO_APPROVAL,
task_order=task_order,
legacy_task_order=legacy_task_order,
creator=creator,
)
@@ -86,8 +88,8 @@ def test_task_order_download(app, client, user_session, pdf_upload):
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)
legacy_task_order = LegacyTaskOrderFactory.create(number="abc123", pdf=attachment)
request = RequestFactory.create(legacy_task_order=legacy_task_order, creator=user)
# ensure that real data for pdf upload has been flushed to disk
pdf_upload.seek(0)

View File

@@ -11,7 +11,7 @@ from atst.routes.requests.financial_verification import (
)
from tests.mocks import MOCK_VALID_PE_ID
from tests.factories import RequestFactory, UserFactory, TaskOrderFactory
from tests.factories import RequestFactory, UserFactory, LegacyTaskOrderFactory
from atst.forms.exceptions import FormValidationError
from atst.domain.requests.financial_verification import (
PENumberValidator,
@@ -26,7 +26,7 @@ from atst.domain.requests.query import RequestsQuery
def fv_data():
return {
"request-pe_id": "123",
"task_order-number": MockEDAClient.MOCK_CONTRACT_NUMBER,
"legacy_task_order-number": MockEDAClient.MOCK_CONTRACT_NUMBER,
"request-fname_co": "Contracting",
"request-lname_co": "Officer",
"request-email_co": "jane@mail.mil",
@@ -44,16 +44,18 @@ def fv_data():
@pytest.fixture
def e_fv_data(pdf_upload):
return {
"task_order-funding_type": "RDTE",
"task_order-funding_type_other": "other",
"task_order-expiration_date": "1/1/{}".format(datetime.date.today().year + 1),
"task_order-clin_0001": "50000",
"task_order-clin_0003": "13000",
"task_order-clin_1001": "30000",
"task_order-clin_1003": "7000",
"task_order-clin_2001": "30000",
"task_order-clin_2003": "7000",
"task_order-pdf": pdf_upload,
"legacy_task_order-funding_type": "RDTE",
"legacy_task_order-funding_type_other": "other",
"legacy_task_order-expiration_date": "1/1/{}".format(
datetime.date.today().year + 1
),
"legacy_task_order-clin_0001": "50000",
"legacy_task_order-clin_0003": "13000",
"legacy_task_order-clin_1001": "30000",
"legacy_task_order-clin_1003": "7000",
"legacy_task_order-clin_2001": "30000",
"legacy_task_order-clin_2003": "7000",
"legacy_task_order-pdf": pdf_upload,
}
@@ -97,7 +99,7 @@ def test_update_fv_re_enter_pe_number(fv_data):
def test_update_fv_invalid_task_order_number(fv_data):
request = RequestFactory.create()
user = UserFactory.create()
data = {**fv_data, "task_order-number": MANUAL_TO_NUMBER}
data = {**fv_data, "legacy_task_order-number": MANUAL_TO_NUMBER}
update_fv = UpdateFinancialVerification(
TrueValidator,
TaskOrderNumberValidator(),
@@ -139,7 +141,7 @@ def test_update_fv_extended(fv_data, e_fv_data):
def test_update_fv_extended_does_not_validate_task_order(fv_data, e_fv_data):
request = RequestFactory.create()
user = UserFactory.create()
data = {**fv_data, **e_fv_data, "task_order-number": "abc123"}
data = {**fv_data, **e_fv_data, "legacy_task_order-number": "abc123"}
update_fv = UpdateFinancialVerification(
TrueValidator, TaskOrderNumberValidator(), user, request, data, is_extended=True
)
@@ -197,7 +199,7 @@ def test_save_draft_allows_invalid_data():
request = RequestFactory.create()
user = UserFactory.create()
data = {
"task_order-number": MANUAL_TO_NUMBER,
"legacy_task_order-number": MANUAL_TO_NUMBER,
"request-pe_id": "123",
"request-ba_code": "a",
}
@@ -229,44 +231,44 @@ def test_save_draft_and_then_submit():
def test_updated_request_has_pdf(fv_data, e_fv_data):
request = RequestFactory.create()
user = UserFactory.create()
data = {**fv_data, **e_fv_data, "task_order-number": MANUAL_TO_NUMBER}
data = {**fv_data, **e_fv_data, "legacy_task_order-number": MANUAL_TO_NUMBER}
updated_request = UpdateFinancialVerification(
TrueValidator, TrueValidator, user, request, data, is_extended=True
).execute()
assert updated_request.task_order.pdf
assert updated_request.legacy_task_order.pdf
def test_can_save_draft_with_just_pdf(e_fv_data):
request = RequestFactory.create()
user = UserFactory.create()
data = {"task_order-pdf": e_fv_data["task_order-pdf"]}
data = {"legacy_task_order-pdf": e_fv_data["legacy_task_order-pdf"]}
SaveFinancialVerificationDraft(
TrueValidator, TrueValidator, user, request, data, is_extended=True
).execute()
form = GetFinancialVerificationForm(user, request, is_extended=True).execute()
assert form.task_order.pdf
assert form.legacy_task_order.pdf
def test_task_order_info_present_in_extended_form(fv_data, e_fv_data):
request = RequestFactory.create()
user = UserFactory.create()
data = {
"task_order-clin_0001": "1",
"task_order-number": fv_data["task_order-number"],
"legacy_task_order-clin_0001": "1",
"legacy_task_order-number": fv_data["legacy_task_order-number"],
}
SaveFinancialVerificationDraft(
TrueValidator, TrueValidator, user, request, data, is_extended=True
).execute()
form = GetFinancialVerificationForm(user, request, is_extended=True).execute()
assert form.task_order.clin_0001.data
assert form.legacy_task_order.clin_0001.data
def test_update_ignores_empty_values(fv_data, e_fv_data):
request = RequestFactory.create()
user = UserFactory.create()
data = {**fv_data, **e_fv_data, "task_order-funding_type": ""}
data = {**fv_data, **e_fv_data, "legacy_task_order-funding_type": ""}
SaveFinancialVerificationDraft(
TrueValidator, TrueValidator, user, request, data, is_extended=True
).execute()
@@ -276,14 +278,14 @@ def test_can_save_draft_with_funding_type(fv_data, e_fv_data):
request = RequestFactory.create()
user = UserFactory.create()
data = {
"task_order-number": fv_data["task_order-number"],
"task_order-funding_type": e_fv_data["task_order-funding_type"],
"legacy_task_order-number": fv_data["legacy_task_order-number"],
"legacy_task_order-funding_type": e_fv_data["legacy_task_order-funding_type"],
}
updated_request = SaveFinancialVerificationDraft(
TrueValidator, TrueValidator, user, request, data, is_extended=False
).execute()
assert updated_request.task_order.funding_type
assert updated_request.legacy_task_order.funding_type
def test_update_fv_route(client, user_session, fv_data):
@@ -331,7 +333,7 @@ def test_manual_task_order_triggers_extended_form(
user = UserFactory.create()
request = RequestFactory.create(creator=user)
data = {**fv_data, **e_fv_data, "task_order-number": MANUAL_TO_NUMBER}
data = {**fv_data, **e_fv_data, "legacy_task_order-number": MANUAL_TO_NUMBER}
UpdateFinancialVerification(
TrueValidator, TrueValidator, user, request, data, is_extended=True
@@ -352,7 +354,7 @@ def test_manual_to_does_not_trigger_approval(client, user_session, fv_data, e_fv
data = {
**fv_data,
**e_fv_data,
"task_order-number": MANUAL_TO_NUMBER,
"legacy_task_order-number": MANUAL_TO_NUMBER,
"request-pe_id": "0101228N",
}
user_session(user)
@@ -374,7 +376,7 @@ def test_eda_task_order_does_trigger_approval(client, user_session, fv_data, e_f
data = {
**fv_data,
**e_fv_data,
"task_order-number": MockEDAClient.MOCK_CONTRACT_NUMBER,
"legacy_task_order-number": MockEDAClient.MOCK_CONTRACT_NUMBER,
"request-pe_id": "0101228N",
}
user_session(user)
@@ -396,7 +398,7 @@ def test_attachment_on_non_extended_form(client, user_session, fv_data, e_fv_dat
data = {
**fv_data,
**e_fv_data,
"task_order-number": MockEDAClient.MOCK_CONTRACT_NUMBER,
"legacy_task_order-number": MockEDAClient.MOCK_CONTRACT_NUMBER,
"request-pe_id": "0101228N",
}
user_session(user)
@@ -420,7 +422,7 @@ def test_task_order_number_persists_in_form(fv_data, e_fv_data):
request = RequestFactory.create(creator=user)
data = {
**fv_data,
"task_order-number": MANUAL_TO_NUMBER,
"legacy_task_order-number": MANUAL_TO_NUMBER,
"request-pe_id": "0101228N",
}
@@ -432,7 +434,7 @@ def test_task_order_number_persists_in_form(fv_data, e_fv_data):
pass
form = GetFinancialVerificationForm(user, request, is_extended=True).execute()
assert form.task_order.number.data == MANUAL_TO_NUMBER
assert form.legacy_task_order.number.data == MANUAL_TO_NUMBER
def test_can_submit_once_to_details_are_entered(fv_data, e_fv_data):
@@ -440,7 +442,7 @@ def test_can_submit_once_to_details_are_entered(fv_data, e_fv_data):
request = RequestFactory.create(creator=user)
data = {
**fv_data,
"task_order-number": MANUAL_TO_NUMBER,
"legacy_task_order-number": MANUAL_TO_NUMBER,
"request-pe_id": "0101228N",
}
@@ -454,7 +456,7 @@ def test_can_submit_once_to_details_are_entered(fv_data, e_fv_data):
data = {
**fv_data,
**e_fv_data,
"task_order-number": MANUAL_TO_NUMBER,
"legacy_task_order-number": MANUAL_TO_NUMBER,
"request-pe_id": "0101228N",
}
assert UpdateFinancialVerification(
@@ -466,7 +468,7 @@ def test_existing_task_order_with_pdf(fv_data, e_fv_data, client, user_session):
# Use finver route to create initial TO #1, complete with PDF
user = UserFactory.create()
request = RequestFactory.create(creator=user)
data = {**fv_data, **e_fv_data, "task_order-number": MANUAL_TO_NUMBER}
data = {**fv_data, **e_fv_data, "legacy_task_order-number": MANUAL_TO_NUMBER}
UpdateFinancialVerification(
TrueValidator, TaskOrderNumberValidator(), user, request, data, is_extended=True
).execute()
@@ -474,7 +476,7 @@ def test_existing_task_order_with_pdf(fv_data, e_fv_data, client, user_session):
# Save draft on a new finver form, but with same number as TO #1
user = UserFactory.create()
request = RequestFactory.create(creator=user)
data = {"task_order-number": MANUAL_TO_NUMBER}
data = {"legacy_task_order-number": MANUAL_TO_NUMBER}
SaveFinancialVerificationDraft(
TrueValidator,
TaskOrderNumberValidator(),
@@ -497,19 +499,19 @@ def test_existing_task_order_with_pdf(fv_data, e_fv_data, client, user_session):
def test_pdf_clearing(fv_data, e_fv_data, pdf_upload, pdf_upload2):
user = UserFactory.create()
request = RequestFactory.create(creator=user)
data = {**fv_data, **e_fv_data, "task_order-pdf": pdf_upload}
data = {**fv_data, **e_fv_data, "legacy_task_order-pdf": pdf_upload}
SaveFinancialVerificationDraft(
TrueValidator, TrueValidator, user, request, data, is_extended=True
).execute()
data = {**data, "task_order-pdf": pdf_upload2}
data = {**data, "legacy_task_order-pdf": pdf_upload2}
UpdateFinancialVerification(
TrueValidator, TrueValidator, user, request, data, is_extended=True
).execute()
form = GetFinancialVerificationForm(user, request, is_extended=True).execute()
assert form.task_order.pdf.data == pdf_upload2.filename
assert form.legacy_task_order.pdf.data == pdf_upload2.filename
# TODO: This test manages an edge case for our current non-unique handling of
@@ -523,10 +525,12 @@ def test_always_derives_pdf_filename(fv_data, e_fv_data, pdf_upload):
user = UserFactory.create()
request_one = RequestFactory.create(creator=user)
attachment = Attachment.attach(
pdf_upload, resource="task_order", resource_id=request_one.id
pdf_upload, resource="legacy_task_order", resource_id=request_one.id
)
legacy_task_order = LegacyTaskOrderFactory.create(pdf=attachment)
request_two = RequestFactory.create(
creator=user, legacy_task_order=legacy_task_order
)
task_order = TaskOrderFactory.create(pdf=attachment)
request_two = RequestFactory.create(creator=user, task_order=task_order)
form_one = GetFinancialVerificationForm(
user, request_one, is_extended=True
@@ -535,5 +539,5 @@ def test_always_derives_pdf_filename(fv_data, e_fv_data, pdf_upload):
user, request_two, is_extended=True
).execute()
assert form_one.task_order.pdf.data == attachment.filename
assert form_two.task_order.pdf.data == attachment.filename
assert form_one.legacy_task_order.pdf.data == attachment.filename
assert form_two.legacy_task_order.pdf.data == attachment.filename