"""Verify that bootstrap correctly wires the reranker when the setting is enabled."""

from unittest.mock import patch

import pytest


def test_get_reranker_returns_none_when_disabled():
    """get_reranker() must return None when reranker_enabled is False."""
    with patch("app.shared.bootstrap._build_binary_store"), \
         patch("app.shared.bootstrap._build_vector_index"):
        from app.shared import bootstrap
        bootstrap.get_reranker.cache_clear()

        with patch("app.shared.bootstrap.settings") as mock_settings:
            mock_settings.reranker_enabled = False
            mock_settings.reranker_base_url = ""
            result = bootstrap.get_reranker()

        bootstrap.get_reranker.cache_clear()
        assert result is None


def test_get_reranker_returns_instance_when_enabled():
    """get_reranker() must return an OpenAICompatibleReranker when enabled."""
    from app.shared import bootstrap
    bootstrap.get_reranker.cache_clear()

    with patch("app.shared.bootstrap.settings") as mock_settings:
        mock_settings.reranker_enabled = True
        mock_settings.reranker_base_url = "http://localhost:8082"
        mock_settings.reranker_model = "BAAI/bge-reranker-v2-m3"
        mock_settings.reranker_api_key = ""
        mock_settings.reranker_top_k = 5
        result = bootstrap.get_reranker()

    bootstrap.get_reranker.cache_clear()
    from app.infrastructure.vectorstore.cross_encoder_reranker import OpenAICompatibleReranker
    assert isinstance(result, OpenAICompatibleReranker)
