Refactor: Move backend files to backend/ directory and split .gitignore
This commit is contained in:
44
backend/tests/test_logging_context.py
Normal file
44
backend/tests/test_logging_context.py
Normal file
@@ -0,0 +1,44 @@
|
||||
import logging
|
||||
import pytest
|
||||
import io
|
||||
import json
|
||||
from ea_chatbot.utils.logging import ContextLoggerAdapter, JsonFormatter
|
||||
|
||||
@pytest.fixture
|
||||
def json_log_capture():
|
||||
"""Fixture to capture JSON logs."""
|
||||
log_stream = io.StringIO()
|
||||
logger = logging.getLogger("test_context")
|
||||
logger.setLevel(logging.INFO)
|
||||
for handler in logger.handlers[:]:
|
||||
logger.removeHandler(handler)
|
||||
|
||||
handler = logging.StreamHandler(log_stream)
|
||||
handler.setFormatter(JsonFormatter())
|
||||
logger.addHandler(handler)
|
||||
return logger, log_stream
|
||||
|
||||
def test_context_logger_adapter_injects_metadata(json_log_capture):
|
||||
"""Test that ContextLoggerAdapter injects metadata into the log record."""
|
||||
logger, log_stream = json_log_capture
|
||||
adapter = ContextLoggerAdapter(logger, {"run_id": "123", "node_name": "test_node"})
|
||||
|
||||
adapter.info("test message")
|
||||
|
||||
data = json.loads(log_stream.getvalue())
|
||||
assert data["message"] == "test message"
|
||||
assert data["run_id"] == "123"
|
||||
assert data["node_name"] == "test_node"
|
||||
|
||||
def test_context_logger_adapter_override_metadata(json_log_capture):
|
||||
"""Test that extra metadata can be provided during call."""
|
||||
logger, log_stream = json_log_capture
|
||||
adapter = ContextLoggerAdapter(logger, {"run_id": "123"})
|
||||
|
||||
# Passing extra context via the 'extra' parameter in standard logging
|
||||
# Note: Our adapter should handle merging this.
|
||||
adapter.info("test message", extra={"node_name": "dynamic_node"})
|
||||
|
||||
data = json.loads(log_stream.getvalue())
|
||||
assert data["run_id"] == "123"
|
||||
assert data["node_name"] == "dynamic_node"
|
||||
Reference in New Issue
Block a user