From bb886dbe0f79c740fe71de3930a53de5249d09cf Mon Sep 17 00:00:00 2001 From: graham-dds Date: Fri, 21 Feb 2020 11:39:04 -0500 Subject: [PATCH] Add tests for portfolio.initial_clin_dict property In doing this, fixed a bug on the clin.is_active property --- atst/models/clin.py | 2 +- tests/models/test_portfolio.py | 55 ++++++++++++++++++++++++++++++++++ 2 files changed, 56 insertions(+), 1 deletion(-) diff --git a/atst/models/clin.py b/atst/models/clin.py index b74f9b0d..11e07401 100644 --- a/atst/models/clin.py +++ b/atst/models/clin.py @@ -81,5 +81,5 @@ class CLIN(Base, mixins.TimestampsMixin): @property def is_active(self): return ( - self.start_date <= pendulum.today() <= self.end_date + self.start_date <= pendulum.today().date() <= self.end_date ) and self.task_order.signed_at diff --git a/tests/models/test_portfolio.py b/tests/models/test_portfolio.py index ed6e2513..3e16c5a6 100644 --- a/tests/models/test_portfolio.py +++ b/tests/models/test_portfolio.py @@ -179,3 +179,58 @@ class TestUpcomingObligatedFunds: ) # Only sums the upcoming task order assert portfolio.upcoming_obligated_funds == Decimal(700.0) + + +class TestInitialClinDict: + def test_formats_dict_correctly(self): + portfolio = PortfolioFactory() + task_order = TaskOrderFactory( + portfolio=portfolio, number="1234567890123", signed_at=pendulum.now() + ) + clin = CLINFactory(task_order=task_order) + initial_clin = portfolio.initial_clin_dict + + assert initial_clin["initial_clin_amount"] == clin.obligated_amount + assert initial_clin["initial_clin_start_date"] == clin.start_date.strftime( + "%Y/%m/%d" + ) + assert initial_clin["initial_clin_end_date"] == clin.end_date.strftime( + "%Y/%m/%d" + ) + assert initial_clin["initial_clin_type"] == clin.jedi_clin_number + assert initial_clin["initial_clin_number"] == clin.number + assert initial_clin["initial_task_order_id"] == task_order.number + + def test_no_valid_clins(self): + portfolio = PortfolioFactory() + assert portfolio.initial_clin_dict == {} + + def test_picks_the_initial_clin(self): + yesterday = pendulum.now().subtract(days=1).date() + tomorrow = pendulum.now().add(days=1).date() + portfolio = PortfolioFactory( + task_orders=[ + { + "signed_at": pendulum.now(), + "create_clins": [ + { + "number": "0001", + "start_date": yesterday.subtract(days=1), + "end_date": yesterday, + }, + { + "number": "1001", + "start_date": yesterday, + "end_date": tomorrow, + }, + { + "number": "0002", + "start_date": yesterday, + "end_date": tomorrow, + }, + ], + }, + {"create_clins": [{"number": "0003"}]}, + ], + ) + assert portfolio.initial_clin_dict["initial_clin_number"] == "1001"