teampulse/tests/test_monitor_triggers.py
2026-05-16 17:22:55 +02:00

62 lines
1.8 KiB
Python

from datetime import datetime
from teampulse.models import ChatMessage
from teampulse.monitor import parse_trigger
def msg(sender: str, text: str) -> ChatMessage:
return ChatMessage(sender=sender, text=text, timestamp=datetime(2026, 5, 16, 10, 0, 0))
CURRENT_USER = "Oliver Hofmann"
def test_start_with_quoted_name():
result = parse_trigger(msg(CURRENT_USER, '!start "Anna Bauer"'), CURRENT_USER)
assert result == ("start", "Anna Bauer")
def test_start_with_single_word_name():
result = parse_trigger(msg(CURRENT_USER, '!start "Bauer"'), CURRENT_USER)
assert result == ("start", "Bauer")
def test_start_without_name_returns_placeholder():
result = parse_trigger(msg(CURRENT_USER, "!start"), CURRENT_USER)
assert result == ("start", "Unbekannter Vortragender")
def test_start_with_empty_quotes_returns_placeholder():
result = parse_trigger(msg(CURRENT_USER, '!start ""'), CURRENT_USER)
assert result == ("start", "Unbekannter Vortragender")
def test_stop_trigger():
result = parse_trigger(msg(CURRENT_USER, "!stop"), CURRENT_USER)
assert result == ("stop", "")
def test_ignored_if_not_current_user():
result = parse_trigger(msg("Klaus Huber", '!start "Anna Bauer"'), CURRENT_USER)
assert result is None
def test_stop_ignored_if_not_current_user():
result = parse_trigger(msg("Klaus Huber", "!stop"), CURRENT_USER)
assert result is None
def test_regular_message_returns_none():
result = parse_trigger(msg(CURRENT_USER, "Gute Frage!"), CURRENT_USER)
assert result is None
def test_case_insensitive_start():
result = parse_trigger(msg(CURRENT_USER, '!START "Anna Bauer"'), CURRENT_USER)
assert result == ("start", "Anna Bauer")
def test_case_insensitive_stop():
result = parse_trigger(msg(CURRENT_USER, "!STOP"), CURRENT_USER)
assert result == ("stop", "")