2021-03-10 13:55:06 +00:00
|
|
|
from datetime import date, datetime
|
2017-07-18 18:21:35 +01:00
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
2019-08-28 14:27:08 +01:00
|
|
|
from app.dao.date_util import (
|
|
|
|
|
get_april_fools,
|
2021-03-10 13:55:06 +00:00
|
|
|
get_financial_year,
|
2019-08-28 14:27:08 +01:00
|
|
|
get_financial_year_for_datetime,
|
2021-03-10 13:55:06 +00:00
|
|
|
get_month_start_and_end_date_in_utc,
|
2019-08-28 14:27:08 +01:00
|
|
|
)
|
2017-04-26 14:16:47 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_get_financial_year():
|
|
|
|
|
start, end = get_financial_year(2000)
|
2022-11-10 12:33:25 -05:00
|
|
|
assert str(start) == '2000-04-01 05:00:00'
|
|
|
|
|
assert str(end) == '2001-04-01 04:59:59.999999'
|
2017-04-26 14:16:47 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
def test_get_april_fools():
|
|
|
|
|
april_fools = get_april_fools(2016)
|
2022-11-10 12:33:25 -05:00
|
|
|
assert str(april_fools) == '2016-04-01 04:00:00'
|
2017-04-26 14:16:47 +01:00
|
|
|
assert april_fools.tzinfo is None
|
2017-07-18 18:21:35 +01:00
|
|
|
|
|
|
|
|
|
2017-08-10 16:29:13 +01:00
|
|
|
@pytest.mark.parametrize("month, year, expected_start, expected_end", [
|
2022-11-10 12:33:25 -05:00
|
|
|
(7, 2017, datetime(2017, 7, 1, 4, 00, 00), datetime(2017, 8, 1, 3, 59, 59, 99999)),
|
|
|
|
|
(2, 2016, datetime(2016, 2, 1, 5, 00, 00), datetime(2016, 3, 1, 4, 59, 59, 99999)),
|
|
|
|
|
(2, 2017, datetime(2017, 2, 1, 5, 00, 00), datetime(2017, 3, 1, 4, 59, 59, 99999)),
|
|
|
|
|
(9, 2018, datetime(2018, 9, 1, 4, 00, 00), datetime(2018, 10, 1, 3, 59, 59, 99999)),
|
|
|
|
|
(12, 2019, datetime(2019, 12, 1, 5, 00, 00), datetime(2020, 1, 1, 4, 59, 59, 99999))
|
2017-08-10 16:29:13 +01:00
|
|
|
])
|
|
|
|
|
def test_get_month_start_and_end_date_in_utc(month, year, expected_start, expected_end):
|
2017-07-18 18:21:35 +01:00
|
|
|
month_year = datetime(year, month, 10, 13, 30, 00)
|
2017-08-10 16:29:13 +01:00
|
|
|
result = get_month_start_and_end_date_in_utc(month_year)
|
2017-07-25 17:38:53 +01:00
|
|
|
assert result[0] == expected_start
|
|
|
|
|
assert result[1] == expected_end
|
2019-08-28 14:27:08 +01:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize("dt, fy", [
|
2022-11-10 12:33:25 -05:00
|
|
|
(datetime(2018, 4, 1, 4, 0, 0), 2018),
|
|
|
|
|
(datetime(2019, 4, 1, 3, 59, 59), 2018),
|
|
|
|
|
(datetime(2019, 4, 1, 4, 0, 0), 2019),
|
2019-08-30 17:16:43 +01:00
|
|
|
(date(2019, 3, 31), 2018),
|
2022-11-10 12:33:25 -05:00
|
|
|
(date(2019, 4, 2), 2019), # date() gives midnight UTC, which is the day before in ET
|
2019-08-28 14:27:08 +01:00
|
|
|
])
|
|
|
|
|
def test_get_financial_year_for_datetime(dt, fy):
|
|
|
|
|
assert get_financial_year_for_datetime(dt) == fy
|