Add query for finding new CLINs that have not been sent.

Use fixtures in tests.
This commit is contained in:
leigh-mil 2020-02-11 15:13:17 -05:00
parent b0f946dd35
commit aa2d353260
2 changed files with 44 additions and 14 deletions

View File

@ -90,3 +90,13 @@ class TaskOrders(BaseDomainClass):
)
.all()
)
@classmethod
def get_clins_for_create_billing_instructions(cls):
return (
db.session.query(CLIN)
.filter(
CLIN.last_sent_at.is_(None), CLIN.start_date < pendulum.now(tz="UTC")
)
.all()
)

View File

@ -9,6 +9,27 @@ from atst.models.task_order import TaskOrder, SORT_ORDERING, Status
from tests.factories import TaskOrderFactory, CLINFactory, PortfolioFactory
@pytest.fixture
def new_task_order():
return TaskOrderFactory.create(create_clins=[{}])
@pytest.fixture
def updated_task_order():
return TaskOrderFactory.create(
create_clins=[{"last_sent_at": pendulum.date(2020, 2, 1)}],
pdf_last_sent_at=pendulum.date(2020, 1, 1),
)
@pytest.fixture
def sent_task_order():
return TaskOrderFactory.create(
create_clins=[{"last_sent_at": pendulum.date(2020, 1, 1)}],
pdf_last_sent_at=pendulum.date(2020, 1, 1),
)
def test_create_adds_clins():
portfolio = PortfolioFactory.create()
clins = [
@ -181,19 +202,18 @@ def test_allows_alphanumeric_number():
assert TaskOrders.create(portfolio.id, number, [], None)
def test_get_for_send_task_order_files():
new_to = TaskOrderFactory.create(create_clins=[{}])
updated_to = TaskOrderFactory.create(
create_clins=[{"last_sent_at": pendulum.datetime(2020, 2, 1)}],
pdf_last_sent_at=pendulum.datetime(2020, 1, 1),
)
sent_to = TaskOrderFactory.create(
create_clins=[{"last_sent_at": pendulum.datetime(2020, 1, 1)}],
pdf_last_sent_at=pendulum.datetime(2020, 1, 1),
)
def test_get_for_send_task_order_files(
new_task_order, updated_task_order, sent_task_order
):
updated_and_new_task_orders = TaskOrders.get_for_send_task_order_files()
assert len(updated_and_new_task_orders) == 2
assert sent_to not in updated_and_new_task_orders
assert updated_to in updated_and_new_task_orders
assert new_to in updated_and_new_task_orders
assert sent_task_order not in updated_and_new_task_orders
assert updated_task_order in updated_and_new_task_orders
assert new_task_order in updated_and_new_task_orders
def test_get_clins_for_create_billing_instructions(new_task_order, sent_task_order):
new_clins = TaskOrders.get_clins_for_create_billing_instructions()
assert len(new_clins) == 1
assert new_task_order.clins[0] in new_clins
assert sent_task_order.clins[0] not in new_clins