"""Unit tests for the date/datetime related utils.""" import datetime import pytest from analytics.constants.date import DATE_FIELDS, END_DATE, START_DATE from analytics.constants.error import ( ERROR_INCORRECT_DATE_FORMAT, ERROR_REQUIRED_DATE, ERROR_START_DATE_GREATER_THAN_END_DATE, ) from analytics.utils import date as date_utils def test_get_prior_date_intervals(): """Test get_prior_date_intervals.""" start_period, end_period = date_utils.get_prior_date_intervals( datetime.date(2018, 10, 24) ) assert start_period == { "start_date": datetime.date(2018, 10, 11), "end_date": datetime.date(2018, 10, 17), } assert end_period == { "start_date": datetime.date(2018, 10, 18), "end_date": datetime.date(2018, 10, 24), } @pytest.mark.parametrize( "start_date, end_date, result", [ ( "2022-01-05", "2022-01-01", (ERROR_START_DATE_GREATER_THAN_END_DATE, START_DATE), ), ("2022-01-01", "", (ERROR_REQUIRED_DATE, END_DATE)), ("", "2022-01-10", (ERROR_REQUIRED_DATE, START_DATE)), ("adsas", "sd", (ERROR_INCORRECT_DATE_FORMAT, DATE_FIELDS)), ], ) def test_validate_dates(start_date, end_date, result): with pytest.raises(Exception) as exc_info: date_utils.validate_dates(start_date, end_date) assert exc_info.value.args == result