mirror of
https://github.com/aiogram/aiogram.git
synced 2025-12-06 07:50:32 +00:00
tests(deprecated):
add new check_deprecated context manager for version check, use mark.parametrize from pytest for observer deprecation tests
This commit is contained in:
parent
6cbf9cdde6
commit
c083fcd99a
4 changed files with 40 additions and 22 deletions
7
poetry.lock
generated
7
poetry.lock
generated
|
|
@ -946,7 +946,7 @@ fast = ["uvloop"]
|
|||
proxy = ["aiohttp-socks"]
|
||||
|
||||
[metadata]
|
||||
content-hash = "cd83723d922c4c0a645ef6f9f78447f83f2c1a933be928f8174ef897970acb2a"
|
||||
content-hash = "57137b60a539ba01e8df533db976e2f3eadec37e717cbefbe775dc021a8c2714"
|
||||
python-versions = "^3.7"
|
||||
|
||||
[metadata.files]
|
||||
|
|
@ -1183,6 +1183,11 @@ markupsafe = [
|
|||
{file = "MarkupSafe-1.1.1-cp37-cp37m-manylinux1_x86_64.whl", hash = "sha256:ba59edeaa2fc6114428f1637ffff42da1e311e29382d81b339c1817d37ec93c6"},
|
||||
{file = "MarkupSafe-1.1.1-cp37-cp37m-win32.whl", hash = "sha256:b00c1de48212e4cc9603895652c5c410df699856a2853135b3967591e4beebc2"},
|
||||
{file = "MarkupSafe-1.1.1-cp37-cp37m-win_amd64.whl", hash = "sha256:9bf40443012702a1d2070043cb6291650a0841ece432556f784f004937f0f32c"},
|
||||
{file = "MarkupSafe-1.1.1-cp38-cp38-macosx_10_9_x86_64.whl", hash = "sha256:6788b695d50a51edb699cb55e35487e430fa21f1ed838122d722e0ff0ac5ba15"},
|
||||
{file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_i686.whl", hash = "sha256:cdb132fc825c38e1aeec2c8aa9338310d29d337bebbd7baa06889d09a60a1fa2"},
|
||||
{file = "MarkupSafe-1.1.1-cp38-cp38-manylinux1_x86_64.whl", hash = "sha256:13d3144e1e340870b25e7b10b98d779608c02016d5184cfb9927a9f10c689f42"},
|
||||
{file = "MarkupSafe-1.1.1-cp38-cp38-win32.whl", hash = "sha256:596510de112c685489095da617b5bcbbac7dd6384aeebeda4df6025d0256a81b"},
|
||||
{file = "MarkupSafe-1.1.1-cp38-cp38-win_amd64.whl", hash = "sha256:e8313f01ba26fbbe36c7be1966a7b7424942f670f38e666995b88d012765b9be"},
|
||||
{file = "MarkupSafe-1.1.1.tar.gz", hash = "sha256:29872e92839765e546828bb7754a68c418d927cd064fd4708fab9fe9c8bb116b"},
|
||||
]
|
||||
mccabe = [
|
||||
|
|
|
|||
|
|
@ -66,6 +66,7 @@ lxml = "^4.4"
|
|||
ipython = "^7.10"
|
||||
markdown-include = "^0.5.1"
|
||||
aiohttp-socks = "^0.3.4"
|
||||
packaging = "^20.3"
|
||||
|
||||
[tool.poetry.extras]
|
||||
fast = ["uvloop"]
|
||||
|
|
|
|||
26
tests/deprecated.py
Normal file
26
tests/deprecated.py
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
from contextlib import contextmanager
|
||||
from typing import Type
|
||||
|
||||
import pytest
|
||||
from packaging import version
|
||||
|
||||
import aiogram
|
||||
|
||||
|
||||
@contextmanager
|
||||
def check_deprecated(
|
||||
max_version: str, exception: Type[Exception], warning: Type[Warning] = DeprecationWarning,
|
||||
) -> None:
|
||||
"""
|
||||
Should be used for modules that are being deprecated or already removed from aiogram
|
||||
"""
|
||||
|
||||
parsed_max_version = version.parse(max_version)
|
||||
current_version = version.parse(aiogram.__version__)
|
||||
|
||||
if parsed_max_version <= current_version:
|
||||
with pytest.raises(exception):
|
||||
yield
|
||||
else:
|
||||
with pytest.warns(warning, match=max_version):
|
||||
yield
|
||||
|
|
@ -2,6 +2,7 @@ import pytest
|
|||
|
||||
from aiogram.dispatcher.event.observer import TelegramEventObserver
|
||||
from aiogram.dispatcher.router import Router
|
||||
from tests.deprecated import check_deprecated
|
||||
|
||||
OBSERVERS = {
|
||||
"callback_query",
|
||||
|
|
@ -19,28 +20,13 @@ OBSERVERS = {
|
|||
"update",
|
||||
}
|
||||
|
||||
DEPRECATED_OBSERVERS = {observer + "_handler" for observer in OBSERVERS}
|
||||
|
||||
def test_deprecated_handlers_name():
|
||||
from aiogram import __version__
|
||||
|
||||
major, minor = map(int, __version__.split(".")[:-1])
|
||||
|
||||
if minor >= 2 and major >= 3: # version >=3.2.*
|
||||
do_assert = pytest.raises(AttributeError)
|
||||
else: # for versions <=3.2.* (we don't care if major is lesser than `3`)
|
||||
do_assert = pytest.warns(DeprecationWarning)
|
||||
|
||||
@pytest.mark.parametrize("observer_name", DEPRECATED_OBSERVERS)
|
||||
def test_deprecated_handlers_name(observer_name: str):
|
||||
router = Router()
|
||||
|
||||
with do_assert:
|
||||
for decor in OBSERVERS:
|
||||
getattr(router, decor + "_handler")
|
||||
|
||||
assert all(
|
||||
isinstance(getattr(router, handler + "_handler"), TelegramEventObserver)
|
||||
for handler in OBSERVERS
|
||||
)
|
||||
|
||||
assert all(
|
||||
isinstance(getattr(router, handler), TelegramEventObserver) for handler in OBSERVERS
|
||||
)
|
||||
with check_deprecated("3.2", exception=AttributeError):
|
||||
observer = getattr(router, observer_name)
|
||||
isinstance(observer, TelegramEventObserver)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue