mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
AIOG-T-45. User property mention added
* property added * unit tests added
This commit is contained in:
parent
b6ff48d8fc
commit
f55943f6af
2 changed files with 27 additions and 2 deletions
|
|
@ -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:
|
||||
"""
|
||||
|
|
|
|||
|
|
@ -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",
|
||||
[
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue