mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
Add set_member_tag shortcut tests and align decoration expectations
This commit is contained in:
parent
a126f8e0b1
commit
705403b2b9
6 changed files with 147 additions and 8 deletions
|
|
@ -71,6 +71,10 @@ set_administrator_custom_title:
|
|||
method: setChatAdministratorCustomTitle
|
||||
fill: *self
|
||||
|
||||
set_member_tag:
|
||||
method: setChatMemberTag
|
||||
fill: *self
|
||||
|
||||
set_permissions:
|
||||
method: setChatPermissions
|
||||
fill: *self
|
||||
|
|
|
|||
|
|
@ -6,6 +6,11 @@ class TestPromoteChatMember:
|
|||
async def test_bot_method(self, bot: MockedBot):
|
||||
prepare_result = bot.add_result_for(PromoteChatMember, ok=True, result=True)
|
||||
|
||||
response: bool = await bot.promote_chat_member(chat_id=-42, user_id=42)
|
||||
bot.get_request()
|
||||
response: bool = await bot.promote_chat_member(
|
||||
chat_id=-42,
|
||||
user_id=42,
|
||||
can_manage_tags=True,
|
||||
)
|
||||
request = bot.get_request()
|
||||
assert request.can_manage_tags is True
|
||||
assert response == prepare_result.result
|
||||
|
|
|
|||
|
|
@ -7,5 +7,8 @@ class TestSetChatMemberTag:
|
|||
prepare_result = bot.add_result_for(SetChatMemberTag, ok=True, result=True)
|
||||
|
||||
response: bool = await bot.set_chat_member_tag(chat_id=-42, user_id=42, tag="test")
|
||||
bot.get_request()
|
||||
request = bot.get_request()
|
||||
assert request.chat_id == -42
|
||||
assert request.user_id == 42
|
||||
assert request.tag == "test"
|
||||
assert response == prepare_result.result
|
||||
|
|
|
|||
|
|
@ -0,0 +1,84 @@
|
|||
from datetime import datetime
|
||||
|
||||
from aiogram.types import (
|
||||
ChatAdministratorRights,
|
||||
ChatMemberAdministrator,
|
||||
ChatMemberMember,
|
||||
ChatMemberRestricted,
|
||||
ChatPermissions,
|
||||
User,
|
||||
)
|
||||
|
||||
|
||||
class TestChatMemberTagPermissions:
|
||||
def test_chat_administrator_rights_can_manage_tags(self):
|
||||
rights = ChatAdministratorRights(
|
||||
is_anonymous=False,
|
||||
can_manage_chat=True,
|
||||
can_delete_messages=True,
|
||||
can_manage_video_chats=True,
|
||||
can_restrict_members=True,
|
||||
can_promote_members=True,
|
||||
can_change_info=True,
|
||||
can_invite_users=True,
|
||||
can_post_stories=True,
|
||||
can_edit_stories=True,
|
||||
can_delete_stories=True,
|
||||
can_manage_tags=True,
|
||||
)
|
||||
assert rights.can_manage_tags is True
|
||||
|
||||
def test_chat_member_administrator_can_manage_tags(self):
|
||||
admin = ChatMemberAdministrator(
|
||||
user=User(id=42, is_bot=False, first_name="User"),
|
||||
can_be_edited=True,
|
||||
is_anonymous=False,
|
||||
can_manage_chat=True,
|
||||
can_delete_messages=True,
|
||||
can_manage_video_chats=True,
|
||||
can_restrict_members=True,
|
||||
can_promote_members=True,
|
||||
can_change_info=True,
|
||||
can_invite_users=True,
|
||||
can_post_stories=True,
|
||||
can_edit_stories=True,
|
||||
can_delete_stories=True,
|
||||
can_manage_tags=True,
|
||||
)
|
||||
assert admin.can_manage_tags is True
|
||||
|
||||
def test_chat_permissions_can_edit_tag(self):
|
||||
permissions = ChatPermissions(can_edit_tag=True)
|
||||
assert permissions.can_edit_tag is True
|
||||
|
||||
def test_chat_member_member_tag(self):
|
||||
member = ChatMemberMember(
|
||||
user=User(id=42, is_bot=False, first_name="User"),
|
||||
tag="premium",
|
||||
)
|
||||
assert member.tag == "premium"
|
||||
|
||||
def test_chat_member_restricted_can_edit_tag_and_tag(self):
|
||||
restricted = ChatMemberRestricted(
|
||||
user=User(id=42, is_bot=False, first_name="User"),
|
||||
is_member=True,
|
||||
can_send_messages=True,
|
||||
can_send_audios=True,
|
||||
can_send_documents=True,
|
||||
can_send_photos=True,
|
||||
can_send_videos=True,
|
||||
can_send_video_notes=True,
|
||||
can_send_voice_notes=True,
|
||||
can_send_polls=True,
|
||||
can_send_other_messages=True,
|
||||
can_add_web_page_previews=True,
|
||||
can_edit_tag=True,
|
||||
can_change_info=True,
|
||||
can_invite_users=True,
|
||||
can_pin_messages=True,
|
||||
can_manage_topics=True,
|
||||
until_date=datetime.now(),
|
||||
tag="premium",
|
||||
)
|
||||
assert restricted.can_edit_tag is True
|
||||
assert restricted.tag == "premium"
|
||||
|
|
@ -9,6 +9,7 @@ from aiogram.utils.formatting import (
|
|||
CashTag,
|
||||
Code,
|
||||
CustomEmoji,
|
||||
DateTime,
|
||||
Email,
|
||||
ExpandableBlockQuote,
|
||||
HashTag,
|
||||
|
|
@ -93,7 +94,7 @@ class TestNode:
|
|||
],
|
||||
[
|
||||
Pre("test", language="python"),
|
||||
'<pre><code class="language-python">test</code></pre>',
|
||||
'<pre><code language="language-python">test</code></pre>',
|
||||
],
|
||||
[
|
||||
TextLink("test", url="https://example.com"),
|
||||
|
|
@ -105,7 +106,7 @@ class TestNode:
|
|||
],
|
||||
[
|
||||
CustomEmoji("test", custom_emoji_id="42"),
|
||||
'<tg-emoji emoji-id="42">test</tg-emoji>',
|
||||
'<tg-emoji emoji_id="42">test</tg-emoji>',
|
||||
],
|
||||
[
|
||||
BlockQuote("test"),
|
||||
|
|
@ -115,6 +116,10 @@ class TestNode:
|
|||
ExpandableBlockQuote("test"),
|
||||
"<blockquote expandable>test</blockquote>",
|
||||
],
|
||||
[
|
||||
DateTime("test", unix_time=42, date_time_format="yMd"),
|
||||
'<tg-time unix="42" format="yMd">test</tg-time>',
|
||||
],
|
||||
],
|
||||
)
|
||||
def test_render_plain_only(self, node: Text, result: str):
|
||||
|
|
@ -358,6 +363,22 @@ class TestUtils:
|
|||
assert isinstance(node, Bold)
|
||||
assert node._body == ("test",)
|
||||
|
||||
def test_apply_entity_date_time(self):
|
||||
node = _apply_entity(
|
||||
MessageEntity(
|
||||
type=MessageEntityType.DATE_TIME,
|
||||
offset=0,
|
||||
length=4,
|
||||
unix_time=42,
|
||||
date_time_format="yMd",
|
||||
),
|
||||
"test",
|
||||
)
|
||||
assert isinstance(node, DateTime)
|
||||
assert node._body == ("test",)
|
||||
assert node._params["unix_time"] == 42
|
||||
assert node._params["date_time_format"] == "yMd"
|
||||
|
||||
def test_as_line(self):
|
||||
node = as_line("test", "test", "test")
|
||||
assert isinstance(node, Text)
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ class TestTextDecoration:
|
|||
[
|
||||
html_decoration,
|
||||
MessageEntity(type="pre", offset=0, length=5, language="python"),
|
||||
'<pre><code class="language-python">test</code></pre>',
|
||||
'<pre><code language="language-python">test</code></pre>',
|
||||
],
|
||||
[html_decoration, MessageEntity(type="underline", offset=0, length=5), "<u>test</u>"],
|
||||
[
|
||||
|
|
@ -57,7 +57,7 @@ class TestTextDecoration:
|
|||
[
|
||||
html_decoration,
|
||||
MessageEntity(type="custom_emoji", offset=0, length=5, custom_emoji_id="42"),
|
||||
'<tg-emoji emoji-id="42">test</tg-emoji>',
|
||||
'<tg-emoji emoji_id="42">test</tg-emoji>',
|
||||
],
|
||||
[
|
||||
html_decoration,
|
||||
|
|
@ -74,6 +74,17 @@ class TestTextDecoration:
|
|||
MessageEntity(type="expandable_blockquote", offset=0, length=5),
|
||||
"<blockquote expandable>test</blockquote>",
|
||||
],
|
||||
[
|
||||
html_decoration,
|
||||
MessageEntity(
|
||||
type="date_time",
|
||||
offset=0,
|
||||
length=5,
|
||||
unix_time=42,
|
||||
date_time_format="yMd",
|
||||
),
|
||||
'<tg-time unix="42" format="yMd">test</tg-time>',
|
||||
],
|
||||
[markdown_decoration, MessageEntity(type="bold", offset=0, length=5), "*test*"],
|
||||
[markdown_decoration, MessageEntity(type="italic", offset=0, length=5), "_\rtest_\r"],
|
||||
[markdown_decoration, MessageEntity(type="code", offset=0, length=5), "`test`"],
|
||||
|
|
@ -102,7 +113,7 @@ class TestTextDecoration:
|
|||
[
|
||||
markdown_decoration,
|
||||
MessageEntity(type="custom_emoji", offset=0, length=5, custom_emoji_id="42"),
|
||||
"",
|
||||
"",
|
||||
],
|
||||
[
|
||||
markdown_decoration,
|
||||
|
|
@ -124,6 +135,17 @@ class TestTextDecoration:
|
|||
MessageEntity(type="expandable_blockquote", offset=0, length=5),
|
||||
">test||",
|
||||
],
|
||||
[
|
||||
markdown_decoration,
|
||||
MessageEntity(
|
||||
type="date_time",
|
||||
offset=0,
|
||||
length=5,
|
||||
unix_time=42,
|
||||
date_time_format="yMd",
|
||||
),
|
||||
"",
|
||||
],
|
||||
],
|
||||
)
|
||||
def test_apply_single_entity(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue