diff --git a/atst/domain/task_orders.py b/atst/domain/task_orders.py index f064b490..fbc587a1 100644 --- a/atst/domain/task_orders.py +++ b/atst/domain/task_orders.py @@ -1,4 +1,5 @@ from sqlalchemy.orm.exc import NoResultFound +from flask import current_app as app from atst.database import db from atst.models.task_order import TaskOrder @@ -8,22 +9,22 @@ from .exceptions import NotFoundError class TaskOrders(object): @classmethod - def get(cls, order_number, client=None): + def get(cls, order_number): try: task_order = ( db.session.query(TaskOrder).filter_by(number=order_number).one() ) except NoResultFound: - if client: - task_order = TaskOrders._get_from_eda(order_number, client) + if TaskOrders._client(): + task_order = TaskOrders._get_from_eda(order_number) else: raise NotFoundError("task_order") return task_order @classmethod - def _get_from_eda(cls, order_number, client): - to_data = client.get_contract(order_number, status="y") + def _get_from_eda(cls, order_number): + to_data = TaskOrders._client().get_contract(order_number, status="y") if to_data: return TaskOrders.create(to_data["contract_no"]) else: @@ -37,3 +38,7 @@ class TaskOrders(object): db.session.commit() return task_order + + @classmethod + def _client(cls): + return app.eda_client diff --git a/atst/forms/financial.py b/atst/forms/financial.py index ba816c70..e989d822 100644 --- a/atst/forms/financial.py +++ b/atst/forms/financial.py @@ -119,15 +119,9 @@ class BaseFinancialForm(ValidatedForm): class FinancialForm(BaseFinancialForm): - def __init__(self, *args, **kwargs): - self.eda_client = kwargs.get("eda_client") - if self.eda_client: - del(kwargs["eda_client"]) - super().__init__(*args, **kwargs) - def validate_task_order_number(form, field): try: - TaskOrders.get(field.data, client=form.eda_client) + TaskOrders.get(field.data) except NotFoundError: raise ValidationError("Task Order number not found") diff --git a/atst/routes/requests/financial_verification.py b/atst/routes/requests/financial_verification.py index 7eef589f..b7fc4993 100644 --- a/atst/routes/requests/financial_verification.py +++ b/atst/routes/requests/financial_verification.py @@ -1,6 +1,5 @@ from flask import render_template, redirect, url_for from flask import request as http_request -from flask import current_app as app from . import requests_bp from atst.domain.requests import Requests @@ -11,7 +10,7 @@ def financial_form(data): if http_request.args.get("extended"): return ExtendedFinancialForm(data=data) else: - return FinancialForm(data=data, eda_client=app.eda_client) + return FinancialForm(data=data) @requests_bp.route("/requests/verify/", methods=["GET"]) diff --git a/tests/domain/test_task_orders.py b/tests/domain/test_task_orders.py index b1efc3c0..27b5d2de 100644 --- a/tests/domain/test_task_orders.py +++ b/tests/domain/test_task_orders.py @@ -14,8 +14,9 @@ def test_can_get_task_order(): assert to.id == to.id -def test_can_get_task_order_from_eda(): - to = TaskOrders.get(MockEDAClient.MOCK_CONTRACT_NUMBER, client=MockEDAClient()) +def test_can_get_task_order_from_eda(monkeypatch): + monkeypatch.setattr("atst.domain.task_orders.TaskOrders._client", lambda: MockEDAClient()) + to = TaskOrders.get(MockEDAClient.MOCK_CONTRACT_NUMBER) assert to.number == MockEDAClient.MOCK_CONTRACT_NUMBER @@ -25,6 +26,7 @@ def test_nonexistent_task_order_raises_without_client(): TaskOrders.get("some fake number") -def test_nonexistent_task_order_raises_with_client(): +def test_nonexistent_task_order_raises_with_client(monkeypatch): + monkeypatch.setattr("atst.domain.task_orders.TaskOrders._client", lambda: MockEDAClient()) with pytest.raises(NotFoundError): - TaskOrders.get("some other fake numer", client=MockEDAClient()) + TaskOrders.get("some other fake numer") diff --git a/tests/forms/test_financial.py b/tests/forms/test_financial.py index ee08c1c3..871c7c19 100644 --- a/tests/forms/test_financial.py +++ b/tests/forms/test_financial.py @@ -69,8 +69,9 @@ def test_ba_code_validation(input_, expected): assert is_valid == expected -def test_task_order_number_validation(): - form_invalid = FinancialForm(data={"task_order_number": "1234"}, eda_client=MockEDAClient()) +def test_task_order_number_validation(monkeypatch): + monkeypatch.setattr("atst.domain.task_orders.TaskOrders._client", lambda: MockEDAClient()) + form_invalid = FinancialForm(data={"task_order_number": "1234"}) form_invalid.validate() assert "task_order_number" in form_invalid.errors