"""Fixtures for config module tests."""

import pytest
from unittest.mock import MagicMock, patch


@pytest.fixture
def mock_settings_snapshot():
    """Sample settings snapshot for testing."""
    return {
        "llm.provider": "openai",
        "llm.model": "gpt-4",
        "search.tool": "searxng",
        "search.max_results": 10,
        "search.snippets_only": True,
    }


@pytest.fixture
def clean_thread_local():
    """Clean thread-local state before and after tests."""
    from local_deep_research.config.thread_settings import _thread_local

    # Clean before
    if hasattr(_thread_local, "settings_context"):
        delattr(_thread_local, "settings_context")

    yield

    # Clean after
    if hasattr(_thread_local, "settings_context"):
        delattr(_thread_local, "settings_context")


@pytest.fixture
def mock_platformdirs(tmp_path):
    """Mock platformdirs to use temp directory."""
    with patch("platformdirs.user_data_dir", return_value=str(tmp_path)):
        yield tmp_path


@pytest.fixture
def mock_env_data_dir(tmp_path, monkeypatch):
    """Set LDR_DATA_DIR environment variable."""
    monkeypatch.setenv("LDR_DATA_DIR", str(tmp_path))
    yield tmp_path


@pytest.fixture
def mock_settings_context():
    """Mock settings context object."""
    context = MagicMock()
    context.get_setting.return_value = "test_value"
    return context
