from unittest.mock import MagicMock import pytest from src.utils.models import AssessmentDetails, Citation, Evidence, JudgeAssessment, SearchResult @pytest.fixture def mock_search_handler(): """Return a mock search handler that returns fake evidence.""" mock = MagicMock() async def mock_execute(query, max_results=10): return SearchResult( query=query, evidence=[ Evidence( content=f"Evidence content for {query}", citation=Citation( source="pubmed", title=f"Study on {query}", url="https://pubmed.example.com/123", date="2025-01-01", authors=["Doe J"], ), ) ], sources_searched=["pubmed"], total_found=1, errors=[], ) mock.execute = mock_execute return mock @pytest.fixture def mock_judge_handler(): """Return a mock judge that always says 'synthesize'.""" mock = MagicMock() async def mock_assess(question, evidence, iteration=1, max_iterations=10): return JudgeAssessment( sufficient=True, confidence=0.9, recommendation="synthesize", details=AssessmentDetails( mechanism_score=8, mechanism_reasoning="Strong mechanism found in mock data", clinical_evidence_score=7, clinical_reasoning="Good clinical evidence in mock data", drug_candidates=["MockDrug A"], key_findings=["Finding 1", "Finding 2"], ), reasoning="Evidence is sufficient for synthesis.", next_search_queries=[], ) mock.assess = mock_assess return mock