mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-12 10:11:52 +00:00
More class based handlers
This commit is contained in:
parent
b144332287
commit
895b727ddf
24 changed files with 506 additions and 30 deletions
26
tests/test_dispatcher/test_handler/test_callback_query.py
Normal file
26
tests/test_dispatcher/test_handler/test_callback_query.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
from typing import Any
|
||||
|
||||
import pytest
|
||||
from aiogram.api.types import CallbackQuery, User
|
||||
from aiogram.dispatcher.handler import CallbackQueryHandler
|
||||
|
||||
|
||||
class TestCallbackQueryHandler:
|
||||
@pytest.mark.asyncio
|
||||
async def test_attributes_aliases(self):
|
||||
event = CallbackQuery(
|
||||
id="chosen",
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
data="test",
|
||||
chat_instance="test",
|
||||
)
|
||||
|
||||
class MyHandler(CallbackQueryHandler):
|
||||
async def handle(self) -> Any:
|
||||
assert self.event == event
|
||||
assert self.from_user == self.event.from_user
|
||||
assert self.callback_data == self.event.data
|
||||
assert self.message == self.message
|
||||
return True
|
||||
|
||||
assert await MyHandler(event)
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
from typing import Any
|
||||
|
||||
import pytest
|
||||
from aiogram.api.types import CallbackQuery, ChosenInlineResult, User
|
||||
from aiogram.dispatcher.handler import ChosenInlineResultHandler
|
||||
|
||||
|
||||
class TestChosenInlineResultHandler:
|
||||
@pytest.mark.asyncio
|
||||
async def test_attributes_aliases(self):
|
||||
event = ChosenInlineResult(
|
||||
result_id="chosen",
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
query="test",
|
||||
)
|
||||
|
||||
class MyHandler(ChosenInlineResultHandler):
|
||||
async def handle(self) -> Any:
|
||||
assert self.event == event
|
||||
assert self.from_user == self.event.from_user
|
||||
assert self.query == self.event.query
|
||||
return True
|
||||
|
||||
assert await MyHandler(event)
|
||||
25
tests/test_dispatcher/test_handler/test_inline_query.py
Normal file
25
tests/test_dispatcher/test_handler/test_inline_query.py
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
from typing import Any
|
||||
|
||||
import pytest
|
||||
from aiogram.api.types import CallbackQuery, InlineQuery, User
|
||||
from aiogram.dispatcher.handler import InlineQueryHandler
|
||||
|
||||
|
||||
class TestCallbackQueryHandler:
|
||||
@pytest.mark.asyncio
|
||||
async def test_attributes_aliases(self):
|
||||
event = InlineQuery(
|
||||
id="query",
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
query="query",
|
||||
offset="0",
|
||||
)
|
||||
|
||||
class MyHandler(InlineQueryHandler):
|
||||
async def handle(self) -> Any:
|
||||
assert self.event == event
|
||||
assert self.from_user == self.event.from_user
|
||||
assert self.query == self.event.query
|
||||
return True
|
||||
|
||||
assert await MyHandler(event)
|
||||
34
tests/test_dispatcher/test_handler/test_poll.py
Normal file
34
tests/test_dispatcher/test_handler/test_poll.py
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
from typing import Any
|
||||
|
||||
import pytest
|
||||
from aiogram.api.types import (
|
||||
CallbackQuery,
|
||||
InlineQuery,
|
||||
Poll,
|
||||
PollOption,
|
||||
ShippingAddress,
|
||||
ShippingQuery,
|
||||
User,
|
||||
)
|
||||
from aiogram.dispatcher.handler import PollHandler
|
||||
|
||||
|
||||
class TestShippingQueryHandler:
|
||||
@pytest.mark.asyncio
|
||||
async def test_attributes_aliases(self):
|
||||
event = Poll(
|
||||
id="query",
|
||||
question="Q?",
|
||||
options=[PollOption(text="A1", voter_count=1)],
|
||||
is_closed=True,
|
||||
)
|
||||
|
||||
class MyHandler(PollHandler):
|
||||
async def handle(self) -> Any:
|
||||
assert self.event == event
|
||||
assert self.question == self.event.question
|
||||
assert self.options == self.event.options
|
||||
|
||||
return True
|
||||
|
||||
assert await MyHandler(event)
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
from typing import Any
|
||||
|
||||
import pytest
|
||||
from aiogram.api.types import PreCheckoutQuery, User
|
||||
from aiogram.dispatcher.handler import PreCheckoutQueryHandler
|
||||
|
||||
|
||||
class TestPreCheckoutQueryHandler:
|
||||
@pytest.mark.asyncio
|
||||
async def test_attributes_aliases(self):
|
||||
event = PreCheckoutQuery(
|
||||
id="query",
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
currency="BTC",
|
||||
total_amount=7,
|
||||
invoice_payload="payload",
|
||||
)
|
||||
|
||||
class MyHandler(PreCheckoutQueryHandler):
|
||||
async def handle(self) -> Any:
|
||||
assert self.event == event
|
||||
assert self.from_user == self.event.from_user
|
||||
return True
|
||||
|
||||
assert await MyHandler(event)
|
||||
31
tests/test_dispatcher/test_handler/test_shipping_query.py
Normal file
31
tests/test_dispatcher/test_handler/test_shipping_query.py
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
from typing import Any
|
||||
|
||||
import pytest
|
||||
from aiogram.api.types import CallbackQuery, InlineQuery, ShippingAddress, ShippingQuery, User
|
||||
from aiogram.dispatcher.handler import ShippingQueryHandler
|
||||
|
||||
|
||||
class TestShippingQueryHandler:
|
||||
@pytest.mark.asyncio
|
||||
async def test_attributes_aliases(self):
|
||||
event = ShippingQuery(
|
||||
id="query",
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
invoice_payload="payload",
|
||||
shipping_address=ShippingAddress(
|
||||
country_code="country_code",
|
||||
state="state",
|
||||
city="city",
|
||||
street_line1="street_line1",
|
||||
street_line2="street_line2",
|
||||
post_code="post_code",
|
||||
),
|
||||
)
|
||||
|
||||
class MyHandler(ShippingQueryHandler):
|
||||
async def handle(self) -> Any:
|
||||
assert self.event == event
|
||||
assert self.from_user == self.event.from_user
|
||||
return True
|
||||
|
||||
assert await MyHandler(event)
|
||||
Loading…
Add table
Add a link
Reference in a new issue