From 4ac1af9d5cb56683d9cad54ef710674e1160a99b Mon Sep 17 00:00:00 2001 From: Alex Root Junior Date: Mon, 8 Nov 2021 02:05:23 +0200 Subject: [PATCH] Fixed code-coverage --- .../dispatcher/middlewares/user_context.py | 2 ++ aiogram/types/chat_join_request.py | 7 +++- .../test_approve_chat_join_request.py | 15 ++++----- .../test_create_chat_invite_link.py | 2 ++ .../test_decline_chat_join_request.py | 17 ++++------ .../test_edit_chat_invite_link.py | 4 +-- .../test_revoke_chat_invite_link.py | 4 +-- .../test_types/test_chat_join_request.py | 32 +++++++++++++++++++ tests/test_dispatcher/test_dispatcher.py | 14 ++++++++ 9 files changed, 73 insertions(+), 24 deletions(-) create mode 100644 tests/test_api/test_types/test_chat_join_request.py diff --git a/aiogram/dispatcher/middlewares/user_context.py b/aiogram/dispatcher/middlewares/user_context.py index c238332a..3531beb7 100644 --- a/aiogram/dispatcher/middlewares/user_context.py +++ b/aiogram/dispatcher/middlewares/user_context.py @@ -69,4 +69,6 @@ class UserContextMiddleware(BaseMiddleware): return event.my_chat_member.chat, event.my_chat_member.from_user if event.chat_member: return event.chat_member.chat, event.chat_member.from_user + if event.chat_join_request: + return event.chat_join_request.chat, event.chat_join_request.from_user return None, None diff --git a/aiogram/types/chat_join_request.py b/aiogram/types/chat_join_request.py index 607ff702..b9c862ee 100644 --- a/aiogram/types/chat_join_request.py +++ b/aiogram/types/chat_join_request.py @@ -5,9 +5,11 @@ from typing import TYPE_CHECKING, Optional from pydantic import Field -from ..methods import ApproveChatJoinRequest, DeclineChatJoinRequest from .base import TelegramObject +if TYPE_CHECKING: + from ..methods import ApproveChatJoinRequest, DeclineChatJoinRequest + if TYPE_CHECKING: from .chat import Chat from .chat_invite_link import ChatInviteLink @@ -36,6 +38,7 @@ class ChatJoinRequest(TelegramObject): """ Use this method to approve a chat join request. """ + from ..methods import ApproveChatJoinRequest return ApproveChatJoinRequest( chat_id=self.chat.id, @@ -46,6 +49,8 @@ class ChatJoinRequest(TelegramObject): """ Use this method to decline a chat join request. """ + from ..methods import DeclineChatJoinRequest + return DeclineChatJoinRequest( chat_id=self.chat.id, user_id=self.from_user.id, diff --git a/tests/test_api/test_methods/test_approve_chat_join_request.py b/tests/test_api/test_methods/test_approve_chat_join_request.py index 1b9fa8f6..52d6554a 100644 --- a/tests/test_api/test_methods/test_approve_chat_join_request.py +++ b/tests/test_api/test_methods/test_approve_chat_join_request.py @@ -1,22 +1,20 @@ import pytest -from aiogram.api.methods import ApproveChatJoinRequest, Request +from aiogram.methods import ApproveChatJoinRequest, Request from tests.mocked_bot import MockedBot -@pytest.mark.skip class TestApproveChatJoinRequest: @pytest.mark.asyncio async def test_method(self, bot: MockedBot): - prepare_result = bot.add_result_for(ApproveChatJoinRequest, ok=True, result=None) + prepare_result = bot.add_result_for(ApproveChatJoinRequest, ok=True, result=True) response: bool = await ApproveChatJoinRequest( - chat_id=..., - user_id=..., + chat_id=-42, + user_id=42, ) request: Request = bot.get_request() assert request.method == "approveChatJoinRequest" - # assert request.data == {} assert response == prepare_result.result @pytest.mark.asyncio @@ -24,10 +22,9 @@ class TestApproveChatJoinRequest: prepare_result = bot.add_result_for(ApproveChatJoinRequest, ok=True, result=None) response: bool = await bot.approve_chat_join_request( - chat_id=..., - user_id=..., + chat_id=-42, + user_id=42, ) request: Request = bot.get_request() assert request.method == "approveChatJoinRequest" - # assert request.data == {} assert response == prepare_result.result diff --git a/tests/test_api/test_methods/test_create_chat_invite_link.py b/tests/test_api/test_methods/test_create_chat_invite_link.py index 0241a60c..c07c55bc 100644 --- a/tests/test_api/test_methods/test_create_chat_invite_link.py +++ b/tests/test_api/test_methods/test_create_chat_invite_link.py @@ -17,6 +17,7 @@ class TestCreateChatInviteLink: creator=User(id=42, is_bot=False, first_name="User"), is_primary=False, is_revoked=False, + creates_join_request=False, ), ) @@ -37,6 +38,7 @@ class TestCreateChatInviteLink: creator=User(id=42, is_bot=False, first_name="User"), is_primary=False, is_revoked=False, + creates_join_request=False, ), ) diff --git a/tests/test_api/test_methods/test_decline_chat_join_request.py b/tests/test_api/test_methods/test_decline_chat_join_request.py index adb9b80c..e6e60ca5 100644 --- a/tests/test_api/test_methods/test_decline_chat_join_request.py +++ b/tests/test_api/test_methods/test_decline_chat_join_request.py @@ -1,33 +1,30 @@ import pytest -from aiogram.api.methods import DeclineChatJoinRequest, Request +from aiogram.methods import DeclineChatJoinRequest, Request from tests.mocked_bot import MockedBot -@pytest.mark.skip class TestDeclineChatJoinRequest: @pytest.mark.asyncio async def test_method(self, bot: MockedBot): - prepare_result = bot.add_result_for(DeclineChatJoinRequest, ok=True, result=None) + prepare_result = bot.add_result_for(DeclineChatJoinRequest, ok=True, result=True) response: bool = await DeclineChatJoinRequest( - chat_id=..., - user_id=..., + chat_id=-42, + user_id=42, ) request: Request = bot.get_request() assert request.method == "declineChatJoinRequest" - # assert request.data == {} assert response == prepare_result.result @pytest.mark.asyncio async def test_bot_method(self, bot: MockedBot): - prepare_result = bot.add_result_for(DeclineChatJoinRequest, ok=True, result=None) + prepare_result = bot.add_result_for(DeclineChatJoinRequest, ok=True, result=True) response: bool = await bot.decline_chat_join_request( - chat_id=..., - user_id=..., + chat_id=-42, + user_id=42, ) request: Request = bot.get_request() assert request.method == "declineChatJoinRequest" - # assert request.data == {} assert response == prepare_result.result diff --git a/tests/test_api/test_methods/test_edit_chat_invite_link.py b/tests/test_api/test_methods/test_edit_chat_invite_link.py index b0c055c7..a1fd6a10 100644 --- a/tests/test_api/test_methods/test_edit_chat_invite_link.py +++ b/tests/test_api/test_methods/test_edit_chat_invite_link.py @@ -17,6 +17,7 @@ class TestEditChatInviteLink: creator=User(id=42, is_bot=False, first_name="User"), is_primary=False, is_revoked=False, + creates_join_request=False, ), ) @@ -25,7 +26,6 @@ class TestEditChatInviteLink: ) request: Request = bot.get_request() assert request.method == "editChatInviteLink" - # assert request.data == {} assert response == prepare_result.result async def test_bot_method(self, bot: MockedBot): @@ -37,6 +37,7 @@ class TestEditChatInviteLink: creator=User(id=42, is_bot=False, first_name="User"), is_primary=False, is_revoked=False, + creates_join_request=False, ), ) @@ -45,5 +46,4 @@ class TestEditChatInviteLink: ) request: Request = bot.get_request() assert request.method == "editChatInviteLink" - # assert request.data == {} assert response == prepare_result.result diff --git a/tests/test_api/test_methods/test_revoke_chat_invite_link.py b/tests/test_api/test_methods/test_revoke_chat_invite_link.py index fc30ff69..b26b5d11 100644 --- a/tests/test_api/test_methods/test_revoke_chat_invite_link.py +++ b/tests/test_api/test_methods/test_revoke_chat_invite_link.py @@ -17,6 +17,7 @@ class TestRevokeChatInviteLink: creator=User(id=42, is_bot=False, first_name="User"), is_primary=False, is_revoked=True, + creates_join_request=False, ), ) @@ -26,7 +27,6 @@ class TestRevokeChatInviteLink: ) request: Request = bot.get_request() assert request.method == "revokeChatInviteLink" - # assert request.data == {} assert response == prepare_result.result async def test_bot_method(self, bot: MockedBot): @@ -38,6 +38,7 @@ class TestRevokeChatInviteLink: creator=User(id=42, is_bot=False, first_name="User"), is_primary=False, is_revoked=True, + creates_join_request=False, ), ) @@ -47,5 +48,4 @@ class TestRevokeChatInviteLink: ) request: Request = bot.get_request() assert request.method == "revokeChatInviteLink" - # assert request.data == {} assert response == prepare_result.result diff --git a/tests/test_api/test_types/test_chat_join_request.py b/tests/test_api/test_types/test_chat_join_request.py new file mode 100644 index 00000000..b5d124a3 --- /dev/null +++ b/tests/test_api/test_types/test_chat_join_request.py @@ -0,0 +1,32 @@ +import datetime + +from aiogram.methods import ApproveChatJoinRequest, DeclineChatJoinRequest +from aiogram.types import Chat, ChatJoinRequest, User + + +class TestChatJoinRequest: + def test_approve_alias(self): + chat_join_request = ChatJoinRequest( + chat=Chat(id=-42, type="supergroup"), + from_user=User(id=42, is_bot=False, first_name="Test"), + date=datetime.datetime.now(), + ) + + api_method = chat_join_request.approve() + + assert isinstance(api_method, ApproveChatJoinRequest) + assert api_method.chat_id == chat_join_request.chat.id + assert api_method.user_id == chat_join_request.from_user.id + + def test_decline_alias(self): + chat_join_request = ChatJoinRequest( + chat=Chat(id=-42, type="supergroup"), + from_user=User(id=42, is_bot=False, first_name="Test"), + date=datetime.datetime.now(), + ) + + api_method = chat_join_request.decline() + + assert isinstance(api_method, DeclineChatJoinRequest) + assert api_method.chat_id == chat_join_request.chat.id + assert api_method.user_id == chat_join_request.from_user.id diff --git a/tests/test_dispatcher/test_dispatcher.py b/tests/test_dispatcher/test_dispatcher.py index 30f10970..f04ba06a 100644 --- a/tests/test_dispatcher/test_dispatcher.py +++ b/tests/test_dispatcher/test_dispatcher.py @@ -15,6 +15,7 @@ from aiogram.methods import GetMe, GetUpdates, SendMessage from aiogram.types import ( CallbackQuery, Chat, + ChatJoinRequest, ChatMemberMember, ChatMemberUpdated, ChosenInlineResult, @@ -418,6 +419,19 @@ class TestDispatcher: True, True, ), + pytest.param( + "chat_join_request", + Update( + update_id=42, + chat_join_request=ChatJoinRequest( + chat=Chat(id=42, type="private"), + from_user=User(id=42, is_bot=False, first_name="Test"), + date=datetime.datetime.now(), + ), + ), + True, + True, + ), ], ) async def test_listen_update(