"""Fixtures for domain_classifier module tests.""" from datetime import datetime, timezone from unittest.mock import MagicMock import pytest @pytest.fixture def mock_session(): """Mock SQLAlchemy session.""" session = MagicMock() return session @pytest.fixture def mock_llm(): """Mock LLM instance.""" llm = MagicMock() mock_response = MagicMock() mock_response.content = '{"category": "News & Media", "subcategory": "Tech News", "confidence": 0.9, "reasoning": "Tech news website"}' llm.invoke.return_value = mock_response return llm @pytest.fixture def mock_research_resource(): """Mock ResearchResource.""" resource = MagicMock() resource.title = "Test Article" resource.url = "https://example.com/test" resource.content_preview = "This is a test preview content for the article." return resource @pytest.fixture def mock_domain_classification(): """Mock DomainClassification.""" classification = MagicMock() classification.id = 1 classification.domain = "example.com" classification.category = "News & Media" classification.subcategory = "Tech News" classification.confidence = 0.9 classification.reasoning = "Tech news website" classification.sample_titles = '["Test Article"]' classification.sample_count = 1 classification.created_at = datetime( 2024, 1, 1, 10, 0, 0, tzinfo=timezone.utc ) classification.updated_at = datetime( 2024, 1, 1, 10, 0, 0, tzinfo=timezone.utc ) # Configure to_dict to return an actual dict classification.to_dict.return_value = { "id": 1, "domain": "example.com", "category": "News & Media", "subcategory": "Tech News", "confidence": 0.9, "reasoning": "Tech news website", "sample_titles": '["Test Article"]', "sample_count": 1, "created_at": "2024-01-01T10:00:00+00:00", "updated_at": "2024-01-01T10:00:00+00:00", } return classification @pytest.fixture def sample_samples(): """Sample resource data.""" return [ { "title": "Article 1", "url": "https://example.com/1", "preview": "Preview 1", }, { "title": "Article 2", "url": "https://example.com/2", "preview": "Preview 2", }, ]