""" Shared test fixtures for all tests. Following FastAPI testing best practices. """ import pytest from fastapi.testclient import TestClient from httpx import AsyncClient, ASGITransport from src.main import app @pytest.fixture def client() -> TestClient: """ Synchronous test client for FastAPI. Use for simple tests that don't require async. """ return TestClient(app) @pytest.fixture async def async_client() -> AsyncClient: """ Async test client for FastAPI. Use for testing async endpoints and streaming. """ async with AsyncClient( transport=ASGITransport(app=app), base_url="http://test" ) as client: yield client @pytest.fixture def mock_chat_request() -> dict: """Standard chat completion request fixture.""" return { "model": "Tatlock", "messages": [ {"role": "user", "content": "Hello, world!"} ], "temperature": 0.7, "stream": False, } @pytest.fixture def mock_streaming_chat_request(mock_chat_request) -> dict: """Streaming chat completion request fixture.""" return {**mock_chat_request, "stream": True}