"""
Fixtures for embedding provider tests.
"""

import pytest
from unittest.mock import Mock


@pytest.fixture
def mock_settings_snapshot():
    """Create a mock settings snapshot for testing."""
    return {
        "embeddings.ollama.model": "nomic-embed-text",
        "llm.ollama.url": "http://localhost:11434",
        "embeddings.openai.api_key": "test-openai-key",
        "embeddings.openai.model": "text-embedding-3-small",
    }


@pytest.fixture
def mock_empty_settings():
    """Create empty settings snapshot (no API keys configured)."""
    return {}


@pytest.fixture
def mock_ollama_models_response():
    """Create a mock Ollama models list response."""
    return {
        "models": [
            {"name": "nomic-embed-text:latest", "size": 274124704},
            {"name": "all-minilm:latest", "size": 45418096},
            {"name": "mxbai-embed-large:latest", "size": 669682064},
        ]
    }


@pytest.fixture
def mock_embedding_vectors():
    """Create mock embedding vectors for testing."""
    return [
        [0.1, 0.2, 0.3, 0.4, 0.5] * 76,  # 380-dimensional embedding
        [0.2, 0.3, 0.4, 0.5, 0.6] * 76,
    ]


@pytest.fixture
def mock_langchain_embeddings():
    """Create a mock LangChain Embeddings instance."""
    embeddings = Mock()
    embeddings.embed_documents.return_value = [
        [0.1, 0.2, 0.3] * 128,
        [0.2, 0.3, 0.4] * 128,
    ]
    embeddings.embed_query.return_value = [0.1, 0.2, 0.3] * 128
    return embeddings
