conftest.py•3.26 kB
"""
Pytest configuration and fixtures for elasticsearch_lib tests.
"""
import pytest
import sys
import os
from unittest.mock import Mock, patch
# Add the parent directory to the Python path so we can import the modules
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
@pytest.fixture
def mock_elasticsearch_client():
    """Mock Elasticsearch client for testing."""
    mock_client = Mock()
    mock_client.search.return_value = {
        "hits": {
            "hits": [],
            "total": {"value": 0}
        }
    }
    return mock_client
@pytest.fixture
def mock_client_manager():
    """Mock ElasticsearchClientManager for testing."""
    with patch('elasticsearch_lib.client.ElasticsearchClientManager') as mock:
        mock_instance = Mock()
        mock_instance.get_client.return_value = Mock()
        mock.return_value = mock_instance
        yield mock
@pytest.fixture
def sample_user_data():
    """Sample user data for testing."""
    return {
        "user_name": "John Doe",
        "user_email": "john.doe@example.com",
        "user_userlogonname": "jdoe",
        "user_contact": "555-1234",
        "user_contact2": "555-5678",
        "user_usertype": "requester",
        "dbid": "123"
    }
@pytest.fixture
def sample_elasticsearch_response():
    """Sample Elasticsearch response for testing."""
    return {
        "hits": {
            "hits": [
                {
                    "_source": {
                        "user_name": "John Doe",
                        "user_email": "john.doe@example.com",
                        "user_userlogonname": "jdoe",
                        "user_contact": "555-1234",
                        "user_contact2": "555-5678",
                        "user_usertype": "requester",
                        "dbid": "123"
                    },
                    "_score": 5.5
                },
                {
                    "_source": {
                        "user_name": "Jane Smith",
                        "user_email": "jane.smith@example.com",
                        "user_userlogonname": "jsmith",
                        "user_contact": "555-9876",
                        "user_contact2": "555-6543",
                        "user_usertype": "technician",
                        "dbid": "456"
                    },
                    "_score": 4.2
                }
            ],
            "total": {"value": 2}
        }
    }
@pytest.fixture(autouse=True)
def reset_singletons():
    """Reset singleton instances before each test."""
    # Note: The new elasticsearch_search_lib doesn't use singletons in the same way
    # This fixture is kept for compatibility but doesn't need to do anything
    yield
@pytest.fixture
def mock_entity_handler():
    """Mock entity handler for testing."""
    mock_handler = Mock()
    mock_entity = Mock()
    mock_entity.get_enabled_fields.return_value = [
        Mock(name="name", fuzziness="AUTO", boost=2.0),
        Mock(name="dbid", fuzziness=0, boost=1.0)
    ]
    mock_handler.entity = mock_entity
    mock_handler.search.return_value = []
    mock_handler.search_by_fields.return_value = []
    mock_handler.search_by_email.return_value = []
    return mock_handler