"""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"