mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
better fix, added tests
This commit is contained in:
parent
eb69e46453
commit
b541d34c0c
2 changed files with 26 additions and 2 deletions
|
|
@ -92,6 +92,9 @@ class Command(Filter):
|
|||
if not items:
|
||||
raise ValueError("At least one command should be specified")
|
||||
|
||||
if ignore_case:
|
||||
items = map(str.casefold, items)
|
||||
|
||||
self.commands = tuple(items)
|
||||
self.prefix = prefix
|
||||
self.ignore_case = ignore_case
|
||||
|
|
@ -167,7 +170,7 @@ class Command(Filter):
|
|||
|
||||
command_name = command.command
|
||||
if self.ignore_case:
|
||||
command_name, allowed_command = map(str.casefold, (command_name, allowed_command))
|
||||
command_name = command_name.casefold()
|
||||
|
||||
if command_name == allowed_command: # String
|
||||
return command
|
||||
|
|
|
|||
|
|
@ -35,6 +35,22 @@ class TestCommandFilter:
|
|||
assert cmd.commands[0] == "start"
|
||||
# assert cmd == Command(commands=["start"])
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"commands,checklist",
|
||||
[
|
||||
[("Test1", "tEst2", "teSt3"), ("test1", "test2", "test3")],
|
||||
[("12TeSt", "3t4Est", "5TE6sT"), ("12test", "3t4est", "5te6st")],
|
||||
[[BotCommand(command="Test", description="Test1")], ("test",)],
|
||||
[[BotCommand(command="tEsT", description="Test2")], ("test",)],
|
||||
],
|
||||
)
|
||||
def test_init_casefold(self, commands, checklist):
|
||||
command = Command(*commands, ignore_case=True)
|
||||
assert command.commands == checklist
|
||||
|
||||
command = Command(*commands, ignore_case=False)
|
||||
assert command.commands != checklist
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
"text,command,result",
|
||||
[
|
||||
|
|
@ -72,10 +88,15 @@ class TestCommandFilter:
|
|||
["/start test", CommandStart(deep_link=True), True],
|
||||
["/start test", CommandStart(deep_link=True, deep_link_encoded=True), False],
|
||||
["/start dGVzdA", CommandStart(deep_link=True, deep_link_encoded=True), True],
|
||||
["/TeSt", Command("test", ignore_case=True), True],
|
||||
["/TeSt", Command("TeSt", ignore_case=True), True],
|
||||
["/test", Command("TeSt", ignore_case=True), True],
|
||||
["/TeSt", Command("test", ignore_case=False), False],
|
||||
["/test", Command("TeSt", ignore_case=False), False],
|
||||
["/TeSt", Command("TeSt", ignore_case=False), True],
|
||||
],
|
||||
)
|
||||
async def test_parse_command(self, bot: MockedBot, text: str, result: bool, command: Command):
|
||||
# TODO: test ignore case
|
||||
# TODO: test ignore mention
|
||||
|
||||
message = Message(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue