Skip to content

Commit 89fed7a

Browse files
fixed app_logger.py test cases and pylint issue.
1 parent be46496 commit 89fed7a

2 files changed

Lines changed: 58 additions & 78 deletions

File tree

src/tests/backend/common/database/database_factory_test.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ async def test_get_database():
7171
async def test_main_function():
7272
"""Test the main function in database factory."""
7373
with patch("common.database.database_factory.DatabaseFactory.get_database", new_callable=AsyncMock, return_value=AsyncMock()) as mock_get_database, patch("builtins.print") as mock_print:
74-
74+
7575
from common.database.database_factory import main
7676
await main()
7777

Lines changed: 57 additions & 77 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import json
22
import logging
3-
import pytest
4-
from unittest.mock import patch, MagicMock
3+
from unittest.mock import MagicMock, patch
4+
5+
from common.logger.app_logger import AppLogger, LogLevel # Adjust the import based on your actual path
56

6-
from src.backend.common.logger.app_logger import AppLogger, LogLevel
7+
import pytest
78

89

910
@pytest.fixture
@@ -12,11 +13,16 @@ def logger_name():
1213

1314

1415
@pytest.fixture
15-
def app_logger(logger_name):
16-
return AppLogger(logger_name)
16+
def logger_instance(logger_name):
17+
"""Fixture to return AppLogger with mocked handler"""
18+
with patch("common.logger.app_logger.logging.getLogger") as mock_get_logger:
19+
mock_logger = MagicMock()
20+
mock_get_logger.return_value = mock_logger
21+
yield AppLogger(logger_name)
1722

1823

19-
def test_log_level_constants():
24+
def test_log_levels():
25+
"""Ensure log levels are set correctly"""
2026
assert LogLevel.NONE == logging.NOTSET
2127
assert LogLevel.DEBUG == logging.DEBUG
2228
assert LogLevel.INFO == logging.INFO
@@ -25,90 +31,64 @@ def test_log_level_constants():
2531
assert LogLevel.CRITICAL == logging.CRITICAL
2632

2733

28-
@patch("src.backend.common.logger.app_logger.logging.getLogger")
29-
def test_app_logger_init(mock_get_logger, logger_name):
30-
mock_logger = MagicMock()
31-
mock_get_logger.return_value = mock_logger
32-
33-
logger = AppLogger(logger_name)
34-
35-
assert logger.logger == mock_logger
36-
mock_logger.setLevel.assert_called_once_with(logging.DEBUG)
37-
38-
# New Correct Check: Check that addHandler was called with StreamHandler
39-
assert mock_logger.addHandler.called
40-
handler_arg = mock_logger.addHandler.call_args[0][0]
41-
assert isinstance(handler_arg, logging.StreamHandler)
42-
43-
44-
45-
def test_format_message_without_kwargs(app_logger):
46-
message = "test message"
47-
formatted = app_logger._format_message(message)
48-
expected = json.dumps({"message": message})
49-
assert formatted == expected
34+
def test_format_message_basic(logger_instance):
35+
result = logger_instance._format_message("Test message")
36+
parsed = json.loads(result)
37+
assert parsed["message"] == "Test message"
38+
assert "context" not in parsed
5039

5140

52-
def test_format_message_with_kwargs(app_logger):
53-
message = "test message"
54-
context = {"user": "john", "action": "login"}
55-
formatted = app_logger._format_message(message, **context)
56-
expected = json.dumps({"message": message, "context": context})
57-
assert formatted == expected
41+
def test_format_message_with_context(logger_instance):
42+
result = logger_instance._format_message("Contextual message", key1="value1", key2="value2")
43+
parsed = json.loads(result)
44+
assert parsed["message"] == "Contextual message"
45+
assert parsed["context"] == {"key1": "value1", "key2": "value2"}
5846

5947

60-
@patch.object(logging.Logger, "debug")
61-
def test_debug(mock_debug, app_logger):
62-
app_logger.debug("Debug Message", user="test")
63-
assert mock_debug.called
64-
args, kwargs = mock_debug.call_args
65-
log_entry = json.loads(args[0])
66-
assert log_entry["message"] == "Debug Message"
67-
assert "context" in log_entry
68-
assert log_entry["context"]["user"] == "test"
48+
def test_debug_log(logger_instance):
49+
with patch.object(logger_instance.logger, "debug") as mock_debug:
50+
logger_instance.debug("Debug log", user="tester")
51+
mock_debug.assert_called_once()
52+
log_json = json.loads(mock_debug.call_args[0][0])
53+
assert log_json["message"] == "Debug log"
54+
assert log_json["context"]["user"] == "tester"
6955

7056

71-
@patch.object(logging.Logger, "info")
72-
def test_info(mock_info, app_logger):
73-
app_logger.info("Info Message", user="test")
74-
assert mock_info.called
75-
args, kwargs = mock_info.call_args
76-
log_entry = json.loads(args[0])
77-
assert log_entry["message"] == "Info Message"
57+
def test_info_log(logger_instance):
58+
with patch.object(logger_instance.logger, "info") as mock_info:
59+
logger_instance.info("Info log", module="log_module")
60+
mock_info.assert_called_once()
61+
log_json = json.loads(mock_info.call_args[0][0])
62+
assert log_json["message"] == "Info log"
63+
assert log_json["context"]["module"] == "log_module"
7864

7965

80-
@patch.object(logging.Logger, "warning")
81-
def test_warning(mock_warning, app_logger):
82-
app_logger.warning("Warning Message", user="test")
83-
assert mock_warning.called
84-
args, kwargs = mock_warning.call_args
85-
log_entry = json.loads(args[0])
86-
assert log_entry["message"] == "Warning Message"
66+
def test_warning_log(logger_instance):
67+
with patch.object(logger_instance.logger, "warning") as mock_warning:
68+
logger_instance.warning("Warning log")
69+
mock_warning.assert_called_once()
8770

8871

89-
@patch.object(logging.Logger, "error")
90-
def test_error(mock_error, app_logger):
91-
app_logger.error("Error Message", user="test")
92-
assert mock_error.called
93-
args, kwargs = mock_error.call_args
94-
log_entry = json.loads(args[0])
95-
assert log_entry["message"] == "Error Message"
72+
def test_error_log(logger_instance):
73+
with patch.object(logger_instance.logger, "error") as mock_error:
74+
logger_instance.error("Error log", error_code=500)
75+
mock_error.assert_called_once()
76+
log_json = json.loads(mock_error.call_args[0][0])
77+
assert log_json["message"] == "Error log"
78+
assert log_json["context"]["error_code"] == 500
9679

9780

98-
@patch.object(logging.Logger, "critical")
99-
def test_critical(mock_critical, app_logger):
100-
app_logger.critical("Critical Message", user="test")
101-
assert mock_critical.called
102-
args, kwargs = mock_critical.call_args
103-
log_entry = json.loads(args[0])
104-
assert log_entry["message"] == "Critical Message"
81+
def test_critical_log(logger_instance):
82+
with patch.object(logger_instance.logger, "critical") as mock_critical:
83+
logger_instance.critical("Critical log")
84+
mock_critical.assert_called_once()
10585

10686

107-
@patch("src.backend.common.logger.app_logger.logging.getLogger")
108-
def test_set_min_log_level(mock_get_logger):
109-
mock_logger = MagicMock()
110-
mock_get_logger.return_value = mock_logger
87+
def test_set_min_log_level():
88+
with patch("common.logger.app_logger.logging.getLogger") as mock_get_logger:
89+
mock_logger = MagicMock()
90+
mock_get_logger.return_value = mock_logger
11191

112-
AppLogger.set_min_log_level(LogLevel.ERROR)
92+
AppLogger.set_min_log_level(LogLevel.ERROR)
11393

114-
mock_logger.setLevel.assert_called_with(LogLevel.ERROR)
94+
mock_logger.setLevel.assert_called_once_with(LogLevel.ERROR)

0 commit comments

Comments
 (0)