Files
BSN-Livesystem/tests/test_intake.py
T

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"