diff --git a/backend/app/tests.py b/backend/app/tests.py index 57e4ffd..316126a 100644 --- a/backend/app/tests.py +++ b/backend/app/tests.py @@ -17,7 +17,7 @@ class TestApp(TestCase): @mock.patch('app.utils.datetime.datetime', StubDate) def test_today_before_publish_time(self): StubDate.now = classmethod(lambda cls: datetime.datetime(2021, 2, 12, 8, 0, 0)) - date, _ = verify_date('2021-02-14', '') + date, _ = verify_date('2021-02-12', '') self.assertEqual(date.date(), datetime.datetime(2021, 2, 11).date()) @mock.patch('app.utils.datetime.datetime', StubDate) @@ -38,3 +38,9 @@ class TestApp(TestCase): date, _ = verify_date('2021-02-20', '') self.assertEqual(date.date(), datetime.datetime(2021, 2, 15).date()) + @mock.patch('app.utils.datetime.datetime', StubDate) + def test_monday_before_publish_time(self): + StubDate.now = classmethod(lambda cls: datetime.datetime(2021, 2, 15, 8, 0, 0)) + date, _ = verify_date('2021-02-15', '') + self.assertEqual(date.date(), datetime.datetime(2021, 2, 12).date()) + diff --git a/backend/app/utils.py b/backend/app/utils.py index e3f38e6..b2f5522 100644 --- a/backend/app/utils.py +++ b/backend/app/utils.py @@ -165,19 +165,22 @@ def verify_date(date: str, ret_message: str) -> Tuple[datetime.datetime, str]: microsecond=0) logger.info('Current IST Datetime: %s; Request Datetime: %s; Next Publish: %s', curr_datetime, req_datetime, next_publish_time) + # Check for day + if (req_datetime.date() == curr_datetime.date() + and curr_datetime < next_publish_time): + logger.info("Today's data not yet present, returning yesterday's data!") + ret_message += "Today's data not yet published, returning yesterday's data. " + req_datetime -= datetime.timedelta(days=1) # Check for future date if req_datetime.date() > curr_datetime.date(): + logger.info("Future date, resetting it to today!") ret_message += "Time travel not yet invented! Returning latest available data. " req_datetime = curr_datetime # Check for weekend day_num = req_datetime.weekday() if day_num in [5, 6]: + logger.info("Weekend, switching it to Friday!") ret_message += "Markets are closed on weekends. Returning data for Friday. " req_datetime -= datetime.timedelta(days=day_num-4) # change req to Friday - # Check for day - if (req_datetime.date() == curr_datetime.date() - and curr_datetime < next_publish_time): - ret_message += "Today's data not yet published, returning yesterday's data. " - req_datetime -= datetime.timedelta(days=1) return req_datetime, ret_message