import datetime from decimal import Decimal import pytest from agenda import ( get_gbpusd, get_next_bank_holiday, get_next_timezone_transition, next_economist, next_uk_fathers_day, next_uk_mothers_day, timedelta_display, uk_financial_year_end, xmas_day, ) @pytest.fixture def mock_today(): # Mock the current date for testing purposes return datetime.date(2023, 10, 5) @pytest.fixture def mock_now(): # Mock the current date and time for testing purposes return datetime.datetime(2023, 10, 5, 12, 0, 0) def test_next_uk_mothers_day(mock_today): # Test next_uk_mothers_day function next_mothers_day = next_uk_mothers_day(mock_today) assert next_mothers_day == datetime.date(2024, 4, 21) def test_next_uk_fathers_day(mock_today): # Test next_uk_fathers_day function next_fathers_day = next_uk_fathers_day(mock_today) assert next_fathers_day == datetime.date(2024, 6, 21) def test_get_next_timezone_transition(mock_now) -> None: # Test get_next_timezone_transition function next_transition = get_next_timezone_transition(mock_now, "Europe/London") assert next_transition == datetime.date(2023, 10, 29) def test_get_next_bank_holiday(mock_today) -> None: # Test get_next_bank_holiday function next_holiday = get_next_bank_holiday(mock_today) assert next_holiday["date"] == datetime.date(2023, 12, 25) assert next_holiday["title"] == "Christmas Day" def test_get_gbpusd(mock_now): # Test get_gbpusd function gbpusd = get_gbpusd(mock_now) assert isinstance(gbpusd, Decimal) # You can add more assertions based on your specific use case. def test_next_economist(mock_today): # Test next_economist function next_publication = next_economist(mock_today) assert next_publication == datetime.date(2023, 10, 5) def test_xmas_day(): # Test xmas_day function christmas = xmas_day(datetime.date(2023, 12, 25)) assert christmas == datetime.date(2023, 12, 25) def test_uk_financial_year_end(): # Test uk_financial_year_end function financial_year_end = uk_financial_year_end(datetime.date(2023, 4, 1)) assert financial_year_end == datetime.date(2023, 4, 5) def test_timedelta_display(): # Test timedelta_display function delta = datetime.timedelta(days=2, hours=5, minutes=30) display = timedelta_display(delta) assert display == " 2 days 5 hrs 30 mins" # You can add more test cases for other functions as needed.