Spaces:
Running
Running
| """ | |
| Test configuration and fixtures for the text summarizer backend. | |
| """ | |
| import pytest | |
| import asyncio | |
| from typing import AsyncGenerator, Generator | |
| from httpx import AsyncClient | |
| from starlette.testclient import TestClient | |
| from app.main import app | |
| def event_loop() -> Generator[asyncio.AbstractEventLoop, None, None]: | |
| """Create an instance of the default event loop for the test session.""" | |
| loop = asyncio.get_event_loop_policy().new_event_loop() | |
| yield loop | |
| loop.close() | |
| def client() -> TestClient: | |
| """Create a test client for FastAPI app.""" | |
| return TestClient(app) | |
| async def async_client() -> AsyncGenerator[AsyncClient, None]: | |
| """Create an async test client for FastAPI app.""" | |
| async with AsyncClient(app=app, base_url="http://test") as ac: | |
| yield ac | |
| # Test data fixtures | |
| def sample_text() -> str: | |
| """Sample text for testing summarization.""" | |
| return """ | |
| Artificial intelligence (AI) is intelligence demonstrated by machines, | |
| in contrast to the natural intelligence displayed by humans and animals. | |
| Leading AI textbooks define the field as the study of "intelligent agents": | |
| any device that perceives its environment and takes actions that maximize | |
| its chance of successfully achieving its goals. The term "artificial intelligence" | |
| is often used to describe machines that mimic "cognitive" functions that humans | |
| associate with the human mind, such as "learning" and "problem solving". | |
| """ | |
| def sample_summary() -> str: | |
| """Expected summary for sample text.""" | |
| return "AI is machine intelligence that mimics human cognitive functions like learning and problem-solving." | |
| def mock_ollama_response() -> dict: | |
| """Mock response from Ollama API.""" | |
| return { | |
| "model": "llama3.1:8b", | |
| "response": "AI is machine intelligence that mimics human cognitive functions like learning and problem-solving.", | |
| "done": True, | |
| "context": [], | |
| "total_duration": 1234567890, | |
| "load_duration": 123456789, | |
| "prompt_eval_count": 50, | |
| "prompt_eval_duration": 123456789, | |
| "eval_count": 20, | |
| "eval_duration": 123456789 | |
| } | |
| def empty_text() -> str: | |
| """Empty text for testing validation.""" | |
| return "" | |
| def very_long_text() -> str: | |
| """Very long text for testing size limits.""" | |
| return "This is a test. " * 1000 # ~15KB of text | |
| # Environment fixtures | |
| def test_env_vars(monkeypatch): | |
| """Set test environment variables.""" | |
| monkeypatch.setenv("OLLAMA_MODEL", "llama3.1:8b") | |
| monkeypatch.setenv("OLLAMA_HOST", "http://127.0.0.1:11434") | |
| monkeypatch.setenv("OLLAMA_TIMEOUT", "30") | |
| monkeypatch.setenv("SERVER_HOST", "127.0.0.1") | |
| monkeypatch.setenv("SERVER_PORT", "8000") | |
| monkeypatch.setenv("LOG_LEVEL", "INFO") | |