mirror of
https://github.com/aiogram/aiogram.git
synced 2026-04-08 16:37:47 +00:00
feat: add UserFactory
This commit is contained in:
parent
6f53f15577
commit
e0baed8eee
14 changed files with 136 additions and 65 deletions
0
tests/factories/chat_member.py
Normal file
0
tests/factories/chat_member.py
Normal file
0
tests/factories/inline_query.py
Normal file
0
tests/factories/inline_query.py
Normal file
0
tests/factories/message.py
Normal file
0
tests/factories/message.py
Normal file
13
tests/factories/user.py
Normal file
13
tests/factories/user.py
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
import factory
|
||||
|
||||
from aiogram.api.types import User
|
||||
|
||||
|
||||
class UserFactory(factory.Factory):
|
||||
class Meta:
|
||||
model = User
|
||||
|
||||
id = factory.Sequence(lambda n: n)
|
||||
first_name = factory.Sequence(lambda n: f"First name #{n}")
|
||||
last_name = factory.Sequence(lambda n: f"Last name #{n}")
|
||||
is_bot = False
|
||||
|
|
@ -1,7 +1,8 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.methods import GetChatMember, Request
|
||||
from aiogram.api.types import ChatMember, User
|
||||
from aiogram.api.types import ChatMember
|
||||
from tests.factories.user import UserFactory
|
||||
from tests.mocked_bot import MockedBot
|
||||
|
||||
|
||||
|
|
@ -9,9 +10,7 @@ class TestGetChatMember:
|
|||
@pytest.mark.asyncio
|
||||
async def test_method(self, bot: MockedBot):
|
||||
prepare_result = bot.add_result_for(
|
||||
GetChatMember,
|
||||
ok=True,
|
||||
result=ChatMember(user=User(id=42, is_bot=False, first_name="User"), status="creator"),
|
||||
GetChatMember, ok=True, result=ChatMember(user=UserFactory(), status="creator"),
|
||||
)
|
||||
|
||||
response: ChatMember = await GetChatMember(chat_id=-42, user_id=42)
|
||||
|
|
@ -22,9 +21,7 @@ class TestGetChatMember:
|
|||
@pytest.mark.asyncio
|
||||
async def test_bot_method(self, bot: MockedBot):
|
||||
prepare_result = bot.add_result_for(
|
||||
GetChatMember,
|
||||
ok=True,
|
||||
result=ChatMember(user=User(id=42, is_bot=False, first_name="User"), status="creator"),
|
||||
GetChatMember, ok=True, result=ChatMember(user=UserFactory(), status="creator"),
|
||||
)
|
||||
|
||||
response: ChatMember = await bot.get_chat_member(chat_id=-42, user_id=42)
|
||||
|
|
|
|||
|
|
@ -1,12 +1,11 @@
|
|||
from aiogram.api.methods import AnswerCallbackQuery
|
||||
from aiogram.api.types import CallbackQuery, User
|
||||
from tests.factories.user import UserFactory
|
||||
|
||||
|
||||
class TestCallbackQuery:
|
||||
def test_answer_alias(self):
|
||||
callback_query = CallbackQuery(
|
||||
id="id", from_user=User(id=42, is_bot=False, first_name="name"), chat_instance="chat"
|
||||
)
|
||||
callback_query = CallbackQuery(id="id", from_user=UserFactory(), chat_instance="chat")
|
||||
|
||||
kwargs = dict(text="foo", show_alert=True, url="https://foo.bar/", cache_time=123)
|
||||
|
||||
|
|
|
|||
|
|
@ -1,8 +1,7 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.types import ChatMember, User
|
||||
|
||||
user = User(id=42, is_bot=False, first_name="User", last_name=None)
|
||||
from aiogram.api.types import ChatMember
|
||||
from tests.factories.user import UserFactory
|
||||
|
||||
|
||||
class TestChatMember:
|
||||
|
|
@ -10,7 +9,7 @@ class TestChatMember:
|
|||
"status,result", [["administrator", True], ["creator", True], ["member", False]]
|
||||
)
|
||||
def test_is_chat_admin(self, status: str, result: bool):
|
||||
chat_member = ChatMember(user=user, status=status)
|
||||
chat_member = ChatMember(user=UserFactory(), status=status)
|
||||
assert chat_member.is_chat_admin == result
|
||||
|
||||
@pytest.mark.parametrize(
|
||||
|
|
@ -25,5 +24,5 @@ class TestChatMember:
|
|||
],
|
||||
)
|
||||
def test_is_chat_member(self, status: str, result: bool):
|
||||
chat_member = ChatMember(user=user, status=status)
|
||||
chat_member = ChatMember(user=UserFactory(), status=status)
|
||||
assert chat_member.is_chat_member == result
|
||||
|
|
|
|||
|
|
@ -1,15 +1,11 @@
|
|||
from aiogram.api.methods import AnswerInlineQuery
|
||||
from aiogram.api.types import InlineQuery, User
|
||||
from aiogram.api.types import InlineQuery
|
||||
from tests.factories.user import UserFactory
|
||||
|
||||
|
||||
class TestInlineQuery:
|
||||
def test_answer_alias(self):
|
||||
inline_query = InlineQuery(
|
||||
id="id",
|
||||
from_user=User(id=42, is_bot=False, first_name="name"),
|
||||
query="query",
|
||||
offset="",
|
||||
)
|
||||
inline_query = InlineQuery(id="id", from_user=UserFactory(), query="query", offset="",)
|
||||
|
||||
kwargs = dict(
|
||||
results=[],
|
||||
|
|
|
|||
|
|
@ -39,13 +39,13 @@ from aiogram.api.types import (
|
|||
PollOption,
|
||||
Sticker,
|
||||
SuccessfulPayment,
|
||||
User,
|
||||
Venue,
|
||||
Video,
|
||||
VideoNote,
|
||||
Voice,
|
||||
)
|
||||
from aiogram.api.types.message import ContentType, Message
|
||||
from tests.factories.user import UserFactory
|
||||
|
||||
|
||||
class TestMessage:
|
||||
|
|
@ -58,7 +58,7 @@ class TestMessage:
|
|||
date=datetime.datetime.now(),
|
||||
text="test",
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.TEXT,
|
||||
],
|
||||
|
|
@ -68,7 +68,7 @@ class TestMessage:
|
|||
date=datetime.datetime.now(),
|
||||
audio=Audio(file_id="file id", file_unique_id="file id", duration=42),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.AUDIO,
|
||||
],
|
||||
|
|
@ -84,7 +84,7 @@ class TestMessage:
|
|||
duration=0,
|
||||
),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.ANIMATION,
|
||||
],
|
||||
|
|
@ -94,7 +94,7 @@ class TestMessage:
|
|||
date=datetime.datetime.now(),
|
||||
document=Document(file_id="file id", file_unique_id="file id"),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.DOCUMENT,
|
||||
],
|
||||
|
|
@ -112,7 +112,7 @@ class TestMessage:
|
|||
],
|
||||
),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.GAME,
|
||||
],
|
||||
|
|
@ -124,7 +124,7 @@ class TestMessage:
|
|||
PhotoSize(file_id="file id", file_unique_id="file id", width=42, height=42)
|
||||
],
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.PHOTO,
|
||||
],
|
||||
|
|
@ -140,7 +140,7 @@ class TestMessage:
|
|||
is_animated=False,
|
||||
),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.STICKER,
|
||||
],
|
||||
|
|
@ -156,7 +156,7 @@ class TestMessage:
|
|||
duration=0,
|
||||
),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.VIDEO,
|
||||
],
|
||||
|
|
@ -168,7 +168,7 @@ class TestMessage:
|
|||
file_id="file id", file_unique_id="file id", length=0, duration=0
|
||||
),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.VIDEO_NOTE,
|
||||
],
|
||||
|
|
@ -178,7 +178,7 @@ class TestMessage:
|
|||
date=datetime.datetime.now(),
|
||||
voice=Voice(file_id="file id", file_unique_id="file id", duration=0),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.VOICE,
|
||||
],
|
||||
|
|
@ -188,7 +188,7 @@ class TestMessage:
|
|||
date=datetime.datetime.now(),
|
||||
contact=Contact(phone_number="911", first_name="911"),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.CONTACT,
|
||||
],
|
||||
|
|
@ -203,7 +203,7 @@ class TestMessage:
|
|||
"Little Whinging, Surrey, England, Great Britain",
|
||||
),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.VENUE,
|
||||
],
|
||||
|
|
@ -213,7 +213,7 @@ class TestMessage:
|
|||
date=datetime.datetime.now(),
|
||||
location=Location(longitude=3.14, latitude=3.14),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.LOCATION,
|
||||
],
|
||||
|
|
@ -221,9 +221,9 @@ class TestMessage:
|
|||
Message(
|
||||
message_id=42,
|
||||
date=datetime.datetime.now(),
|
||||
new_chat_members=[User(id=42, is_bot=False, first_name="Test")],
|
||||
new_chat_members=[UserFactory()],
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.NEW_CHAT_MEMBERS,
|
||||
],
|
||||
|
|
@ -231,9 +231,9 @@ class TestMessage:
|
|||
Message(
|
||||
message_id=42,
|
||||
date=datetime.datetime.now(),
|
||||
left_chat_member=User(id=42, is_bot=False, first_name="Test"),
|
||||
left_chat_member=UserFactory(),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.LEFT_CHAT_MEMBER,
|
||||
],
|
||||
|
|
@ -249,7 +249,7 @@ class TestMessage:
|
|||
total_amount=1,
|
||||
),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.INVOICE,
|
||||
],
|
||||
|
|
@ -265,7 +265,7 @@ class TestMessage:
|
|||
provider_payment_charge_id="payment",
|
||||
),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.SUCCESSFUL_PAYMENT,
|
||||
],
|
||||
|
|
@ -275,7 +275,7 @@ class TestMessage:
|
|||
date=datetime.datetime.now(),
|
||||
connected_website="token",
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.CONNECTED_WEBSITE,
|
||||
],
|
||||
|
|
@ -285,7 +285,7 @@ class TestMessage:
|
|||
date=datetime.datetime.now(),
|
||||
migrate_from_chat_id=42,
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.MIGRATE_FROM_CHAT_ID,
|
||||
],
|
||||
|
|
@ -295,7 +295,7 @@ class TestMessage:
|
|||
date=datetime.datetime.now(),
|
||||
migrate_to_chat_id=42,
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.MIGRATE_TO_CHAT_ID,
|
||||
],
|
||||
|
|
@ -308,10 +308,10 @@ class TestMessage:
|
|||
date=datetime.datetime.now(),
|
||||
text="pinned",
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.PINNED_MESSAGE,
|
||||
],
|
||||
|
|
@ -321,7 +321,7 @@ class TestMessage:
|
|||
date=datetime.datetime.now(),
|
||||
new_chat_title="test",
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.NEW_CHAT_TITLE,
|
||||
],
|
||||
|
|
@ -333,7 +333,7 @@ class TestMessage:
|
|||
PhotoSize(file_id="file id", file_unique_id="file id", width=42, height=42)
|
||||
],
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.NEW_CHAT_PHOTO,
|
||||
],
|
||||
|
|
@ -343,7 +343,7 @@ class TestMessage:
|
|||
date=datetime.datetime.now(),
|
||||
delete_chat_photo=True,
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.DELETE_CHAT_PHOTO,
|
||||
],
|
||||
|
|
@ -353,7 +353,7 @@ class TestMessage:
|
|||
date=datetime.datetime.now(),
|
||||
group_chat_created=True,
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.GROUP_CHAT_CREATED,
|
||||
],
|
||||
|
|
@ -366,7 +366,7 @@ class TestMessage:
|
|||
credentials=EncryptedCredentials(data="test", hash="test", secret="test"),
|
||||
),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.PASSPORT_DATA,
|
||||
],
|
||||
|
|
@ -389,7 +389,7 @@ class TestMessage:
|
|||
correct_option_id=1,
|
||||
),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.POLL,
|
||||
],
|
||||
|
|
@ -399,7 +399,7 @@ class TestMessage:
|
|||
date=datetime.datetime.now(),
|
||||
chat=Chat(id=42, type="private"),
|
||||
dice=Dice(value=6, emoji="X"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.DICE,
|
||||
],
|
||||
|
|
@ -408,7 +408,7 @@ class TestMessage:
|
|||
message_id=42,
|
||||
date=datetime.datetime.now(),
|
||||
chat=Chat(id=42, type="private"),
|
||||
from_user=User(id=42, is_bot=False, first_name="Test"),
|
||||
from_user=UserFactory(),
|
||||
),
|
||||
ContentType.UNKNOWN,
|
||||
],
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
from aiogram.api.methods import AnswerPreCheckoutQuery
|
||||
from aiogram.api.types import PreCheckoutQuery, User
|
||||
from aiogram.api.types import PreCheckoutQuery
|
||||
from tests.factories.user import UserFactory
|
||||
|
||||
|
||||
class TestPreCheckoutQuery:
|
||||
def test_answer_alias(self):
|
||||
pre_checkout_query = PreCheckoutQuery(
|
||||
id="id",
|
||||
from_user=User(id=42, is_bot=False, first_name="name"),
|
||||
from_user=UserFactory(),
|
||||
currency="currency",
|
||||
total_amount=123,
|
||||
invoice_payload="payload",
|
||||
|
|
|
|||
|
|
@ -1,12 +1,13 @@
|
|||
from aiogram.api.methods import AnswerShippingQuery
|
||||
from aiogram.api.types import LabeledPrice, ShippingAddress, ShippingOption, ShippingQuery, User
|
||||
from aiogram.api.types import LabeledPrice, ShippingAddress, ShippingOption, ShippingQuery
|
||||
from tests.factories.user import UserFactory
|
||||
|
||||
|
||||
class TestInlineQuery:
|
||||
def test_answer_alias(self):
|
||||
shipping_query = ShippingQuery(
|
||||
id="id",
|
||||
from_user=User(id=42, is_bot=False, first_name="name"),
|
||||
from_user=UserFactory(),
|
||||
invoice_payload="payload",
|
||||
shipping_address=ShippingAddress(
|
||||
country_code="foo",
|
||||
|
|
|
|||
|
|
@ -1,11 +1,11 @@
|
|||
import pytest
|
||||
|
||||
from aiogram.api.types import User
|
||||
from tests.factories.user import UserFactory
|
||||
|
||||
|
||||
class TestUser:
|
||||
@pytest.mark.parametrize(
|
||||
"first,last,result",
|
||||
"first_name,last_name,result",
|
||||
[
|
||||
["User", None, "User"],
|
||||
["", None, ""],
|
||||
|
|
@ -15,6 +15,6 @@ class TestUser:
|
|||
[" ", " ", " "],
|
||||
],
|
||||
)
|
||||
def test_full_name(self, first: str, last: str, result: bool):
|
||||
user = User(id=42, is_bot=False, first_name=first, last_name=last)
|
||||
def test_full_name(self, first_name: str, last_name: str, result: bool):
|
||||
user = UserFactory(first_name=first_name, last_name=last_name)
|
||||
assert user.full_name == result
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue