"""Unit tests for lib/api_logger.py with OpenTelemetry exporters mocked out."""

from unittest.mock import MagicMock

import pytest

import lib.api_logger as al

pytestmark = pytest.mark.unit


@pytest.fixture(autouse=True)
def patch_otlp(mocker):
    mocker.patch.object(al, "OTLPLogExporter", return_value=MagicMock())
    mocker.patch.object(al, "BatchLogRecordProcessor", return_value=MagicMock())
    mocker.patch.object(al, "LoggerProvider", return_value=MagicMock())
    mocker.patch.object(al, "LoggingHandler", return_value=MagicMock())
    mocker.patch.object(al, "set_logger_provider")
    mocker.patch.object(al.Resource, "create", return_value=MagicMock())


def test_logger_initializes_with_handlers(tmp_path):
    log_file = tmp_path / "app.log"
    logger = al.APILogger(log_file=str(log_file), environment="prod")
    assert logger.logger.name == "cqa"
    al.set_logger_provider.assert_called_once()


def test_otlp_uses_endpoint_for_environment(tmp_path):
    log_file = tmp_path / "app.log"
    al.APILogger(log_file=str(log_file), environment="dev")
    # endpoint chosen from OTEL_ENDPOINTS for the dev environment
    _, kwargs = al.OTLPLogExporter.call_args
    assert "dev" in kwargs["endpoint"]
