90 lines
3.2 KiB
Python
90 lines
3.2 KiB
Python
"""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"
|