mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-12 10:11:52 +00:00
Upgrade architecture + 5.0 Bot API (#469)
Upgrade architecture + 5.0 Bot API (#469) * Moved `methods`, `types` and `client` to root package * Removed update handler from routers to dispatcher * Reworked events propagation mechanism to handlers * Reworked inner middlewares logic (very small change) * Updated to Bot API 5.0 * Initial migration from MkDocs to Sphinx + config for readthedocs
This commit is contained in:
parent
566b7ff282
commit
4008a3114d
608 changed files with 12537 additions and 6427 deletions
|
|
@ -1,4 +1,4 @@
|
|||
from aiogram.api.client.telegram import PRODUCTION
|
||||
from aiogram.client.telegram import PRODUCTION, TelegramAPIServer
|
||||
|
||||
|
||||
class TestAPIServer:
|
||||
|
|
@ -9,3 +9,13 @@ class TestAPIServer:
|
|||
def test_file_url(self):
|
||||
file_url = PRODUCTION.file_url(token="42:TEST", path="path")
|
||||
assert file_url == "https://api.telegram.org/file/bot42:TEST/path"
|
||||
|
||||
def test_from_base(self):
|
||||
local_server = TelegramAPIServer.from_base("http://localhost:8081", is_local=True)
|
||||
|
||||
method_url = local_server.api_url("42:TEST", method="apiMethod")
|
||||
file_url = local_server.file_url(token="42:TEST", path="path")
|
||||
|
||||
assert method_url == "http://localhost:8081/bot42:TEST/apiMethod"
|
||||
assert file_url == "http://localhost:8081/file/bot42:TEST/path"
|
||||
assert local_server.is_local
|
||||
|
|
|
|||
|
|
@ -5,15 +5,16 @@ import pytest
|
|||
from aresponses import ResponsesMockServer
|
||||
|
||||
from aiogram import Bot
|
||||
from aiogram.api.client.session.aiohttp import AiohttpSession
|
||||
from aiogram.api.methods import GetFile, GetMe
|
||||
from aiogram.api.types import File, PhotoSize
|
||||
from aiogram.client.session.aiohttp import AiohttpSession
|
||||
from aiogram.methods import GetFile, GetMe
|
||||
from aiogram.types import File, PhotoSize
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
try:
|
||||
from asynctest import CoroutineMock, patch
|
||||
except ImportError:
|
||||
from unittest.mock import AsyncMock as CoroutineMock, patch # type: ignore
|
||||
from unittest.mock import AsyncMock as CoroutineMock # type: ignore
|
||||
from unittest.mock import patch
|
||||
|
||||
|
||||
class TestBot:
|
||||
|
|
@ -38,7 +39,7 @@ class TestBot:
|
|||
method = GetMe()
|
||||
|
||||
with patch(
|
||||
"aiogram.api.client.session.aiohttp.AiohttpSession.make_request",
|
||||
"aiogram.client.session.aiohttp.AiohttpSession.make_request",
|
||||
new_callable=CoroutineMock,
|
||||
) as mocked_make_request:
|
||||
await bot(method)
|
||||
|
|
@ -51,16 +52,16 @@ class TestBot:
|
|||
await session.create_session()
|
||||
|
||||
with patch(
|
||||
"aiogram.api.client.session.aiohttp.AiohttpSession.close", new_callable=CoroutineMock
|
||||
"aiogram.client.session.aiohttp.AiohttpSession.close", new_callable=CoroutineMock
|
||||
) as mocked_close:
|
||||
await bot.close()
|
||||
await bot.session.close()
|
||||
mocked_close.assert_awaited()
|
||||
|
||||
@pytest.mark.asyncio
|
||||
@pytest.mark.parametrize("close", [True, False])
|
||||
async def test_context_manager(self, close: bool):
|
||||
with patch(
|
||||
"aiogram.api.client.session.aiohttp.AiohttpSession.close", new_callable=CoroutineMock
|
||||
"aiogram.client.session.aiohttp.AiohttpSession.close", new_callable=CoroutineMock
|
||||
) as mocked_close:
|
||||
async with Bot("42:TEST", session=AiohttpSession()).context(auto_close=close) as bot:
|
||||
assert isinstance(bot, Bot)
|
||||
|
|
|
|||
|
|
@ -1,20 +1,21 @@
|
|||
from typing import AsyncContextManager, AsyncGenerator
|
||||
|
||||
import aiohttp
|
||||
import aiohttp_socks
|
||||
import pytest
|
||||
from aresponses import ResponsesMockServer
|
||||
|
||||
from aiogram import Bot
|
||||
from aiogram.api.client.session.aiohttp import AiohttpSession
|
||||
from aiogram.api.methods import Request, TelegramMethod
|
||||
from aiogram.api.types import InputFile, UNSET
|
||||
from aiogram.client.session import aiohttp
|
||||
from aiogram.client.session.aiohttp import AiohttpSession
|
||||
from aiogram.methods import Request, TelegramMethod
|
||||
from aiogram.types import InputFile, UNSET
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
try:
|
||||
from asynctest import CoroutineMock, patch
|
||||
except ImportError:
|
||||
from unittest.mock import AsyncMock as CoroutineMock, patch # type: ignore
|
||||
from unittest.mock import AsyncMock as CoroutineMock # type: ignore
|
||||
from unittest.mock import patch
|
||||
|
||||
|
||||
class BareInputFile(InputFile):
|
||||
|
|
@ -172,7 +173,7 @@ class TestAiohttpSession:
|
|||
|
||||
call = TestMethod()
|
||||
with patch(
|
||||
"aiogram.api.client.session.base.BaseSession.raise_for_status"
|
||||
"aiogram.client.session.base.BaseSession.raise_for_status"
|
||||
) as patched_raise_for_status:
|
||||
result = await session.make_request(bot, call)
|
||||
assert isinstance(result, int)
|
||||
|
|
@ -206,12 +207,12 @@ class TestAiohttpSession:
|
|||
assert isinstance(session, AsyncContextManager)
|
||||
|
||||
with patch(
|
||||
"aiogram.api.client.session.aiohttp.AiohttpSession.create_session",
|
||||
"aiogram.client.session.aiohttp.AiohttpSession.create_session",
|
||||
new_callable=CoroutineMock,
|
||||
) as mocked_create_session, patch(
|
||||
"aiogram.api.client.session.aiohttp.AiohttpSession.close", new_callable=CoroutineMock
|
||||
"aiogram.client.session.aiohttp.AiohttpSession.close", new_callable=CoroutineMock
|
||||
) as mocked_close:
|
||||
async with session as ctx:
|
||||
assert session == ctx
|
||||
mocked_close.awaited_once()
|
||||
mocked_create_session.awaited_once()
|
||||
mocked_close.assert_awaited_once()
|
||||
mocked_create_session.assert_awaited_once()
|
||||
|
|
|
|||
|
|
@ -4,15 +4,16 @@ from typing import AsyncContextManager, AsyncGenerator, Optional
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.client.session.base import BaseSession, T
|
||||
from aiogram.api.client.telegram import PRODUCTION, TelegramAPIServer
|
||||
from aiogram.api.methods import GetMe, Response, TelegramMethod
|
||||
from aiogram.api.types import UNSET
|
||||
from aiogram.client.session.base import BaseSession, T
|
||||
from aiogram.client.telegram import PRODUCTION, TelegramAPIServer
|
||||
from aiogram.methods import GetMe, Response, TelegramMethod
|
||||
from aiogram.types import UNSET
|
||||
|
||||
try:
|
||||
from asynctest import CoroutineMock, patch
|
||||
except ImportError:
|
||||
from unittest.mock import AsyncMock as CoroutineMock, patch # type: ignore
|
||||
from unittest.mock import AsyncMock as CoroutineMock # type: ignore
|
||||
from unittest.mock import patch
|
||||
|
||||
|
||||
class CustomSession(BaseSession):
|
||||
|
|
@ -169,4 +170,4 @@ class TestBaseSession:
|
|||
) as mocked_close:
|
||||
async with session as ctx:
|
||||
assert session == ctx
|
||||
mocked_close.awaited_once()
|
||||
mocked_close.assert_awaited_once()
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import AddStickerToSet, Request
|
||||
from aiogram.methods import AddStickerToSet, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import AnswerCallbackQuery, Request
|
||||
from aiogram.methods import AnswerCallbackQuery, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,8 @@
|
|||
import pytest
|
||||
|
||||
from aiogram import Bot
|
||||
from aiogram.api.methods import AnswerInlineQuery, Request
|
||||
from aiogram.api.types import InlineQueryResult, InlineQueryResultPhoto
|
||||
from aiogram.methods import AnswerInlineQuery, Request
|
||||
from aiogram.types import InlineQueryResult, InlineQueryResultPhoto
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import AnswerPreCheckoutQuery, Request
|
||||
from aiogram.methods import AnswerPreCheckoutQuery, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import AnswerShippingQuery, Request
|
||||
from aiogram.methods import AnswerShippingQuery, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ from typing import Dict, Optional
|
|||
import pytest
|
||||
|
||||
from aiogram import Bot
|
||||
from aiogram.api.methods.base import prepare_parse_mode
|
||||
from aiogram.methods.base import prepare_parse_mode
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
26
tests/test_api/test_methods/test_close.py
Normal file
26
tests/test_api/test_methods/test_close.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.methods import Close, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
class TestClose:
|
||||
@pytest.mark.asyncio
|
||||
async def test_method(self, bot: MockedBot):
|
||||
prepare_result = bot.add_result_for(Close, ok=True, result=True)
|
||||
|
||||
response: bool = await Close()
|
||||
request: Request = bot.get_request()
|
||||
assert request.method == "close"
|
||||
# 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(Close, ok=True, result=True)
|
||||
|
||||
response: bool = await bot.close()
|
||||
request: Request = bot.get_request()
|
||||
assert request.method == "close"
|
||||
# assert request.data == {}
|
||||
assert response == prepare_result.result
|
||||
35
tests/test_api/test_methods/test_copy_message.py
Normal file
35
tests/test_api/test_methods/test_copy_message.py
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.methods import CopyMessage, Request
|
||||
from aiogram.types import MessageId
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
class TestCopyMessage:
|
||||
@pytest.mark.asyncio
|
||||
async def test_method(self, bot: MockedBot):
|
||||
prepare_result = bot.add_result_for(CopyMessage, ok=True, result=MessageId(message_id=42))
|
||||
|
||||
response: MessageId = await CopyMessage(
|
||||
chat_id=42,
|
||||
from_chat_id=42,
|
||||
message_id=42,
|
||||
)
|
||||
request: Request = bot.get_request()
|
||||
assert request.method == "copyMessage"
|
||||
# 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(CopyMessage, ok=True, result=MessageId(message_id=42))
|
||||
|
||||
response: MessageId = await bot.copy_message(
|
||||
chat_id=42,
|
||||
from_chat_id=42,
|
||||
message_id=42,
|
||||
)
|
||||
request: Request = bot.get_request()
|
||||
assert request.method == "copyMessage"
|
||||
# assert request.data == {}
|
||||
assert response == prepare_result.result
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import CreateNewStickerSet, Request
|
||||
from aiogram.methods import CreateNewStickerSet, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import DeleteChatPhoto, Request
|
||||
from aiogram.methods import DeleteChatPhoto, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import DeleteChatStickerSet, Request
|
||||
from aiogram.methods import DeleteChatStickerSet, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import DeleteMessage, Request
|
||||
from aiogram.methods import DeleteMessage, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import DeleteStickerFromSet, Request
|
||||
from aiogram.methods import DeleteStickerFromSet, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import DeleteWebhook, Request
|
||||
from aiogram.methods import DeleteWebhook, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ from typing import Union
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import EditMessageCaption, Request
|
||||
from aiogram.api.types import Chat, Message
|
||||
from aiogram.methods import EditMessageCaption, Request
|
||||
from aiogram.types import Chat, Message
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ from typing import Union
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import EditMessageLiveLocation, Request
|
||||
from aiogram.api.types import Message
|
||||
from aiogram.methods import EditMessageLiveLocation, Request
|
||||
from aiogram.types import Message
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ from typing import Union
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import EditMessageMedia, Request
|
||||
from aiogram.api.types import BufferedInputFile, InputMedia, InputMediaPhoto, Message
|
||||
from aiogram.methods import EditMessageMedia, Request
|
||||
from aiogram.types import BufferedInputFile, InputMedia, InputMediaPhoto, Message
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ from typing import Union
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import EditMessageReplyMarkup, Request
|
||||
from aiogram.api.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
|
||||
from aiogram.methods import EditMessageReplyMarkup, Request
|
||||
from aiogram.types import InlineKeyboardButton, InlineKeyboardMarkup, Message
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ from typing import Union
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import EditMessageText, Request
|
||||
from aiogram.api.types import Message
|
||||
from aiogram.methods import EditMessageText, Request
|
||||
from aiogram.types import Message
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import ExportChatInviteLink, Request
|
||||
from aiogram.methods import ExportChatInviteLink, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import datetime
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import ForwardMessage, Request
|
||||
from aiogram.api.types import Chat, Message
|
||||
from aiogram.methods import ForwardMessage, Request
|
||||
from aiogram.types import Chat, Message
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import GetChat, Request
|
||||
from aiogram.api.types import Chat
|
||||
from aiogram.methods import GetChat, Request
|
||||
from aiogram.types import Chat
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ from typing import List
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import GetChatAdministrators, Request
|
||||
from aiogram.api.types import ChatMember, User
|
||||
from aiogram.methods import GetChatAdministrators, Request
|
||||
from aiogram.types import ChatMember, User
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import GetChatMember, Request
|
||||
from aiogram.api.types import ChatMember, User
|
||||
from aiogram.methods import GetChatMember, Request
|
||||
from aiogram.types import ChatMember, User
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import GetChatMembersCount, Request
|
||||
from aiogram.methods import GetChatMembersCount, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import GetFile, Request
|
||||
from aiogram.api.types import File
|
||||
from aiogram.methods import GetFile, Request
|
||||
from aiogram.types import File
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ from typing import List
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import GetGameHighScores, Request
|
||||
from aiogram.api.types import GameHighScore, User
|
||||
from aiogram.methods import GetGameHighScores, Request
|
||||
from aiogram.types import GameHighScore, User
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import GetMe, Request
|
||||
from aiogram.api.types import User
|
||||
from aiogram.methods import GetMe, Request
|
||||
from aiogram.types import User
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ from typing import List
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import GetMyCommands, Request
|
||||
from aiogram.api.types import BotCommand
|
||||
from aiogram.methods import GetMyCommands, Request
|
||||
from aiogram.types import BotCommand
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import GetStickerSet, Request
|
||||
from aiogram.api.types import Sticker, StickerSet
|
||||
from aiogram.methods import GetStickerSet, Request
|
||||
from aiogram.types import Sticker, StickerSet
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ from typing import List
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import GetUpdates, Request
|
||||
from aiogram.api.types import Update
|
||||
from aiogram.methods import GetUpdates, Request
|
||||
from aiogram.types import Update
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import GetUserProfilePhotos, Request
|
||||
from aiogram.api.types import PhotoSize, UserProfilePhotos
|
||||
from aiogram.methods import GetUserProfilePhotos, Request
|
||||
from aiogram.types import PhotoSize, UserProfilePhotos
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import GetWebhookInfo, Request
|
||||
from aiogram.api.types import WebhookInfo
|
||||
from aiogram.methods import GetWebhookInfo, Request
|
||||
from aiogram.types import WebhookInfo
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import KickChatMember, Request
|
||||
from aiogram.methods import KickChatMember, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import LeaveChat, Request
|
||||
from aiogram.methods import LeaveChat, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
26
tests/test_api/test_methods/test_log_out.py
Normal file
26
tests/test_api/test_methods/test_log_out.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.methods import LogOut, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
class TestLogOut:
|
||||
@pytest.mark.asyncio
|
||||
async def test_method(self, bot: MockedBot):
|
||||
prepare_result = bot.add_result_for(LogOut, ok=True, result=True)
|
||||
|
||||
response: bool = await LogOut()
|
||||
request: Request = bot.get_request()
|
||||
assert request.method == "logOut"
|
||||
# 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(LogOut, ok=True, result=True)
|
||||
|
||||
response: bool = await bot.log_out()
|
||||
request: Request = bot.get_request()
|
||||
assert request.method == "logOut"
|
||||
# assert request.data == {}
|
||||
assert response == prepare_result.result
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import PinChatMessage, Request
|
||||
from aiogram.methods import PinChatMessage, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import PromoteChatMember, Request
|
||||
from aiogram.methods import PromoteChatMember, Request
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, RestrictChatMember
|
||||
from aiogram.api.types import ChatPermissions
|
||||
from aiogram.methods import Request, RestrictChatMember
|
||||
from aiogram.types import ChatPermissions
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import datetime
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendAnimation
|
||||
from aiogram.api.types import Animation, Chat, Message
|
||||
from aiogram.methods import Request, SendAnimation
|
||||
from aiogram.types import Animation, Chat, Message
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import datetime
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendAudio
|
||||
from aiogram.api.types import Audio, Chat, File, Message
|
||||
from aiogram.methods import Request, SendAudio
|
||||
from aiogram.types import Audio, Chat, File, Message
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendChatAction
|
||||
from aiogram.methods import Request, SendChatAction
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import datetime
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendContact
|
||||
from aiogram.api.types import Chat, Contact, Message
|
||||
from aiogram.methods import Request, SendContact
|
||||
from aiogram.types import Chat, Contact, Message
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendDice
|
||||
from aiogram.api.types import Message
|
||||
from aiogram.methods import Request, SendDice
|
||||
from aiogram.types import Message
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import datetime
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendDocument
|
||||
from aiogram.api.types import Chat, Document, Message
|
||||
from aiogram.methods import Request, SendDocument
|
||||
from aiogram.types import Chat, Document, Message
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import datetime
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendGame
|
||||
from aiogram.api.types import Chat, Game, Message, PhotoSize
|
||||
from aiogram.methods import Request, SendGame
|
||||
from aiogram.types import Chat, Game, Message, PhotoSize
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import datetime
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendInvoice
|
||||
from aiogram.api.types import Chat, Invoice, LabeledPrice, Message
|
||||
from aiogram.methods import Request, SendInvoice
|
||||
from aiogram.types import Chat, Invoice, LabeledPrice, Message
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import datetime
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendLocation
|
||||
from aiogram.api.types import Chat, Location, Message
|
||||
from aiogram.methods import Request, SendLocation
|
||||
from aiogram.types import Chat, Location, Message
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@ from typing import List
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendMediaGroup
|
||||
from aiogram.api.types import (
|
||||
from aiogram.methods import Request, SendMediaGroup
|
||||
from aiogram.types import (
|
||||
BufferedInputFile,
|
||||
Chat,
|
||||
InputMediaPhoto,
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import datetime
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendMessage
|
||||
from aiogram.api.types import Chat, Message
|
||||
from aiogram.methods import Request, SendMessage
|
||||
from aiogram.types import Chat, Message
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import datetime
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendPhoto
|
||||
from aiogram.api.types import Chat, Message, PhotoSize
|
||||
from aiogram.methods import Request, SendPhoto
|
||||
from aiogram.types import Chat, Message, PhotoSize
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import datetime
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendPoll
|
||||
from aiogram.api.types import Chat, Message, Poll, PollOption
|
||||
from aiogram.methods import Request, SendPoll
|
||||
from aiogram.types import Chat, Message, Poll, PollOption
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import datetime
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendSticker
|
||||
from aiogram.api.types import Chat, Message, Sticker
|
||||
from aiogram.methods import Request, SendSticker
|
||||
from aiogram.types import Chat, Message, Sticker
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import datetime
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendVenue
|
||||
from aiogram.api.types import Chat, Location, Message, Venue
|
||||
from aiogram.methods import Request, SendVenue
|
||||
from aiogram.types import Chat, Location, Message, Venue
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import datetime
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendVideo
|
||||
from aiogram.api.types import Chat, Message, Video
|
||||
from aiogram.methods import Request, SendVideo
|
||||
from aiogram.types import Chat, Message, Video
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import datetime
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendVideoNote
|
||||
from aiogram.api.types import BufferedInputFile, Chat, Message, VideoNote
|
||||
from aiogram.methods import Request, SendVideoNote
|
||||
from aiogram.types import BufferedInputFile, Chat, Message, VideoNote
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ import datetime
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SendVoice
|
||||
from aiogram.api.types import Chat, Message, Voice
|
||||
from aiogram.methods import Request, SendVoice
|
||||
from aiogram.types import Chat, Message, Voice
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SetChatAdministratorCustomTitle, SetChatTitle
|
||||
from aiogram.methods import Request, SetChatAdministratorCustomTitle, SetChatTitle
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SetChatDescription
|
||||
from aiogram.methods import Request, SetChatDescription
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SetChatPermissions
|
||||
from aiogram.api.types import ChatPermissions
|
||||
from aiogram.methods import Request, SetChatPermissions
|
||||
from aiogram.types import ChatPermissions
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SetChatPhoto
|
||||
from aiogram.api.types import BufferedInputFile, InputFile
|
||||
from aiogram.methods import Request, SetChatPhoto
|
||||
from aiogram.types import BufferedInputFile, InputFile
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SetChatStickerSet
|
||||
from aiogram.methods import Request, SetChatStickerSet
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SetChatTitle
|
||||
from aiogram.methods import Request, SetChatTitle
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ from typing import Union
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SetGameScore
|
||||
from aiogram.api.types import Message
|
||||
from aiogram.methods import Request, SetGameScore
|
||||
from aiogram.types import Message
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SetMyCommands
|
||||
from aiogram.api.types import BotCommand
|
||||
from aiogram.methods import Request, SetMyCommands
|
||||
from aiogram.types import BotCommand
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
@ -21,7 +21,9 @@ class TestSetMyCommands:
|
|||
async def test_bot_method(self, bot: MockedBot):
|
||||
prepare_result = bot.add_result_for(SetMyCommands, ok=True, result=None)
|
||||
|
||||
response: bool = await bot.set_my_commands(commands=[],)
|
||||
response: bool = await bot.set_my_commands(
|
||||
commands=[],
|
||||
)
|
||||
request: Request = bot.get_request()
|
||||
assert request.method == "setMyCommands"
|
||||
# assert request.data == {}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SetPassportDataErrors
|
||||
from aiogram.api.types import PassportElementError
|
||||
from aiogram.methods import Request, SetPassportDataErrors
|
||||
from aiogram.types import PassportElementError
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SetStickerPositionInSet
|
||||
from aiogram.methods import Request, SetStickerPositionInSet
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SetStickerSetThumb
|
||||
from aiogram.methods import Request, SetStickerSetThumb
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, SetWebhook
|
||||
from aiogram.methods import Request, SetWebhook
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -2,8 +2,8 @@ from typing import Union
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, StopMessageLiveLocation
|
||||
from aiogram.api.types import Message
|
||||
from aiogram.methods import Request, StopMessageLiveLocation
|
||||
from aiogram.types import Message
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, StopPoll
|
||||
from aiogram.api.types import Poll, PollOption
|
||||
from aiogram.methods import Request, StopPoll
|
||||
from aiogram.types import Poll, PollOption
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, UnbanChatMember
|
||||
from aiogram.methods import Request, UnbanChatMember
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
30
tests/test_api/test_methods/test_unpin_all_chat_messages.py
Normal file
30
tests/test_api/test_methods/test_unpin_all_chat_messages.py
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.methods import Request, UnpinAllChatMessages
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
class TestUnpinAllChatMessages:
|
||||
@pytest.mark.asyncio
|
||||
async def test_method(self, bot: MockedBot):
|
||||
prepare_result = bot.add_result_for(UnpinAllChatMessages, ok=True, result=True)
|
||||
|
||||
response: bool = await UnpinAllChatMessages(
|
||||
chat_id=42,
|
||||
)
|
||||
request: Request = bot.get_request()
|
||||
assert request.method == "unpinAllChatMessages"
|
||||
# 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(UnpinAllChatMessages, ok=True, result=True)
|
||||
|
||||
response: bool = await bot.unpin_all_chat_messages(
|
||||
chat_id=42,
|
||||
)
|
||||
request: Request = bot.get_request()
|
||||
assert request.method == "unpinAllChatMessages"
|
||||
# assert request.data == {}
|
||||
assert response == prepare_result.result
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, UnpinChatMessage
|
||||
from aiogram.methods import Request, UnpinChatMessage
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import Request, UploadStickerFile
|
||||
from aiogram.api.types import BufferedInputFile, File
|
||||
from aiogram.methods import Request, UploadStickerFile
|
||||
from aiogram.types import BufferedInputFile, File
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
from aiogram.api.methods import AnswerCallbackQuery
|
||||
from aiogram.api.types import CallbackQuery, User
|
||||
from aiogram.methods import AnswerCallbackQuery
|
||||
from aiogram.types import CallbackQuery, User
|
||||
|
||||
|
||||
class TestCallbackQuery:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.types import ChatMember, User
|
||||
from aiogram.types import ChatMember, User
|
||||
|
||||
user = User(id=42, is_bot=False, first_name="User", last_name=None)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
from aiogram.api.methods import AnswerInlineQuery
|
||||
from aiogram.api.types import InlineQuery, User
|
||||
from aiogram.methods import AnswerInlineQuery
|
||||
from aiogram.types import InlineQuery, User
|
||||
|
||||
|
||||
class TestInlineQuery:
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@ import pytest
|
|||
from aresponses import ResponsesMockServer
|
||||
|
||||
from aiogram import Bot
|
||||
from aiogram.api.types import BufferedInputFile, FSInputFile, InputFile, URLInputFile
|
||||
from aiogram.types import BufferedInputFile, FSInputFile, InputFile, URLInputFile
|
||||
|
||||
|
||||
class TestInputFile:
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ from typing import Any, Dict, Type, Union
|
|||
|
||||
import pytest
|
||||
|
||||
from aiogram.api.methods import (
|
||||
from aiogram.methods import (
|
||||
SendAnimation,
|
||||
SendAudio,
|
||||
SendContact,
|
||||
|
|
@ -22,7 +22,7 @@ from aiogram.api.methods import (
|
|||
SendVideoNote,
|
||||
SendVoice,
|
||||
)
|
||||
from aiogram.api.types import (
|
||||
from aiogram.types import (
|
||||
Animation,
|
||||
Audio,
|
||||
Chat,
|
||||
|
|
@ -45,7 +45,7 @@ from aiogram.api.types import (
|
|||
VideoNote,
|
||||
Voice,
|
||||
)
|
||||
from aiogram.api.types.message import ContentType, Message
|
||||
from aiogram.types.message import ContentType, Message
|
||||
|
||||
|
||||
class TestMessage:
|
||||
|
|
@ -448,7 +448,12 @@ class TestMessage:
|
|||
["sticker", dict(sticker="sticker"), SendSticker],
|
||||
[
|
||||
"venue",
|
||||
dict(latitude=0.42, longitude=0.42, title="title", address="address",),
|
||||
dict(
|
||||
latitude=0.42,
|
||||
longitude=0.42,
|
||||
title="title",
|
||||
address="address",
|
||||
),
|
||||
SendVenue,
|
||||
],
|
||||
["video", dict(video="video"), SendVideo],
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
from aiogram.api.methods import AnswerPreCheckoutQuery
|
||||
from aiogram.api.types import PreCheckoutQuery, User
|
||||
from aiogram.methods import AnswerPreCheckoutQuery
|
||||
from aiogram.types import PreCheckoutQuery, User
|
||||
|
||||
|
||||
class TestPreCheckoutQuery:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.types import ReplyKeyboardRemove
|
||||
from aiogram.types import ReplyKeyboardRemove
|
||||
|
||||
|
||||
class TestReplyKeyboardRemove:
|
||||
|
|
@ -14,8 +14,7 @@ class TestReplyKeyboardRemove:
|
|||
), "Remove keyboard has incorrect default value!"
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"kwargs,expected",
|
||||
[[{}, True], [{"remove_keyboard": True}, True], [{"remove_keyboard": False}, False]],
|
||||
"kwargs,expected", [[{}, True], [{"remove_keyboard": True}, True]],
|
||||
)
|
||||
def test_remove_keyboard_values(self, kwargs, expected):
|
||||
assert ReplyKeyboardRemove(**kwargs).remove_keyboard is expected
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
from aiogram.api.methods import AnswerShippingQuery
|
||||
from aiogram.api.types import LabeledPrice, ShippingAddress, ShippingOption, ShippingQuery, User
|
||||
from aiogram.methods import AnswerShippingQuery
|
||||
from aiogram.types import LabeledPrice, ShippingAddress, ShippingOption, ShippingQuery, User
|
||||
|
||||
|
||||
class TestInlineQuery:
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.types import User
|
||||
from aiogram.types import User
|
||||
|
||||
|
||||
class TestUser:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue