mirror of
https://github.com/Alexander-D-Karpov/akarpov
synced 2024-11-21 20:56:34 +03:00
added model tests for users
This commit is contained in:
parent
b4ed207fd1
commit
1fc003636b
1
akarpov/files/consts.py
Normal file
1
akarpov/files/consts.py
Normal file
|
@ -0,0 +1 @@
|
|||
USER_INITIAL_FILE_UPLOAD = 100 * 1024 * 1024
|
|
@ -11,20 +11,20 @@
|
|||
|
||||
|
||||
urlpatterns = [
|
||||
path("", UserListViewSet.as_view(), name="user_list_api"),
|
||||
path("", UserListViewSet.as_view(), name="list"),
|
||||
path(
|
||||
"self/",
|
||||
UserRetireUpdateSelfViewSet.as_view(),
|
||||
name="user_get_update_delete_self_api",
|
||||
name="self",
|
||||
),
|
||||
path(
|
||||
"id/<int:pk>",
|
||||
UserRetrieveIdViewSet.as_view(),
|
||||
name="user_retrieve_id_api",
|
||||
name="get_by_id",
|
||||
),
|
||||
path(
|
||||
"<str:username>",
|
||||
UserRetrieveViewSet.as_view(),
|
||||
name="user_retrieve_username_api",
|
||||
name="get",
|
||||
),
|
||||
]
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
from django.db.models.signals import pre_save
|
||||
from django.dispatch import receiver
|
||||
|
||||
from akarpov.files.consts import USER_INITIAL_FILE_UPLOAD
|
||||
from akarpov.users.models import User
|
||||
from akarpov.users.services.history import (
|
||||
create_history_note,
|
||||
|
@ -21,7 +22,7 @@
|
|||
def user_create(sender, instance: User, **kwargs):
|
||||
if instance.id is None:
|
||||
# give user some space on file share on register
|
||||
instance.left_file_upload += 100 * 1024 * 1024
|
||||
instance.left_file_upload += USER_INITIAL_FILE_UPLOAD
|
||||
|
||||
|
||||
@receiver(user_logged_in)
|
||||
|
|
|
@ -5,12 +5,14 @@
|
|||
from factory import Faker, post_generation
|
||||
from factory.django import DjangoModelFactory
|
||||
|
||||
from akarpov.utils.faker import django_image
|
||||
|
||||
|
||||
class UserFactory(DjangoModelFactory):
|
||||
|
||||
username = Faker("user_name")
|
||||
email = Faker("email")
|
||||
name = Faker("name")
|
||||
about = Faker("text")
|
||||
|
||||
@post_generation
|
||||
def password(self, create: bool, extracted: Sequence[Any], **kwargs):
|
||||
|
@ -28,6 +30,16 @@ def password(self, create: bool, extracted: Sequence[Any], **kwargs):
|
|||
)
|
||||
self.set_password(password)
|
||||
|
||||
@post_generation
|
||||
def image(self, create, extracted, **kwargs):
|
||||
if extracted:
|
||||
image_name, image = extracted
|
||||
else:
|
||||
image_name = "test.jpg"
|
||||
image = django_image(image_name, **kwargs)
|
||||
self.image.save(image_name, image)
|
||||
|
||||
class Meta:
|
||||
model = get_user_model()
|
||||
skip_postgeneration_save = False
|
||||
django_get_or_create = ["username"]
|
||||
|
|
0
akarpov/users/tests/test_api_views.py
Normal file
0
akarpov/users/tests/test_api_views.py
Normal file
|
@ -1,3 +1,4 @@
|
|||
from akarpov.files.consts import USER_INITIAL_FILE_UPLOAD
|
||||
from akarpov.users.models import User
|
||||
|
||||
|
||||
|
@ -5,3 +6,12 @@ def test_user_create(user: User):
|
|||
password = "123"
|
||||
user.set_password(password)
|
||||
assert user.check_password(password)
|
||||
|
||||
|
||||
def test_auto_file_upload_size(user: User):
|
||||
size = USER_INITIAL_FILE_UPLOAD
|
||||
assert user.left_file_upload == size
|
||||
|
||||
|
||||
def test_user_image_create(user: User):
|
||||
assert user.image
|
||||
|
|
|
@ -1,6 +1,9 @@
|
|||
from decimal import Decimal as D
|
||||
from io import BytesIO
|
||||
|
||||
from django.core.files.uploadedfile import InMemoryUploadedFile
|
||||
from faker.providers.python import Provider as PythonProvider
|
||||
from PIL import Image
|
||||
|
||||
|
||||
class MoneyProvider(PythonProvider):
|
||||
|
@ -20,3 +23,20 @@ def configure_factory_faker(factory_faker):
|
|||
def configure_faker(faker):
|
||||
for provider in additional_providers:
|
||||
faker.add_provider(provider)
|
||||
|
||||
|
||||
def django_image(name, size=200, color="red"):
|
||||
thumb = Image.new(
|
||||
"RGB",
|
||||
(
|
||||
size,
|
||||
size,
|
||||
),
|
||||
color,
|
||||
)
|
||||
thumb_io = BytesIO()
|
||||
thumb.save(thumb_io, format="JPEG")
|
||||
thumb_io.seek(0)
|
||||
return InMemoryUploadedFile(
|
||||
thumb_io, None, name, "image/jpeg", thumb_io.getbuffer().nbytes, None
|
||||
)
|
||||
|
|
|
@ -32,8 +32,6 @@
|
|||
SITE_ID = 1
|
||||
# https://docs.djangoproject.com/en/dev/ref/settings/#use-i18n
|
||||
USE_I18N = True
|
||||
# https://docs.djangoproject.com/en/dev/ref/settings/#use-l10n
|
||||
USE_L10N = True
|
||||
# https://docs.djangoproject.com/en/dev/ref/settings/#use-tz
|
||||
USE_TZ = True
|
||||
# https://docs.djangoproject.com/en/dev/ref/settings/#locale-paths
|
||||
|
|
Loading…
Reference in New Issue
Block a user