83 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
"""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.
 |