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:
mpa 2020-05-12 16:07:16 +04:00
parent 6cbf9cdde6
commit c083fcd99a
4 changed files with 40 additions and 22 deletions

7
poetry.lock generated
View file

@ -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 = [

View file

@ -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
View 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

View file

@ -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)