Added full support of Bot API 7.2 (#1444)

* Added base support of Bot API 7.2

* Added base support of Bot API 7.2

* Fixing tests and content types for Telegram Bot API 7.2 update (#1453)

* Fixing tests and content types for Telegram Bot API 7.2

* Adding changelog for 1453 PR

* Fixes + coverage

* Replace `BusinessConnection.date` type

* Reformat code

* Refactor UserContextMiddleware to use EventContext class

This update significantly refactors UserContextMiddleware to leverage a new class, EventContext. Instead of resolving event context as a tuple, it now produces an instance of EventContext. Additional adjustments include supporting a business connection ID for event context identification and facilitating backwards compatibility. Tests and other files were also updated accordingly for these changes.

* Cover FSM key builder (business_connection_id

* Added changelog

---------

Co-authored-by: RoLOQ <roman.fedunn@gmail.com>
This commit is contained in:
Alex Root Junior 2024-04-22 13:48:49 +03:00 committed by GitHub
parent 5f157beb26
commit 057478621b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
147 changed files with 3509 additions and 651 deletions

View file

@ -1,3 +1,4 @@
from aiogram.enums import StickerFormat
from aiogram.methods import AddStickerToSet
from aiogram.types import InputSticker
from tests.mocked_bot import MockedBot
@ -10,7 +11,9 @@ class TestAddStickerToSet:
response: bool = await bot.add_sticker_to_set(
user_id=42,
name="test stickers pack",
sticker=InputSticker(sticker="file id", emoji_list=[":)"]),
sticker=InputSticker(
sticker="file id", format=StickerFormat.STATIC, emoji_list=[":)"]
),
)
request = bot.get_request()
assert response == prepare_result.result

View file

@ -13,8 +13,10 @@ class TestCreateNewStickerSet:
name="name",
title="title",
stickers=[
InputSticker(sticker="file id", emoji_list=[":)"]),
InputSticker(sticker=FSInputFile("file.png"), emoji_list=["=("]),
InputSticker(sticker="file id", format=StickerFormat.STATIC, emoji_list=[":)"]),
InputSticker(
sticker=FSInputFile("file.png"), format=StickerFormat.STATIC, emoji_list=["=("]
),
],
sticker_format=StickerFormat.STATIC,
)

View file

@ -0,0 +1,24 @@
from aiogram.methods import GetBusinessConnection
from aiogram.types import BusinessConnection, User
from tests.mocked_bot import MockedBot
class TestGetBusinessConnection:
async def test_bot_method(self, bot: MockedBot):
prepare_result = bot.add_result_for(
GetBusinessConnection,
ok=True,
result=BusinessConnection(
id="test",
user=User(id=42, is_bot=False, first_name="User"),
user_chat_id=42,
date=42,
can_reply=True,
is_enabled=True,
),
)
response: BusinessConnection = await bot.get_business_connection(
business_connection_id="test"
)
request = bot.get_request()
assert response == prepare_result.result

View file

@ -0,0 +1,21 @@
from aiogram.methods import ReplaceStickerInSet
from aiogram.types import InputSticker
from tests.mocked_bot import MockedBot
class TestReplaceStickerInSet:
async def test_bot_method(self, bot: MockedBot):
prepare_result = bot.add_result_for(ReplaceStickerInSet, ok=True, result=True)
response: bool = await bot.replace_sticker_in_set(
user_id=42,
name="test",
old_sticker="test",
sticker=InputSticker(
sticker="test",
format="static",
emoji_list=["test"],
),
)
request = bot.get_request()
assert response == prepare_result.result

View file

@ -1,3 +1,4 @@
from aiogram.enums import StickerFormat
from aiogram.methods import Request, SetStickerSetThumbnail
from tests.mocked_bot import MockedBot
@ -6,6 +7,8 @@ class TestSetStickerSetThumbnail:
async def test_bot_method(self, bot: MockedBot):
prepare_result = bot.add_result_for(SetStickerSetThumbnail, ok=True, result=None)
response: bool = await bot.set_sticker_set_thumbnail(name="test", user_id=42)
response: bool = await bot.set_sticker_set_thumbnail(
name="test", format=StickerFormat.STATIC, user_id=42
)
request = bot.get_request()
assert response == prepare_result.result