TaskOrders gets EDA client from current Flask app

This commit is contained in:
dandds 2018-08-21 14:02:01 -04:00
parent a50b855389
commit 1a9606f2b8
5 changed files with 21 additions and 20 deletions

View File

@ -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

View File

@ -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")

View File

@ -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/<string:request_id>", methods=["GET"])

View File

@ -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")

View File

@ -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