Skip to content

Commit fa9dfe8

Browse files
app_logger
1 parent 7085a79 commit fa9dfe8

1 file changed

Lines changed: 116 additions & 0 deletions

File tree

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,116 @@
1+
# test_app_logger.py
2+
3+
import logging
4+
import json
5+
import pytest
6+
from unittest.mock import patch, MagicMock
7+
8+
from src.backend.common.logger.app_logger import AppLogger, LogLevel # replace 'your_module_name' with the correct one
9+
10+
11+
@pytest.fixture
12+
def logger_name():
13+
return "test_logger"
14+
15+
16+
@pytest.fixture
17+
def app_logger(logger_name):
18+
return AppLogger(logger_name)
19+
20+
21+
def test_log_level_constants():
22+
assert LogLevel.NONE == logging.NOTSET
23+
assert LogLevel.DEBUG == logging.DEBUG
24+
assert LogLevel.INFO == logging.INFO
25+
assert LogLevel.WARNING == logging.WARNING
26+
assert LogLevel.ERROR == logging.ERROR
27+
assert LogLevel.CRITICAL == logging.CRITICAL
28+
29+
30+
@patch("src.backend.common.logger.app_logger.logging.getLogger")
31+
def test_app_logger_init(mock_get_logger, logger_name):
32+
mock_logger = MagicMock()
33+
mock_get_logger.return_value = mock_logger
34+
35+
logger = AppLogger(logger_name)
36+
37+
assert logger.logger == mock_logger
38+
mock_logger.setLevel.assert_called_once_with(logging.DEBUG)
39+
40+
# New Correct Check: Check that addHandler was called with StreamHandler
41+
assert mock_logger.addHandler.called
42+
handler_arg = mock_logger.addHandler.call_args[0][0]
43+
assert isinstance(handler_arg, logging.StreamHandler)
44+
45+
46+
47+
def test_format_message_without_kwargs(app_logger):
48+
message = "test message"
49+
formatted = app_logger._format_message(message)
50+
expected = json.dumps({"message": message})
51+
assert formatted == expected
52+
53+
54+
def test_format_message_with_kwargs(app_logger):
55+
message = "test message"
56+
context = {"user": "john", "action": "login"}
57+
formatted = app_logger._format_message(message, **context)
58+
expected = json.dumps({"message": message, "context": context})
59+
assert formatted == expected
60+
61+
62+
@patch.object(logging.Logger, "debug")
63+
def test_debug(mock_debug, app_logger):
64+
app_logger.debug("Debug Message", user="test")
65+
assert mock_debug.called
66+
args, kwargs = mock_debug.call_args
67+
log_entry = json.loads(args[0])
68+
assert log_entry["message"] == "Debug Message"
69+
assert "context" in log_entry
70+
assert log_entry["context"]["user"] == "test"
71+
72+
73+
@patch.object(logging.Logger, "info")
74+
def test_info(mock_info, app_logger):
75+
app_logger.info("Info Message", user="test")
76+
assert mock_info.called
77+
args, kwargs = mock_info.call_args
78+
log_entry = json.loads(args[0])
79+
assert log_entry["message"] == "Info Message"
80+
81+
82+
@patch.object(logging.Logger, "warning")
83+
def test_warning(mock_warning, app_logger):
84+
app_logger.warning("Warning Message", user="test")
85+
assert mock_warning.called
86+
args, kwargs = mock_warning.call_args
87+
log_entry = json.loads(args[0])
88+
assert log_entry["message"] == "Warning Message"
89+
90+
91+
@patch.object(logging.Logger, "error")
92+
def test_error(mock_error, app_logger):
93+
app_logger.error("Error Message", user="test")
94+
assert mock_error.called
95+
args, kwargs = mock_error.call_args
96+
log_entry = json.loads(args[0])
97+
assert log_entry["message"] == "Error Message"
98+
99+
100+
@patch.object(logging.Logger, "critical")
101+
def test_critical(mock_critical, app_logger):
102+
app_logger.critical("Critical Message", user="test")
103+
assert mock_critical.called
104+
args, kwargs = mock_critical.call_args
105+
log_entry = json.loads(args[0])
106+
assert log_entry["message"] == "Critical Message"
107+
108+
109+
@patch("src.backend.common.logger.app_logger.logging.getLogger")
110+
def test_set_min_log_level(mock_get_logger):
111+
mock_logger = MagicMock()
112+
mock_get_logger.return_value = mock_logger
113+
114+
AppLogger.set_min_log_level(LogLevel.ERROR)
115+
116+
mock_logger.setLevel.assert_called_with(LogLevel.ERROR)

0 commit comments

Comments
 (0)