Skip to content

Commit 252ac26

Browse files
committed
Add more tests
1 parent d201da5 commit 252ac26

File tree

2 files changed

+72
-15
lines changed

2 files changed

+72
-15
lines changed

escalite/escalite.py

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ def add_to_log(
108108
logs[tag][key]["message"] = (
109109
message if message is not None else logs[tag][key].get("message")
110110
)
111-
logs[tag][key]["log_level"] = Escalite.set_log_level(level, tag=tag)
111+
logs[tag][key]["log_level"] = Escalite.update_log_level(level, tag=tag)
112112
logs[tag][key]["log_time"] = current_time
113113
logs[tag][key].setdefault(START_TIME, current_time)
114114
logs[tag][key].setdefault(END_TIME, current_time)
@@ -126,7 +126,7 @@ def add_to_log(
126126
"value": value,
127127
"code": code,
128128
"message": message,
129-
"log_level": Escalite.set_log_level(level, tag=tag),
129+
"log_level": Escalite.update_log_level(level, tag=tag),
130130
"log_time": current_time,
131131
**(extras or {}),
132132
}
@@ -151,7 +151,7 @@ def add_to_log(
151151
"value": value,
152152
"code": code,
153153
"message": message,
154-
"log_level": Escalite.set_log_level(level),
154+
"log_level": Escalite.update_log_level(level),
155155
"log_time": time.time(),
156156
**(extras or {}),
157157
}
@@ -166,7 +166,7 @@ def get_log_level(tag: str = None) -> str:
166166
)
167167

168168
@staticmethod
169-
def set_log_level(
169+
def update_log_level(
170170
new_level: LOG_LEVEL, tag: str = None, force: bool = False
171171
) -> str:
172172
logs = _request_logs.get()
@@ -189,9 +189,11 @@ def get_all_logs() -> dict:
189189
@staticmethod
190190
def get_log_by_key(key: str, tag: str = None) -> Any:
191191
logs = _request_logs.get()
192-
if logs is None:
192+
if not logs:
193193
return None
194-
return logs[tag].get(key, None) if tag else logs.get(key, None)
194+
if tag and tag in logs:
195+
return logs[tag].get(key, None)
196+
return logs.get(key, None)
195197

196198
@staticmethod
197199
def add_service_log(

tests/escalite/test_escalite.py

Lines changed: 64 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import pytest
77
from escalite.escalite import Escalite
88
from escalite.utils.constants import ALERT_ID
9+
from contextlib import nullcontext as does_not_raise
910

1011

1112
class TestEscalite:
@@ -66,33 +67,87 @@ def test_add_to_log(self):
6667
assert entry["message"] == "Test message"
6768
assert logs["log_level"] == "info"
6869

69-
def test_set_log_level(self):
70+
def test_add_to_log_raises_error_if_not_started(self):
71+
from escalite.escalite import _request_logs
72+
73+
_request_logs.set(None)
74+
with pytest.raises(RuntimeError):
75+
Escalite.add_to_log("test_key", "test_value")
76+
77+
def test_update_log_level(self):
7078
Escalite.start_logging()
71-
Escalite.set_log_level("debug", force=True)
79+
Escalite.update_log_level("debug", force=True)
7280
assert Escalite.get_log_level() == "debug"
7381

74-
Escalite.set_log_level("error", tag="api_logs")
82+
Escalite.update_log_level("error", tag="api_logs")
7583
assert Escalite.get_log_level(tag="api_logs") == "error"
7684

7785
Escalite.end_logging()
7886

79-
def test_set_log_level_does_not_change_if_a_downgrade(self):
87+
def test_update_log_level_does_not_change_if_no_logging_started(self):
88+
from escalite.escalite import _request_logs
89+
90+
_request_logs.set(None)
91+
Escalite.update_log_level("debug")
92+
# Should remain 'info' since no logging has started
93+
assert Escalite.get_log_level() == "info"
94+
95+
def test_update_log_level_does_not_change_if_a_downgrade(self):
8096
Escalite.start_logging()
81-
Escalite.set_log_level("debug")
97+
Escalite.update_log_level("debug")
8298
# Should remain 'info' since 'debug' is a lower level and force is False
8399
assert Escalite.get_log_level() == "info"
84100

85-
def test_set_log_level_updates_if_force(self):
101+
def test_update_log_level_updates_if_force(self):
86102
Escalite.start_logging()
87-
Escalite.set_log_level("debug", force=True)
103+
Escalite.update_log_level("debug", force=True)
88104
assert Escalite.get_log_level() == "debug"
89105

90-
Escalite.set_log_level("critical")
91-
Escalite.set_log_level("info", force=True)
106+
Escalite.update_log_level("critical")
107+
Escalite.update_log_level("info", force=True)
108+
assert Escalite.get_log_level() == "info"
109+
110+
Escalite.end_logging()
111+
112+
def test_get_log_level_returns_info_if_no_logs_are_set(self):
113+
from escalite.escalite import _request_logs
114+
115+
_request_logs.set(None)
92116
assert Escalite.get_log_level() == "info"
93117

118+
def test_retrieves_log_by_key_when_key_exists(self):
119+
Escalite.start_logging()
120+
Escalite.add_to_log("key1", "value1")
121+
result = Escalite.get_log_by_key("key1")
122+
assert result["value"] == "value1"
123+
Escalite.end_logging()
124+
125+
def test_retrieves_log_by_key_with_tag_when_key_exists(self):
126+
Escalite.start_logging()
127+
Escalite.add_to_log("key1", "value1", tag="API_LOGS")
128+
result = Escalite.get_log_by_key("key1", tag="API_LOGS")
129+
assert result["value"] == "value1"
130+
Escalite.end_logging()
131+
132+
def test_returns_none_when_key_does_not_exist(self):
133+
Escalite.start_logging()
134+
result = Escalite.get_log_by_key("nonexistent_key")
135+
assert result is None
136+
Escalite.end_logging()
137+
138+
def test_returns_none_when_key_does_not_exist_with_tag(self):
139+
Escalite.start_logging()
140+
result = Escalite.get_log_by_key("nonexistent_key", tag="API_LOGS")
141+
assert result is None
94142
Escalite.end_logging()
95143

144+
def test_does_not_raise_error_when_logging_not_started(self):
145+
from escalite.escalite import _request_logs
146+
147+
_request_logs.set(None)
148+
with does_not_raise():
149+
Escalite.get_log_by_key("key1")
150+
96151
def test_add_to_log_with_extras(self):
97152
Escalite.start_logging()
98153
Escalite.add_to_log(

0 commit comments

Comments
 (0)