Skip to main content
Glama
test_date_utils.py4.38 kB
"""Tests for date utilities.""" from datetime import date, timedelta import pytest from tcmb_mcp.core.exceptions import TCMBDateRangeError from tcmb_mcp.utils.date_utils import ( format_date, get_date_range, parse_date, validate_date_range, ) class TestParseDate: """Tests for parse_date function.""" def test_iso_format(self): """Test ISO format parsing.""" result = parse_date("2024-01-15") assert result == date(2024, 1, 15) def test_turkish_format(self): """Test Turkish format (DD.MM.YYYY) parsing.""" result = parse_date("15.01.2024") assert result == date(2024, 1, 15) def test_slash_format(self): """Test slash format (DD/MM/YYYY) parsing.""" result = parse_date("15/01/2024") assert result == date(2024, 1, 15) def test_today_keyword(self): """Test 'today' keyword.""" result = parse_date("today") assert result == date.today() def test_bugun_keyword(self): """Test 'bugün' keyword.""" result = parse_date("bugün") assert result == date.today() def test_yesterday_keyword(self): """Test 'yesterday' keyword.""" result = parse_date("yesterday") assert result == date.today() - timedelta(days=1) def test_dun_keyword(self): """Test 'dün' keyword.""" result = parse_date("dün") assert result == date.today() - timedelta(days=1) def test_invalid_format(self): """Test invalid date format raises error.""" with pytest.raises(TCMBDateRangeError): parse_date("invalid-date") class TestFormatDate: """Tests for format_date function.""" def test_iso_format(self): """Test ISO format output.""" result = format_date(date(2024, 1, 15), "iso") assert result == "2024-01-15" def test_turkish_format(self): """Test Turkish format output.""" result = format_date(date(2024, 1, 15), "turkish") assert result == "15.01.2024" def test_tcmb_folder_format(self): """Test TCMB folder format (YYYYMM).""" result = format_date(date(2024, 1, 15), "tcmb_folder") assert result == "202401" def test_tcmb_file_format(self): """Test TCMB file format (DDMMYYYY).""" result = format_date(date(2024, 1, 15), "tcmb_file") assert result == "15012024" class TestValidateDateRange: """Tests for validate_date_range function.""" def test_valid_range(self): """Test valid date range passes.""" start = date(2024, 1, 1) end = date(2024, 1, 31) validate_date_range(start, end) # Should not raise def test_start_before_min_date(self): """Test start date before minimum raises error.""" start = date(1990, 1, 1) end = date(1990, 1, 31) with pytest.raises(TCMBDateRangeError, match="1996"): validate_date_range(start, end) def test_end_in_future(self): """Test end date in future raises error.""" start = date.today() end = date.today() + timedelta(days=30) with pytest.raises(TCMBDateRangeError, match="bugünden sonra"): validate_date_range(start, end) def test_start_after_end(self): """Test start after end raises error.""" start = date(2024, 2, 1) end = date(2024, 1, 1) with pytest.raises(TCMBDateRangeError, match="sonra olamaz"): validate_date_range(start, end) def test_range_too_large(self): """Test range larger than max_days raises error.""" start = date(2023, 1, 1) end = date(2024, 1, 2) # 366 days, exceeds max_days=365 with pytest.raises(TCMBDateRangeError, match="365 gün"): validate_date_range(start, end, max_days=365) class TestGetDateRange: """Tests for get_date_range function.""" def test_single_day(self): """Test single day range.""" start = end = date(2024, 1, 15) result = get_date_range(start, end) assert result == [date(2024, 1, 15)] def test_week_range(self): """Test week range.""" start = date(2024, 1, 15) end = date(2024, 1, 21) result = get_date_range(start, end) assert len(result) == 7 assert result[0] == start assert result[-1] == end

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ofurkanuygur/tcmb_mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server