50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
from __future__ import annotations
|
|
|
|
from types import SimpleNamespace
|
|
|
|
from adapter.telegram.converter import format_outgoing, from_message
|
|
from core.protocol import OutgoingMessage, OutgoingUI
|
|
|
|
|
|
def make_message(*, text="hello", thread_id=42, user_id=1):
|
|
m = SimpleNamespace()
|
|
m.text = text
|
|
m.caption = None
|
|
m.photo = None
|
|
m.document = None
|
|
m.voice = None
|
|
m.message_thread_id = thread_id
|
|
m.from_user = SimpleNamespace(id=user_id, full_name="Alice")
|
|
return m
|
|
|
|
|
|
def test_from_message_in_topic():
|
|
msg = make_message(thread_id=42, user_id=7)
|
|
result = from_message(msg)
|
|
assert result is not None
|
|
assert result.user_id == "7"
|
|
assert result.chat_id == "42"
|
|
assert result.text == "hello"
|
|
assert result.platform == "telegram"
|
|
|
|
|
|
def test_from_message_in_general_returns_none():
|
|
msg = make_message(thread_id=None)
|
|
assert from_message(msg) is None
|
|
|
|
|
|
def test_from_message_uses_caption_if_no_text():
|
|
msg = make_message(text=None, thread_id=10)
|
|
msg.caption = "caption text"
|
|
result = from_message(msg)
|
|
assert result.text == "caption text"
|
|
|
|
|
|
def test_format_outgoing_message():
|
|
event = OutgoingMessage(chat_id="42", text="response")
|
|
assert format_outgoing(event) == "response"
|
|
|
|
|
|
def test_format_outgoing_ui():
|
|
event = OutgoingUI(chat_id="42", text="choose")
|
|
assert format_outgoing(event) == "choose"
|