|
|
"""Shared pytest fixtures for all tests.""" |
|
|
|
|
|
from unittest.mock import AsyncMock |
|
|
|
|
|
import pytest |
|
|
|
|
|
from src.utils.models import Citation, Evidence |
|
|
|
|
|
|
|
|
@pytest.fixture |
|
|
def mock_httpx_client(mocker): |
|
|
"""Mock httpx.AsyncClient for API tests.""" |
|
|
mock = mocker.patch("httpx.AsyncClient") |
|
|
mock.return_value.__aenter__ = AsyncMock(return_value=mock.return_value) |
|
|
mock.return_value.__aexit__ = AsyncMock(return_value=None) |
|
|
return mock |
|
|
|
|
|
|
|
|
@pytest.fixture |
|
|
def mock_llm_response(): |
|
|
"""Factory fixture for mocking LLM responses.""" |
|
|
|
|
|
def _mock(content: str): |
|
|
return AsyncMock(return_value=content) |
|
|
|
|
|
return _mock |
|
|
|
|
|
|
|
|
@pytest.fixture |
|
|
def sample_evidence(): |
|
|
"""Sample Evidence objects for testing.""" |
|
|
return [ |
|
|
Evidence( |
|
|
content="Metformin shows neuroprotective properties in Alzheimer's models...", |
|
|
citation=Citation( |
|
|
source="pubmed", |
|
|
title="Metformin and Alzheimer's Disease: A Systematic Review", |
|
|
url="https://pubmed.ncbi.nlm.nih.gov/12345678/", |
|
|
date="2024-01-15", |
|
|
authors=["Smith J", "Johnson M"], |
|
|
), |
|
|
relevance=0.85, |
|
|
), |
|
|
Evidence( |
|
|
content="Drug repurposing offers faster path to treatment...", |
|
|
citation=Citation( |
|
|
source="pubmed", |
|
|
title="Drug Repurposing Strategies", |
|
|
url="https://example.com/drug-repurposing", |
|
|
date="Unknown", |
|
|
authors=[], |
|
|
), |
|
|
relevance=0.72, |
|
|
), |
|
|
] |
|
|
|