domain repos for PE numbers and task orders

This commit is contained in:
dandds 2018-07-30 15:50:33 -04:00 committed by richard-dds
parent c02a95d00a
commit 2e13c4772b
5 changed files with 112 additions and 1 deletions

15
atst/domain/pe_numbers.py Normal file
View File

@ -0,0 +1,15 @@
from atst.models.pe_number import PENumber
from .exceptions import NotFoundError
class PENumbers(object):
def __init__(self, db_session):
self.db_session = db_session
def get(self, number):
pe_number = self.db_session.query(PENumber).get(number)
if not pe_number:
raise NotFoundError("pe_number")
return pe_number

View File

@ -0,0 +1,18 @@
from sqlalchemy.orm.exc import NoResultFound
from atst.models.task_order import TaskOrder
from .exceptions import NotFoundError
class TaskOrders(object):
def __init__(self, db_session):
self.db_session = db_session
def get(self, order_number):
try:
task_order = self.db_session.query(TaskOrder).filter_by(number=order_number).one()
except NoResultFound:
raise NotFoundError("task_order")
return task_order

View File

@ -0,0 +1,34 @@
import pytest
from atst.domain.exceptions import NotFoundError
from atst.domain.pe_numbers import PENumbers
from tests.factories import PENumberFactory
@pytest.fixture()
def pe_numbers(db):
return PENumbers(db)
@pytest.fixture(scope="function")
def new_pe_number(db):
def make_pe_number(**kwargs):
pen = PENumberFactory.create(**kwargs)
db.add(pen)
db.commit()
return pen
return make_pe_number
def test_can_get_pe_number(pe_numbers, new_pe_number):
new_pen = new_pe_number(number="0101969F", description="Combat Support - Offensive")
pen = pe_numbers.get(new_pen.number)
assert pen.number == new_pen.number
def test_nonexistent_pe_number_raises(pe_numbers):
with pytest.raises(NotFoundError):
pe_numbers.get("some fake number")

View File

@ -0,0 +1,34 @@
import pytest
from atst.domain.exceptions import NotFoundError
from atst.domain.task_orders import TaskOrders
from tests.factories import TaskOrderFactory
@pytest.fixture()
def task_orders(db):
return TaskOrders(db)
@pytest.fixture(scope="function")
def new_task_order(db):
def make_task_order(**kwargs):
to = TaskOrderFactory.create(**kwargs)
db.add(to)
db.commit()
return to
return make_task_order
def test_can_get_task_order(task_orders, new_task_order):
new_to = new_task_order(number="0101969F")
to = task_orders.get(new_to.number)
assert to.id == to.id
def test_nonexistent_task_order_raises(task_orders):
with pytest.raises(NotFoundError):
task_orders.get("some fake number")

View File

@ -1,7 +1,9 @@
import factory import factory
from uuid import uuid4 from uuid import uuid4
from atst.models import Request from atst.models import Request, RequestStatusEvent
from atst.models.pe_number import PENumber
from atst.models.task_order import TaskOrder
class RequestFactory(factory.Factory): class RequestFactory(factory.Factory):
@ -9,3 +11,11 @@ class RequestFactory(factory.Factory):
model = Request model = Request
id = factory.Sequence(lambda x: uuid4()) id = factory.Sequence(lambda x: uuid4())
class PENumberFactory(factory.Factory):
class Meta:
model = PENumber
class TaskOrderFactory(factory.Factory):
class Meta:
model = TaskOrder