CR fix: add tests, fix union

This commit is contained in:
Yuriy Chebyshev 2022-07-08 14:54:13 +03:00
parent 7f832089df
commit 4aac637251
2 changed files with 35 additions and 4 deletions

View file

@ -34,7 +34,7 @@ class Command(Filter):
By default this filter is registered for messages and edited messages handlers.
"""
def __init__(self, commands: Union[Iterable[str], Iterable[BotCommand], str, BotCommand],
def __init__(self, commands: Union[Iterable[Union[str, BotCommand]], str, BotCommand],
prefixes: Union[Iterable, str] = '/',
ignore_case: bool = True,
ignore_mention: bool = False,

View file

@ -1,4 +1,4 @@
from typing import Set
from typing import Set, Union, Iterable
from datetime import datetime
import pytest
@ -6,9 +6,9 @@ import pytest
from aiogram.dispatcher.filters.builtin import (
Text,
extract_chat_ids,
ChatIDArgumentType, ForwardedMessageFilter, IDFilter,
ChatIDArgumentType, ForwardedMessageFilter, IDFilter, Command,
)
from aiogram.types import Message
from aiogram.types import Message, BotCommand
from tests.types.dataset import MESSAGE, MESSAGE_FROM_CHANNEL
@ -108,3 +108,34 @@ class TestIDFilter:
filter = IDFilter(chat_id=message_from_channel.chat.id)
assert await filter.check(message_from_channel)
@pytest.mark.parametrize("command", [
"/start",
"/start some args",
])
@pytest.mark.parametrize("cmd_filter", [
"start",
("start",),
BotCommand(command="start", description="my desc"),
(BotCommand(command="start", description="bar"),),
(BotCommand(command="start", description="foo"), "help"),
])
@pytest.mark.asyncio
async def test_commands_filter(command: str, cmd_filter: Union[Iterable[Union[str, BotCommand]], str, BotCommand]):
message_with_command = Message(**MESSAGE)
message_with_command.text = command
start_filter = Command(commands=cmd_filter)
assert await start_filter.check(message_with_command)
@pytest.mark.asyncio
async def test_commands_filter_not_checked():
message_with_command = Message(**MESSAGE)
message_with_command.text = "/start"
start_filter = Command(commands=["help", BotCommand("about", "my desc")])
assert not await start_filter.check(message_with_command)