feat: trigger parsing for !start and !stop commands
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
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", "")
|
||||
Reference in New Issue
Block a user