Files
tatlock/tests/conftest.py
T
jpmschweitzerandClaude 8b6cff2920 Add application setup and test infrastructure
Application Configuration:
- FastAPI application factory pattern
- CORS middleware for cross-origin support
- Global exception handlers for consistent error responses
  - AppException handler for custom errors
  - RequestValidationError handler for Pydantic validation
  - General exception handler for unexpected errors
- Lifespan management for startup/shutdown events
- Router registration for all API endpoints
- OpenAPI schema with interactive documentation

Models Service:
- Integration with ModelRegistry
- List available models endpoint
- Model capability discovery

Test Infrastructure:
- Pytest configuration with async support
- Test client fixtures for sync and async testing
- Comprehensive main application tests (14 tests):
  - App creation and metadata
  - Router registration verification
  - CORS middleware and functionality
  - Exception handler registration and behavior
  - Lifespan event handling
  - OpenAPI schema generation
  - Documentation accessibility
  - Validation error handling
- Models API tests (2 tests)
- Total: 95 tests, 78.95% coverage

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-06 19:39:02 +01:00

53 lines
1.1 KiB
Python

"""
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}