"""Tests for agenda.""" import datetime from decimal import Decimal import pytest from agenda import ( get_next_bank_holiday, get_next_timezone_transition, next_economist, next_uk_fathers_day, next_uk_mothers_day, timedelta_display, uk_financial_year_end, ) from agenda.fx import get_gbpusd @pytest.fixture def mock_today() -> datetime.date: """Mock the current date for testing purposes.""" return datetime.date(2023, 10, 5) @pytest.fixture def mock_now() -> datetime.datetime: """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: datetime.date) -> None: """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: datetime.date) -> None: """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: datetime.date) -> 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: datetime.date) -> None: """Test get_next_bank_holiday function.""" next_holiday = get_next_bank_holiday(mock_today)[0] assert next_holiday.date == datetime.date(2023, 12, 25) assert next_holiday.title == "Christmas Day" def test_get_gbpusd(mock_now: datetime.datetime) -> None: """Test get_gbpusd function.""" gbpusd = get_gbpusd() assert isinstance(gbpusd, Decimal) # You can add more assertions based on your specific use case. def test_next_economist(mock_today: datetime.date) -> None: """Test next_economist function.""" next_publication = next_economist(mock_today) assert next_publication == datetime.date(2023, 10, 5) def test_uk_financial_year_end() -> None: """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() -> None: """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.