AIOG-T-50. ChatMember files fixed

* linter warnings fixed
 * potential bug fixed
 * external variable removed
 * too broad import fixed
This commit is contained in:
Igor Sereda 2020-05-31 02:03:16 +03:00
parent 5ce94e2309
commit 53db44101f
2 changed files with 36 additions and 23 deletions

View file

@ -3,8 +3,9 @@ from __future__ import annotations
import datetime
from typing import TYPE_CHECKING, Optional, Union
from .base import TelegramObject
from ...utils import helper
from ...utils.helper import HelperMode, Item
from .base import TelegramObject
if TYPE_CHECKING: # pragma: no cover
from .user import User
@ -73,18 +74,24 @@ class ChatMember(TelegramObject):
@property
def is_chat_member(self) -> bool:
return self.status not in {ChatMemberStatus.LEFT, ChatMemberStatus.KICKED}
return self.status in {
ChatMemberStatus.CREATOR,
ChatMemberStatus.MEMBER,
ChatMemberStatus.ADMINISTRATOR,
ChatMemberStatus.RESTRICTED,
}
class ChatMemberStatus(helper.Helper):
"""
Chat member status
"""
mode = helper.HelperMode.lowercase
CREATOR = helper.Item() # creator
ADMINISTRATOR = helper.Item() # administrator
MEMBER = helper.Item() # member
RESTRICTED = helper.Item() # restricted
LEFT = helper.Item() # left
KICKED = helper.Item() # kicked
mode = HelperMode.lowercase
CREATOR = Item()
ADMINISTRATOR = Item()
MEMBER = Item()
RESTRICTED = Item()
LEFT = Item()
KICKED = Item()

View file

@ -2,33 +2,39 @@ import pytest
from aiogram.api.types import ChatMember, User
user = User(id=42, is_bot=False, first_name="User", last_name=None)
class TestChatMember:
def setup(self):
self.__user = User(id=42, is_bot=False, first_name="User", last_name=None)
@pytest.mark.parametrize(
"status,result",
"status, expected_status",
[
["administrator", True],
["creator", True],
["member", False]
]
["member", False],
["restricted", False],
["kicked", False],
["left", False],
["durov", False], # not a valid status value, method should return False
],
)
def test_is_chat_admin(self, status: str, result: bool):
chat_member = ChatMember(user=user, status=status)
assert chat_member.is_chat_admin == result
def test_is_chat_admin(self, status: str, expected_status: bool):
chat_member = ChatMember(user=self.__user, status=status)
assert chat_member.is_chat_admin == expected_status
@pytest.mark.parametrize(
"status,result",
"status, expected_status",
[
["administrator", True],
["creator", True],
["member", True],
["restricted", True],
["kicked", False],
["left", False]
]
["left", False],
["onotole", False], # not a valid status value, method should return False
],
)
def test_is_chat_member(self, status: str, result: bool):
chat_member = ChatMember(user=user, status=status)
assert chat_member.is_chat_member == result
def test_is_chat_member(self, status: str, expected_status: bool):
chat_member = ChatMember(user=self.__user, status=status)
assert chat_member.is_chat_member == expected_status