"""
Test for _is_prompt_management_model early exit optimization.

Verifies that the early return for models without "/" doesn't break
prompt management model detection.
"""



from litellm import Router


def test_is_prompt_management_model_optimization():
    """
    Test early exit optimization works correctly for all cases.

    Optimization: Check if "/" in model name before calling expensive
    get_model_list(). This short-circuits 99% of requests that use
    standard model names like "gpt-5.5", "claude-3", etc.

    Tests both negative (early exit) and positive (actual detection) cases.
    """
    import litellm

    # Test 1: Standard models without "/" -> early exit returns False
    router = Router(
        model_list=[
            {
                "model_name": "gpt-5.5",
                "litellm_params": {"model": "gpt-5.5"},
            },
            {
                "model_name": "claude-3",
                "litellm_params": {"model": "anthropic/claude-sonnet-4-5-20250929"},
            },
        ]
    )

    assert router._is_prompt_management_model("gpt-5.5") is False
    assert router._is_prompt_management_model("claude-3") is False

    # Test 2: Models with "/" but not in model_list -> False after check
    assert router._is_prompt_management_model("unknown/model") is False

    # Test 3: Actual prompt management models ARE detected (critical positive case)
    original_callbacks = litellm._known_custom_logger_compatible_callbacks.copy()
    if "langfuse_prompt" not in litellm._known_custom_logger_compatible_callbacks:
        litellm._known_custom_logger_compatible_callbacks.append("langfuse_prompt")

    try:
        router_with_prompt = Router(
            model_list=[
                {
                    "model_name": "my-langfuse-prompt/test_id",
                    "litellm_params": {"model": "langfuse_prompt/actual_prompt_id"},
                },
            ]
        )

        # Critical: Must still detect prompt management models correctly
        assert (
            router_with_prompt._is_prompt_management_model("my-langfuse-prompt/test_id")
            is True
        )

    finally:
        litellm._known_custom_logger_compatible_callbacks = original_callbacks
