"""Pytest configuration and shared fixtures for Library Desk tests.""" import pytest import pytest_asyncio from typing import AsyncGenerator # Test configuration pytest_plugins = ("pytest_asyncio",) @pytest.fixture def test_user() -> str: """Default test user.""" return "test_user" @pytest.fixture def neo4j_test_uri() -> str: """Test Neo4j URI.""" return "bolt://neo4j:7687" @pytest.fixture def neo4j_test_auth() -> tuple: """Test Neo4j authentication.""" return ("neo4j", "test_password") @pytest.fixture def qdrant_test_url() -> str: """Test Qdrant URL.""" return "http://qdrant:6333" @pytest.fixture def wikijs_test_config() -> dict: """Test Wiki.js configuration.""" return { "base_url": "http://wiki:3000", "api_key": "test_api_key" } @pytest.fixture def searxng_test_url() -> str: """Test SearXNG URL.""" return "http://searxng:8080" @pytest.fixture def ollama_test_config() -> dict: """Test Ollama configuration.""" return { "base_url": "http://ollama:11434", "model": "nomic-embed-text" } @pytest.fixture def redis_test_url() -> str: """Test Redis URL.""" return "redis://redis-shared:6379/4" @pytest.fixture def sample_document() -> dict: """Sample document for testing.""" return { "id": "test_doc_1", "title": "Test Document", "content": "This is a test document for unit testing.", "metadata": { "source": "test", "author": "test_user" } } @pytest.fixture def sample_chunks() -> list: """Sample document chunks for testing.""" return [ { "content": "First chunk of text.", "metadata": {"chunk_index": 0} }, { "content": "Second chunk of text.", "metadata": {"chunk_index": 1} }, { "content": "Third chunk of text.", "metadata": {"chunk_index": 2} } ] @pytest.fixture def sample_embeddings() -> list: """Sample embeddings for testing (768-dimensional for nomic-embed-text).""" import random random.seed(42) # Reproducible embeddings # Generate 3 sample 768-dimensional embeddings return [ [random.random() for _ in range(768)], [random.random() for _ in range(768)], [random.random() for _ in range(768)] ]