2021-06-05 13:37:01 +03:00
|
|
|
import datetime
|
|
|
|
|
|
|
|
|
|
import pytest
|
|
|
|
|
|
2021-06-15 01:45:31 +03:00
|
|
|
from aiogram.types import Chat, Message
|
2021-06-05 13:37:01 +03:00
|
|
|
from tests.mocked_bot import MockedBot
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestGetMessageUrl:
|
|
|
|
|
@pytest.mark.parametrize(
|
|
|
|
|
"chat_type,chat_id,chat_username,force_private,expected_result",
|
|
|
|
|
[
|
|
|
|
|
["private", 123456, "username", False, None],
|
|
|
|
|
["group", -123456, "username", False, None],
|
|
|
|
|
["supergroup", -1001234567890, None, False, "https://t.me/c/1234567890/10"],
|
|
|
|
|
["supergroup", -1001234567890, None, True, "https://t.me/c/1234567890/10"],
|
|
|
|
|
["supergroup", -1001234567890, "username", False, "https://t.me/username/10"],
|
|
|
|
|
["supergroup", -1001234567890, "username", True, "https://t.me/c/1234567890/10"],
|
|
|
|
|
["channel", -1001234567890, None, False, "https://t.me/c/1234567890/10"],
|
|
|
|
|
["channel", -1001234567890, None, True, "https://t.me/c/1234567890/10"],
|
|
|
|
|
["channel", -1001234567890, "username", False, "https://t.me/username/10"],
|
|
|
|
|
["channel", -1001234567890, "username", True, "https://t.me/c/1234567890/10"],
|
|
|
|
|
# 2 extra cases: 9-digit ID and 11-digit ID (without "-100")
|
|
|
|
|
["supergroup", -100123456789, None, True, "https://t.me/c/123456789/10"],
|
|
|
|
|
["supergroup", -10012345678901, None, True, "https://t.me/c/12345678901/10"],
|
|
|
|
|
],
|
|
|
|
|
)
|
2024-08-14 04:11:58 +05:00
|
|
|
def test_get_url_non_topic_message(
|
2021-06-05 13:37:01 +03:00
|
|
|
self,
|
|
|
|
|
bot: MockedBot,
|
|
|
|
|
chat_type: str,
|
|
|
|
|
chat_id: int,
|
2026-01-04 21:34:08 +02:00
|
|
|
chat_username: str | None,
|
2021-06-05 13:37:01 +03:00
|
|
|
force_private: bool,
|
2026-01-04 21:34:08 +02:00
|
|
|
expected_result: str | None,
|
2021-06-05 13:37:01 +03:00
|
|
|
):
|
|
|
|
|
fake_chat = Chat(id=chat_id, username=chat_username, type=chat_type)
|
|
|
|
|
fake_message_id = 10
|
|
|
|
|
fake_message = Message(
|
|
|
|
|
message_id=fake_message_id,
|
|
|
|
|
date=datetime.datetime.now(),
|
|
|
|
|
text="test",
|
|
|
|
|
chat=fake_chat,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
if expected_result is None:
|
|
|
|
|
assert fake_message.get_url(force_private=force_private) is None
|
2024-08-14 04:11:58 +05:00
|
|
|
assert (
|
|
|
|
|
fake_message.get_url(force_private=force_private, include_thread_id=True) is None
|
|
|
|
|
)
|
2021-06-05 13:37:01 +03:00
|
|
|
else:
|
|
|
|
|
assert fake_message.get_url(force_private=force_private) == expected_result
|
2024-08-14 04:11:58 +05:00
|
|
|
assert (
|
|
|
|
|
fake_message.get_url(force_private=force_private, include_thread_id=True)
|
|
|
|
|
== expected_result
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
@pytest.mark.parametrize(
|
|
|
|
|
"chat_username,force_private,include_thread_id,fake_thread_id_topic,expected_result",
|
|
|
|
|
[
|
|
|
|
|
[None, False, False, None, "https://t.me/c/1234567890/10"],
|
|
|
|
|
[None, False, False, 3, "https://t.me/c/1234567890/10"],
|
|
|
|
|
[None, False, True, None, "https://t.me/c/1234567890/10"],
|
|
|
|
|
[None, False, True, 3, "https://t.me/c/1234567890/3/10"],
|
|
|
|
|
[None, True, False, None, "https://t.me/c/1234567890/10"],
|
|
|
|
|
[None, True, False, 3, "https://t.me/c/1234567890/10"],
|
|
|
|
|
[None, True, True, None, "https://t.me/c/1234567890/10"],
|
|
|
|
|
[None, True, True, 3, "https://t.me/c/1234567890/3/10"],
|
|
|
|
|
["name", False, False, None, "https://t.me/name/10"],
|
|
|
|
|
["name", False, False, 3, "https://t.me/name/10"],
|
|
|
|
|
["name", False, True, None, "https://t.me/name/10"],
|
|
|
|
|
["name", False, True, 3, "https://t.me/name/3/10"],
|
|
|
|
|
["name", True, False, None, "https://t.me/c/1234567890/10"],
|
|
|
|
|
["name", True, False, 3, "https://t.me/c/1234567890/10"],
|
|
|
|
|
["name", True, True, None, "https://t.me/c/1234567890/10"],
|
|
|
|
|
["name", True, True, 3, "https://t.me/c/1234567890/3/10"],
|
|
|
|
|
],
|
|
|
|
|
)
|
|
|
|
|
def test_get_url_if_topic_message(
|
|
|
|
|
self,
|
|
|
|
|
bot: MockedBot,
|
2026-01-04 21:34:08 +02:00
|
|
|
chat_username: str | None,
|
2024-08-14 04:11:58 +05:00
|
|
|
force_private: bool,
|
|
|
|
|
include_thread_id: bool,
|
2026-01-04 21:34:08 +02:00
|
|
|
fake_thread_id_topic: int | None,
|
|
|
|
|
expected_result: str | None,
|
2024-08-14 04:11:58 +05:00
|
|
|
):
|
|
|
|
|
fake_message_id = 10
|
|
|
|
|
fake_chat_id = -1001234567890
|
|
|
|
|
fake_chat_type = "supergroup"
|
|
|
|
|
fake_chat_with_topics = Chat(
|
|
|
|
|
id=fake_chat_id, username=chat_username, type=fake_chat_type, is_forum=True
|
|
|
|
|
)
|
|
|
|
|
fake_message_from_topic = Message(
|
|
|
|
|
message_id=fake_message_id,
|
|
|
|
|
date=datetime.datetime.now(),
|
|
|
|
|
text="test",
|
|
|
|
|
chat=fake_chat_with_topics,
|
|
|
|
|
is_topic_message=True,
|
|
|
|
|
message_thread_id=fake_thread_id_topic,
|
|
|
|
|
)
|
|
|
|
|
actual_result = fake_message_from_topic.get_url(
|
|
|
|
|
force_private=force_private, include_thread_id=include_thread_id
|
|
|
|
|
)
|
|
|
|
|
assert actual_result == expected_result
|