"""Tests for ChargePointLoggerAdapter logging behaviour."""

from __future__ import annotations

import io
import logging

import pytest

pytest.importorskip("websockets")

from pipelet_ocpp_broker import ChargePointLoggerAdapter


def test_chargepoint_logger_adapter_escapes_percent_signs():
    """Ensure percent characters in the ID don't break %-style logging."""

    stream = io.StringIO()
    handler = logging.StreamHandler(stream)
    handler.setFormatter(logging.Formatter("%(message)s"))

    logger = logging.getLogger("test.chargepoint_logger")
    logger.setLevel(logging.INFO)
    logger.addHandler(handler)
    logger.propagate = False

    adapter = ChargePointLoggerAdapter(logger, {"chargepoint_id": "CP%2F42"})
    adapter.info("Incoming request from %s: GET %s", "peer", "/ws")

    handler.flush()
    output = stream.getvalue()

    logger.removeHandler(handler)

    assert "CP%2F42" in output
