Implement new CLIN-based TO statuses
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
from werkzeug.datastructures import FileStorage
|
||||
import pytest
|
||||
from datetime import date
|
||||
from datetime import date, datetime
|
||||
from unittest.mock import Mock, patch, PropertyMock
|
||||
import pendulum
|
||||
|
||||
from atst.models import *
|
||||
from atst.models.clin import JEDICLINType
|
||||
@@ -48,26 +50,74 @@ class TestPeriodOfPerformance:
|
||||
|
||||
|
||||
class TestTaskOrderStatus:
|
||||
@pytest.mark.skip(reason="Reimplement after adding CLINs")
|
||||
def test_started_status(self):
|
||||
@patch("atst.models.TaskOrder.is_completed", new_callable=PropertyMock)
|
||||
@patch("atst.models.TaskOrder.is_signed", new_callable=PropertyMock)
|
||||
def test_draft_status(self, is_signed, is_completed):
|
||||
# Given that I have a TO that is neither completed nor signed
|
||||
to = TaskOrder()
|
||||
assert to.status == Status.STARTED
|
||||
is_signed.return_value = False
|
||||
is_completed.return_value = False
|
||||
|
||||
@pytest.mark.skip(reason="See if still needed after implementing CLINs")
|
||||
def test_pending_status(self):
|
||||
to = TaskOrder(number="42")
|
||||
assert to.status == Status.PENDING
|
||||
assert to.status == Status.DRAFT
|
||||
|
||||
@pytest.mark.skip(reason="See if still needed after implementing CLINs")
|
||||
def test_active_status(self):
|
||||
to = TaskOrder(number="42")
|
||||
@patch("atst.models.TaskOrder.end_date", new_callable=PropertyMock)
|
||||
@patch("atst.models.TaskOrder.start_date", new_callable=PropertyMock)
|
||||
@patch("atst.models.TaskOrder.is_completed", new_callable=PropertyMock)
|
||||
@patch("atst.models.TaskOrder.is_signed", new_callable=PropertyMock)
|
||||
def test_active_status(self, is_signed, is_completed, start_date, end_date):
|
||||
# Given that I have a signed TO and today is within its start_date and end_date
|
||||
today = pendulum.today().date()
|
||||
to = TaskOrder()
|
||||
|
||||
start_date.return_value = today.subtract(days=1)
|
||||
end_date.return_value = today.add(days=1)
|
||||
is_signed.return_value = True
|
||||
is_completed.return_value = True
|
||||
|
||||
# Its status should be active
|
||||
assert to.status == Status.ACTIVE
|
||||
|
||||
@pytest.mark.skip(reason="See if still needed after implementing CLINs")
|
||||
def test_expired_status(self):
|
||||
to = TaskOrder(number="42")
|
||||
@patch("atst.models.TaskOrder.end_date", new_callable=PropertyMock)
|
||||
@patch("atst.models.TaskOrder.start_date", new_callable=PropertyMock)
|
||||
@patch("atst.models.TaskOrder.is_completed", new_callable=PropertyMock)
|
||||
@patch("atst.models.TaskOrder.is_signed", new_callable=PropertyMock)
|
||||
def test_upcoming_status(self, is_signed, is_completed, start_date, end_date):
|
||||
# Given that I have a signed TO and today is before its start_date
|
||||
to = TaskOrder()
|
||||
start_date.return_value = pendulum.today().add(days=1).date()
|
||||
end_date.return_value = pendulum.today().add(days=2).date()
|
||||
is_signed.return_value = True
|
||||
is_completed.return_value = True
|
||||
|
||||
# Its status should be upcoming
|
||||
assert to.status == Status.UPCOMING
|
||||
|
||||
@patch("atst.models.TaskOrder.start_date", new_callable=PropertyMock)
|
||||
@patch("atst.models.TaskOrder.end_date", new_callable=PropertyMock)
|
||||
@patch("atst.models.TaskOrder.is_completed", new_callable=PropertyMock)
|
||||
@patch("atst.models.TaskOrder.is_signed", new_callable=PropertyMock)
|
||||
def test_expired_status(self, is_signed, is_completed, end_date, start_date):
|
||||
# Given that I have a signed TO and today is after its expiration date
|
||||
to = TaskOrder()
|
||||
end_date.return_value = pendulum.today().subtract(days=1).date()
|
||||
start_date.return_value = pendulum.today().subtract(days=2).date()
|
||||
is_signed.return_value = True
|
||||
is_completed.return_value = True
|
||||
|
||||
# Its status should be expired
|
||||
assert to.status == Status.EXPIRED
|
||||
|
||||
@patch("atst.models.TaskOrder.is_completed", new_callable=PropertyMock)
|
||||
@patch("atst.models.TaskOrder.is_signed", new_callable=PropertyMock)
|
||||
def test_unsigned_status(self, is_signed, is_completed):
|
||||
# Given that I have a TO that is completed but not signed
|
||||
to = TaskOrder(signed_at=pendulum.now().subtract(days=1))
|
||||
is_completed.return_value = True
|
||||
is_signed.return_value = False
|
||||
|
||||
# Its status should be unsigned
|
||||
assert to.status == Status.UNSIGNED
|
||||
|
||||
|
||||
class TestBudget:
|
||||
def test_total_contract_amount(self):
|
||||
|
Reference in New Issue
Block a user