feat: Message-Intake-Service mit Kommando-Erkennung (closes #2)
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
"""Tests für Message-Intake-Service."""
|
||||
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
from src.services.intake import (
|
||||
KommandoTyp,
|
||||
erkenne_kommando,
|
||||
extrahiere_suchbegriff,
|
||||
verarbeite_submission,
|
||||
)
|
||||
|
||||
|
||||
class TestErkenneKommando:
|
||||
"""Tests für erkenne_kommando."""
|
||||
|
||||
def test_suche_catanspielen_ergibt_spiel_suchen(self) -> None:
|
||||
"""'suche Catan' → KommandoTyp.SPIEL_SUCHEN."""
|
||||
assert erkenne_kommando("suche Catan") == KommandoTyp.SPIEL_SUCHEN
|
||||
|
||||
def test_suche_ohne_begriff_ergibt_spiel_suchen(self) -> None:
|
||||
"""'suche' → KommandoTyp.SPIEL_SUCHEN."""
|
||||
assert erkenne_kommando("suche") == KommandoTyp.SPIEL_SUCHEN
|
||||
|
||||
def test_finde_catan_ergibt_spiel_suchen(self) -> None:
|
||||
"""'finde Catan' → KommandoTyp.SPIEL_SUCHEN."""
|
||||
assert erkenne_kommando("finde Catan") == KommandoTyp.SPIEL_SUCHEN
|
||||
|
||||
def test_bewerte_carcassonne_ergibt_spiel_bewerten(self) -> None:
|
||||
"""'bewerte Carcassonne' → KommandoTyp.SPIEL_BEWERTEN."""
|
||||
assert erkenne_kommando("bewerte Carcassonne") == KommandoTyp.SPIEL_BEWERTEN
|
||||
|
||||
def test_hilfe_ergibt_hilfe(self) -> None:
|
||||
"""'hilfe' → KommandoTyp.HILFE."""
|
||||
assert erkenne_kommando("hilfe") == KommandoTyp.HILFE
|
||||
|
||||
def test_unknown_ertext_ergibt_unbekannt(self) -> None:
|
||||
"""'blabla' → KommandoTyp.UNBEKANNT."""
|
||||
assert erkenne_kommando("blabla") == KommandoTyp.UNBEKANNT
|
||||
|
||||
|
||||
class TestExtrahiereSuchbegriff:
|
||||
"""Tests für extrahiere_suchbegriff."""
|
||||
|
||||
def test_suche_catans_gibt_suchbegriff(self) -> None:
|
||||
"""'suche Catan' → extrahiert 'Catan'."""
|
||||
assert extrahiere_suchbegriff("suche Catan") == "Catan"
|
||||
|
||||
def test_suche_ohne_begriff_gibt_none(self) -> None:
|
||||
"""'suche' → None."""
|
||||
assert extrahiere_suchbegriff("suche") is None
|
||||
|
||||
def test_finde_monopoly_gibt_suchbegriff(self) -> None:
|
||||
"""'finde Monopoly' → extrahiert 'Monopoly'."""
|
||||
assert extrahiere_suchbegriff("finde Monopoly") == "Monopoly"
|
||||
|
||||
|
||||
class TestVerarbeiteSubmission:
|
||||
"""Tests für verarbeite_submission."""
|
||||
|
||||
def test_verarbeite_submission_mit_hilfe(self) -> None:
|
||||
"""verarbeite_submission mit 'hilfe' → Antwort enthält Hilfe-Text."""
|
||||
mock_submission = MagicMock()
|
||||
mock_submission.text = "hilfe"
|
||||
|
||||
result = verarbeite_submission(mock_submission)
|
||||
|
||||
assert result["kommando"] == "hilfe"
|
||||
assert "Verfügbare Kommandos" in result["antwort"]
|
||||
assert "suche" in result["antwort"]
|
||||
|
||||
def test_verarbeite_submission_mit_suche(self) -> None:
|
||||
"""verarbeite_submission mit 'suche Catan' → Antowrt enthält Suchbegriff."""
|
||||
mock_submission = MagicMock()
|
||||
mock_submission.text = "suche Catan"
|
||||
|
||||
result = verarbeite_submission(mock_submission)
|
||||
|
||||
assert result["kommando"] == "spiel_suchen"
|
||||
assert result["suchbegriff"] == "Catan"
|
||||
assert "Catan" in result["antwort"]
|
||||
|
||||
def test_verarbeite_submission_mit_unbekanntem_text(self) -> None:
|
||||
"""verarbeite_submission mit unbekanntem Text → UNBEKANNT."""
|
||||
mock_submission = MagicMock()
|
||||
mock_submission.text = "hallo wie gehts"
|
||||
|
||||
result = verarbeite_submission(mock_submission)
|
||||
|
||||
assert result["kommando"] == "unbekannt"
|
||||
Reference in New Issue
Block a user