WIP: logging_config, import orders, test refactoring (phase 3 context)

This commit is contained in:
hermes
2026-06-22 10:24:35 +00:00
parent 021cc561f1
commit 5eaeaabb43
10 changed files with 108 additions and 102 deletions
+44 -52
View File
@@ -3,9 +3,6 @@
from datetime import datetime
from unittest.mock import MagicMock, patch
import pytest
from src.models.submission import Submission
from src.queue.worker import verarbeite_submission, worker_loop
@@ -14,13 +11,13 @@ class TestVerarbeiteSubmission:
def test_verarbeite_submission_setzt_status_erledigt(self) -> None:
"""verarbeite_submission setzt Status auf 'erledigt'."""
submission = Submission(
message_id="test1",
plattform="whatsapp",
absender="+491234567890",
text="Test Message",
)
assert submission.status == "neu"
submission = MagicMock()
submission.message_id = "msg_id"
submission.zeitstempel = datetime.now()
submission.absender = "+491****7890"
submission.text = "Test Message"
assert submission.status != "erledigt"
result = verarbeite_submission(submission)
@@ -34,54 +31,49 @@ class TestWorkerLoop:
def test_worker_loop_verarbeitet_queue(self) -> None:
"""worker_loop verarbeitet alle Submissions in der Queue."""
mock_qh = MagicMock()
submissions = [
Submission(
message_id=f"msg{i}",
plattform="whatsapp",
absender="+491234567890",
text=f"Message {i}",
)
for i in range(3)
]
mock_qh.dequeue.return_value = submissions
mock_qh.queue_size.return_value = 0
mock_sub = MagicMock()
mock_sub.zeitstempel = datetime.now()
mock_sub.absender = "+491****7890"
mock_sub.text = "Test"
mock_sub.message_id = "msg1"
with patch("src.queue.worker.time.sleep"), \
patch("src.queue.worker.verarbeite_submission") as mock_verarb:
mock_verarb.return_value = True
# worker_loop ist Endlos-Schleife, wir brechen durch sleep-Patch ab
# Wir feueln in einem separären Thread oder mit einer Begrenzung
pass # Integration wird in systemtests geprüft
def test_worker_loop_stopt_nicht_bei_fehler(self) -> None:
"""worker_loop crash nicht bei Fehler in einer Submission."""
mock_qh = MagicMock()
bad_submission = Submission(
message_id="bad1",
plattform="whatsapp",
absender="+491234567890",
text="Test",
)
def bad_dequeue(count: int = 5):
return [bad_submission] if not hasattr(bad_dequeue, "called") else []
bad_dequeue.called = False
calls = [False]
def dequeue_side_effect(count: int = 5):
if not bad_dequeue.called:
bad_dequeue.called = True
return [bad_submission]
if not calls[0]:
calls[0] = True
return [mock_sub]
return []
mock_qh.dequeue.side_effect = dequeue_side_effect
with patch("src.queue.worker.verarbeite_submission", return_value=True) as mock_verarb, \
patch("src.queue.worker.time.sleep", return_value=None):
worker_loop(mock_qh, poll_interval=0, batch_size=5)
assert mock_verarb.call_count >= 1
assert mock_qh.mark_done.call_count >= 1
def test_worker_loop_stopt_nicht_bei_fehler(self) -> None:
"""worker_loop crasht nicht bei Fehler in einer Submission."""
mock_qh = MagicMock()
def dequeue_side_effect(count: int = 5):
if not hasattr(dequeue_side_effect, "called"):
dequeue_side_effect.called = True # type: ignore[attr-defined]
m = MagicMock()
m.zeitstempel = datetime.now()
m.absender = "+491****7890"
m.text = "Test"
m.message_id = "msg_err"
return [m]
return []
mock_qh.dequeue.side_effect = dequeue_side_effect
with patch("src.queue.worker.verarbeite_submission",
side_effect=Exception("Simulierter Fehler")), \
patch("src.queue.worker.time.sleep"):
# Keine Exception sollte auftreten
try:
worker_loop(mock_qh, poll_interval=0, batch_size=5)
except StopIteration:
pass # Erwartet - worker_loop läuft in Endlosschleife
patch("src.queue.worker.time.sleep", return_value=None):
worker_loop(mock_qh, poll_interval=0, batch_size=5)
assert True