feat: implement mvp with email-first login flow and langgraph architecture
This commit is contained in:
67
tests/test_logging_core.py
Normal file
67
tests/test_logging_core.py
Normal file
@@ -0,0 +1,67 @@
|
||||
import logging
|
||||
import pytest
|
||||
from ea_chatbot.utils.logging import get_logger
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def reset_logging():
|
||||
"""Reset the ea_chatbot logger handlers before each test."""
|
||||
logger = logging.getLogger("ea_chatbot")
|
||||
# Remove all existing handlers
|
||||
for handler in logger.handlers[:]:
|
||||
logger.removeHandler(handler)
|
||||
yield
|
||||
# Also clean up after test
|
||||
for handler in logger.handlers[:]:
|
||||
logger.removeHandler(handler)
|
||||
|
||||
def test_get_logger_singleton():
|
||||
"""Test that get_logger returns the same logger instance for the same name."""
|
||||
logger1 = get_logger("test_logger")
|
||||
logger2 = get_logger("test_logger")
|
||||
assert logger1 is logger2
|
||||
|
||||
def test_get_logger_rich_handler():
|
||||
"""Test that get_logger configures a RichHandler on root."""
|
||||
get_logger("test_rich")
|
||||
root = logging.getLogger("ea_chatbot")
|
||||
# Check if any handler is a RichHandler
|
||||
handler_names = [h.__class__.__name__ for h in root.handlers]
|
||||
assert "RichHandler" in handler_names
|
||||
|
||||
def test_get_logger_level():
|
||||
"""Test that get_logger sets the correct log level."""
|
||||
logger = get_logger("test_level", level="DEBUG")
|
||||
assert logger.level == logging.DEBUG
|
||||
|
||||
def test_json_formatter_serializes_dict():
|
||||
"""Test that JsonFormatter serializes log records to JSON."""
|
||||
from ea_chatbot.utils.logging import JsonFormatter
|
||||
import json
|
||||
|
||||
formatter = JsonFormatter()
|
||||
record = logging.LogRecord(
|
||||
name="test", level=logging.INFO, pathname="test.py", lineno=10,
|
||||
msg="test message", args=(), exc_info=None
|
||||
)
|
||||
formatted = formatter.format(record)
|
||||
data = json.loads(formatted)
|
||||
|
||||
assert data["message"] == "test message"
|
||||
assert data["level"] == "INFO"
|
||||
assert "timestamp" in data
|
||||
|
||||
def test_get_logger_file_handler(tmp_path):
|
||||
"""Test that get_logger configures a file handler on root."""
|
||||
log_file = tmp_path / "test.json"
|
||||
logger = get_logger("test_file", log_file=str(log_file))
|
||||
|
||||
root = logging.getLogger("ea_chatbot")
|
||||
handler_names = [h.__class__.__name__ for h in root.handlers]
|
||||
assert "RotatingFileHandler" in handler_names
|
||||
|
||||
logger.info("file log test")
|
||||
|
||||
# Check if file exists and has content
|
||||
assert log_file.exists()
|
||||
content = log_file.read_text()
|
||||
assert "file log test" in content
|
||||
Reference in New Issue
Block a user