fix: monday before publish time to return friday
- add relevant test to ensure doesn't happen again - fix test_today_before_publish_time Signed-off-by: Ameya Shenoy <shenoy.ameya@gmail.com>
This commit is contained in:
parent
193bdb1112
commit
72bd0a1a07
2 changed files with 15 additions and 6 deletions
|
|
@ -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())
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue