feat: add UserFactory

This commit is contained in:
Egor 2020-07-03 13:41:47 +05:00
parent 6f53f15577
commit e0baed8eee
14 changed files with 136 additions and 65 deletions

View file

View file

View file

13
tests/factories/user.py Normal file
View 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

View file

@ -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)

View file

@ -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)

View file

@ -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

View file

@ -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=[],

View file

@ -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,
],

View file

@ -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",

View file

@ -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",

View file

@ -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