Merge branch 'dev-3.x' into scenes

# Conflicts:
#	aiogram/__init__.py
This commit is contained in:
JRoot Junior 2023-11-23 00:33:19 +02:00
commit 09d0244a79
No known key found for this signature in database
GPG key ID: 738964250D5FF6E2
3 changed files with 55 additions and 2 deletions

View file

@ -1,7 +1,8 @@
import sys
from decimal import Decimal
from enum import Enum, auto
from fractions import Fraction
from typing import Optional
from typing import Optional, Union
from uuid import UUID
import pytest
@ -147,6 +148,32 @@ class TestCallbackData:
assert MyCallback3.unpack("test3:experiment:42") == MyCallback3(bar=42)
assert MyCallback3.unpack("test3:spam:42") == MyCallback3(foo="spam", bar=42)
@pytest.mark.parametrize(
"hint",
[
Union[int, None],
Optional[int],
],
)
def test_unpack_optional_wo_default(self, hint):
"""Test CallbackData without default optional."""
class TgData(CallbackData, prefix="tg"):
chat_id: int
thread_id: hint
assert TgData.unpack("tg:123:") == TgData(chat_id=123, thread_id=None)
@pytest.mark.skipif(sys.version_info < (3, 10), reason="UnionType is added in Python 3.10")
def test_unpack_optional_wo_default_union_type(self):
"""Test CallbackData without default optional."""
class TgData(CallbackData, prefix="tg"):
chat_id: int
thread_id: int | None
assert TgData.unpack("tg:123:") == TgData(chat_id=123, thread_id=None)
def test_build_filter(self):
filter_object = MyCallback.filter(F.foo == "test")
assert isinstance(filter_object.rule, MagicFilter)