"""Pytest configuration and fixtures.""" import pytest from datetime import datetime from src.email_providers.base import Email, Attachment from src.utils.config import load_config, load_categories @pytest.fixture def config(): """Load test configuration.""" return load_config() @pytest.fixture def categories(): """Load test categories.""" return load_categories() @pytest.fixture def sample_email(): """Create a sample email for testing.""" return Email( id='test-1', subject='Meeting at 3pm today', sender='john@company.com', sender_name='John Doe', date=datetime.now(), body='Let\'s discuss the Q4 project. Attached is the proposal.', body_snippet='Let\'s discuss the Q4 project.', has_attachments=True, attachments=[ Attachment( filename='proposal.pdf', mime_type='application/pdf', size=102400 ) ], headers={'Subject': 'Meeting at 3pm today'}, labels=[], is_read=False, provider='gmail' ) @pytest.fixture def sample_emails(): """Create multiple sample emails.""" emails = [] # Auth email emails.append(Email( id='auth-1', subject='Verify your account', sender='noreply@bank.com', body='Your verification code is 123456', body_snippet='Your verification code is 123456', date=datetime.now(), provider='gmail' )) # Invoice email emails.append(Email( id='invoice-1', subject='Invoice #INV-2024-001', sender='billing@vendor.com', body='Please find attached invoice for October services.', body_snippet='Please find attached invoice', has_attachments=True, attachments=[ Attachment('invoice.pdf', 'application/pdf', 50000) ], date=datetime.now(), provider='gmail' )) # Newsletter emails.append(Email( id='newsletter-1', subject='Weekly Digest - Oct 21', sender='newsletter@blog.com', body='This week in tech... Click here to read more.', body_snippet='This week in tech', date=datetime.now(), provider='gmail' )) # Work email emails.append(Email( id='work-1', subject='Project deadline extended', sender='manager@company.com', sender_name='Jane Manager', body='Team, the Q4 project deadline has been extended to Nov 15.', body_snippet='Project deadline has been extended', date=datetime.now(), provider='gmail' )) # Personal email emails.append(Email( id='personal-1', subject='Dinner this weekend?', sender='friend@gmail.com', sender_name='Alex', body='Hey! Want to grab dinner this weekend?', body_snippet='Want to grab dinner', date=datetime.now(), provider='gmail' )) return emails