mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
PoC: Bot instance inside method shortcuts using pydantic Validation Context (#1210)
* PoC: Mount objects to the Bot instance, bind shortcuts to configured instance * Fixe docstring of the bind method * Pass Bot instance explicitly to the URLInputFile * Added tests * Added changelog * Refactor aiogram client and update tests Refactored base.py to improve code readability by separating response_type operation from model_validate(). Also, adjusted the parameters in URLInputFile() within test_input_file.py for better test coverage. Updated input_file.py to streamline read method and avoid unnecessary instantiation of Bot class. Lastly, adjusted typing in methods/base.py to enhance code clarity. * Update changelog
This commit is contained in:
parent
c39a803747
commit
a7b92bb050
19 changed files with 228 additions and 111 deletions
36
tests/test_api/test_client/test_context_controller.py
Normal file
36
tests/test_api/test_client/test_context_controller.py
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
from aiogram.client.context_controller import BotContextController
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
class MyModel(BotContextController):
|
||||
id: int
|
||||
|
||||
|
||||
class TestBotContextController:
|
||||
def test_via_model_validate(self, bot: MockedBot):
|
||||
my_model = MyModel.model_validate({"id": 1}, context={"bot": bot})
|
||||
assert my_model.id == 1
|
||||
assert my_model._bot == bot
|
||||
|
||||
def test_via_model_validate_none(self):
|
||||
my_model = MyModel.model_validate({"id": 1}, context={})
|
||||
assert my_model.id == 1
|
||||
assert my_model._bot is None
|
||||
|
||||
def test_as(self, bot: MockedBot):
|
||||
my_model = MyModel(id=1).as_(bot)
|
||||
assert my_model.id == 1
|
||||
assert my_model._bot == bot
|
||||
|
||||
def test_as_none(self):
|
||||
my_model = MyModel(id=1).as_(None)
|
||||
assert my_model.id == 1
|
||||
assert my_model._bot is None
|
||||
|
||||
def test_replacement(self, bot: MockedBot):
|
||||
my_model = MyModel(id=1).as_(bot)
|
||||
assert my_model.id == 1
|
||||
assert my_model._bot == bot
|
||||
my_model = my_model.as_(None)
|
||||
assert my_model.id == 1
|
||||
assert my_model._bot is None
|
||||
Loading…
Add table
Add a link
Reference in a new issue