77 lines
2.4 KiB
Python
77 lines
2.4 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_quotes():
|
|
result = parse_trigger(msg(CURRENT_USER, "!start Stephan Rehfeld"), CURRENT_USER)
|
|
assert result == ("start", "Stephan Rehfeld")
|
|
|
|
|
|
def test_start_with_typographic_quotes():
|
|
result = parse_trigger(msg(CURRENT_USER, "“start” is not this, but: !start “Anna Bauer”"), CURRENT_USER)
|
|
assert result is None # not a trigger — just a regular message
|
|
|
|
|
|
def test_start_with_smart_quotes_around_name():
|
|
result = parse_trigger(msg(CURRENT_USER, '!start “Anna Bauer”'), CURRENT_USER)
|
|
assert result == ("start", "Anna 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", "")
|