Skip to main content
Glama
test_models.py4.19 kB
"""Tests for email models.""" from datetime import datetime, timezone import pytest from mcp_gmail.models import ( CategorySummary, DailySummary, Email, EmailAddress, EmailAttachment, EmailSummary, InboxStats, SearchQuery, ) class TestEmailAddress: """Tests for EmailAddress model.""" def test_email_only(self): """Test email address without name.""" addr = EmailAddress(email="test@example.com") assert str(addr) == "test@example.com" def test_email_with_name(self): """Test email address with display name.""" addr = EmailAddress(email="test@example.com", name="Test User") assert str(addr) == "Test User <test@example.com>" class TestEmail: """Tests for Email model.""" def test_minimal_email(self): """Test email with minimal required fields.""" email = Email( id="123", thread_id="456", sender=EmailAddress(email="sender@test.com"), date=datetime.now(timezone.utc), ) assert email.id == "123" assert email.subject == "(No Subject)" assert email.is_read is False assert email.categories == [] def test_full_email(self): """Test email with all fields.""" email = Email( id="123", thread_id="456", subject="Test Subject", snippet="This is a test...", body_text="Full body text", sender=EmailAddress(email="sender@test.com", name="Sender"), to=[EmailAddress(email="recipient@test.com")], date=datetime.now(timezone.utc), labels=["INBOX", "IMPORTANT"], is_read=True, is_starred=True, is_important=True, categories=["work", "action_required"], priority="high", ) assert email.subject == "Test Subject" assert email.is_read is True assert "work" in email.categories class TestSearchQuery: """Tests for SearchQuery model.""" def test_default_query(self): """Test default search query.""" query = SearchQuery() assert query.max_results == 20 assert query.is_unread is None def test_custom_query(self): """Test custom search parameters.""" query = SearchQuery( query="from:test@example.com", is_unread=True, max_results=50, labels=["Work"], ) assert query.query == "from:test@example.com" assert query.is_unread is True assert query.max_results == 50 class TestDailySummary: """Tests for DailySummary model.""" def test_empty_summary(self): """Test empty daily summary.""" summary = DailySummary( generated_at=datetime.now(timezone.utc), period_start=datetime.now(timezone.utc), period_end=datetime.now(timezone.utc), total_emails=0, unread_emails=0, ) assert summary.categories == [] assert summary.uncategorized == [] def test_summary_with_categories(self): """Test summary with categorized emails.""" email = EmailSummary( id="1", thread_id="1", subject="Test", snippet="...", sender=EmailAddress(email="test@test.com"), date=datetime.now(timezone.utc), is_read=False, is_starred=False, categories=["navy"], ) cat_summary = CategorySummary( category_key="navy", category_name="Navy", priority="high", total_count=1, unread_count=1, emails=[email], ) summary = DailySummary( generated_at=datetime.now(timezone.utc), period_start=datetime.now(timezone.utc), period_end=datetime.now(timezone.utc), total_emails=1, unread_emails=1, categories=[cat_summary], ) assert len(summary.categories) == 1 assert summary.categories[0].category_key == "navy"

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/murphy360/mcp_gmail'

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