AIOG-T-45. User property mention added

* property added
 * unit tests added
This commit is contained in:
Igor Sereda 2020-06-02 20:15:57 +03:00
parent b6ff48d8fc
commit f55943f6af
2 changed files with 27 additions and 2 deletions

View file

@ -46,6 +46,16 @@ class User(TelegramObject):
return f"{self.first_name} {self.last_name}"
return self.first_name
@property
def mention(self) -> str:
"""
Get user's username to mention him.
Full name will be returned if user has no username.
"""
if self.username:
return "@" + self.username
return self.full_name
@property
def url(self) -> str:
"""

View file

@ -1,6 +1,5 @@
from asyncio import Future
from unittest import mock
from unittest.mock import PropertyMock, _patch, patch
from unittest.mock import PropertyMock, _patch
import pytest
@ -31,6 +30,22 @@ class TestUser:
user = User(id=42, is_bot=False, first_name=first_name, last_name=last_name)
assert user.full_name == expected_full_name
@pytest.mark.parametrize(
"first_name, last_name, username, expected_mention",
[
["User", "Name", None, "User Name"],
["User", "Name", "", "User Name"],
["User", "Name", "UserName", "@UserName"],
["Only", "Space", " ", "@ "],
["With", "Space", "with space", "@with space"],
],
)
def test_mention(self, first_name: str, last_name: str, username: str, expected_mention: str):
user = User(
id=42, is_bot=False, first_name=first_name, last_name=last_name, username=username
)
assert user.mention == expected_mention
@pytest.mark.parametrize(
"user_id, expected_url",
[