mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Parametrized test
This commit is contained in:
parent
2f462ae6a8
commit
117cc785b2
1 changed files with 38 additions and 72 deletions
|
|
@ -1,85 +1,51 @@
|
|||
import datetime
|
||||
from typing import Optional
|
||||
|
||||
import pytest
|
||||
from aiogram.types import Chat, Message
|
||||
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
class TestGetMessageUrl:
|
||||
def test_method(self, bot: MockedBot):
|
||||
@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"],
|
||||
],
|
||||
)
|
||||
def test_method(
|
||||
self,
|
||||
bot: MockedBot,
|
||||
chat_type: str,
|
||||
chat_id: int,
|
||||
chat_username: Optional[str],
|
||||
force_private: bool,
|
||||
expected_result: Optional[str],
|
||||
):
|
||||
|
||||
fake_chat = Chat(id=chat_id, username=chat_username, type=chat_type)
|
||||
fake_message_id = 10
|
||||
|
||||
fake_chat_pm = Chat(id=123456, username="username", type="private")
|
||||
fake_message = Message(
|
||||
message_id=fake_message_id,
|
||||
date=datetime.datetime.now(),
|
||||
text="test",
|
||||
chat=fake_chat_pm,
|
||||
chat=fake_chat,
|
||||
)
|
||||
|
||||
# get_url() in PM must return None
|
||||
assert fake_message.get_url() is None
|
||||
|
||||
# get_url() in basic group must return None
|
||||
fake_chat_group = Chat(id=-123456, username="username", type="group")
|
||||
fake_message = Message(
|
||||
message_id=fake_message_id,
|
||||
date=datetime.datetime.now(),
|
||||
text="test",
|
||||
chat=fake_chat_group,
|
||||
)
|
||||
assert fake_message.get_url() is None
|
||||
|
||||
# get_url() in supergroup without username must return private link
|
||||
fake_chat_supergroup_no_username = Chat(id=-1001234567890, type="supergroup")
|
||||
fake_message = Message(
|
||||
message_id=fake_message_id,
|
||||
date=datetime.datetime.now(),
|
||||
text="test",
|
||||
chat=fake_chat_supergroup_no_username,
|
||||
)
|
||||
assert fake_message.chat.shifted_id == 1234567890
|
||||
assert fake_message.get_url() == f"https://t.me/c/1234567890/{fake_message_id}"
|
||||
|
||||
# get_url() in supergroup with username must return link with username or private link
|
||||
# if force_private set to True
|
||||
fake_chat_supergroup_username = Chat(
|
||||
id=-1001234567890, username="username", type="supergroup"
|
||||
)
|
||||
fake_message = Message(
|
||||
message_id=fake_message_id,
|
||||
date=datetime.datetime.now(),
|
||||
text="test",
|
||||
chat=fake_chat_supergroup_username,
|
||||
)
|
||||
assert fake_message.chat.shifted_id == 1234567890
|
||||
assert fake_message.get_url() == f"https://t.me/username/{fake_message_id}"
|
||||
assert (
|
||||
fake_message.get_url(force_private=True)
|
||||
== f"https://t.me/c/1234567890/{fake_message_id}"
|
||||
)
|
||||
|
||||
# get_url() in channel without username must return private link
|
||||
fake_chat_channel_no_username = Chat(id=-1001234567890, type="channel")
|
||||
fake_message = Message(
|
||||
message_id=fake_message_id,
|
||||
date=datetime.datetime.now(),
|
||||
text="test",
|
||||
chat=fake_chat_channel_no_username,
|
||||
)
|
||||
assert fake_message.chat.shifted_id == 1234567890
|
||||
assert fake_message.get_url() == f"https://t.me/c/1234567890/{fake_message_id}"
|
||||
|
||||
# get_url() in channel with username must return link with username or private link
|
||||
# if force_private set to True
|
||||
fake_chat_channel_username = Chat(id=-1001234567890, username="username", type="channel")
|
||||
fake_message = Message(
|
||||
message_id=fake_message_id,
|
||||
date=datetime.datetime.now(),
|
||||
text="test",
|
||||
chat=fake_chat_channel_username,
|
||||
)
|
||||
assert fake_message.chat.shifted_id == 1234567890
|
||||
assert fake_message.get_url() == f"https://t.me/username/{fake_message_id}"
|
||||
assert (
|
||||
fake_message.get_url(force_private=True)
|
||||
== f"https://t.me/c/1234567890/{fake_message_id}"
|
||||
)
|
||||
if expected_result is None:
|
||||
assert fake_message.get_url(force_private=force_private) is None
|
||||
else:
|
||||
assert fake_message.get_url(force_private=force_private) == expected_result
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue