diff --git a/apps/utils/tests/factories.py b/apps/utils/tests/factories.py new file mode 100644 index 0000000..581d4eb --- /dev/null +++ b/apps/utils/tests/factories.py @@ -0,0 +1,38 @@ +"""Factories for Utils App.""" + +import factory +from uuid import uuid4 +from django.contrib.contenttypes.models import ContentType + +from apps.animes.models import Anime +from apps.mangas.models import Manga +from apps.characters.models import Character +from apps.persons.models import Person +from ..models import Picture +from ..functions import generate_test_image, generate_random_code + + +class PictureFactory(factory.django.DjangoModelFactory): + """Factory for Picture model.""" + + class Meta: + model = Picture + skip_postgeneration_save = True + + content_type = factory.LazyAttribute( + lambda o: ContentType.objects.get_for_model(o.content_object.__class__) + ) + object_id = factory.LazyAttribute(lambda o: uuid4()) + name = factory.LazyFunction(lambda: generate_random_code()) + image = factory.LazyAttribute(lambda _: generate_test_image(size=(600, 600))) + + @factory.lazy_attribute + def content_object(self): + model_mapping = { + "anime": Anime.objects.first(), + "manga": Manga.objects.first(), + "character": Character.objects.first(), + "person": Person.objects.first(), + } + content_type_model = model_mapping.get(self.content_type.model) + return content_type_model diff --git a/apps/utils/tests/integration/__init__.py b/apps/utils/tests/integration/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/apps/utils/tests/unit/__init__.py b/apps/utils/tests/unit/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/conftest.py b/conftest.py index 5cf8347..b2a9918 100644 --- a/conftest.py +++ b/conftest.py @@ -32,6 +32,7 @@ ModeratorFactory, AdministratorFactory, ) +from apps.utils.tests.factories import PictureFactory User = get_user_model() @@ -204,3 +205,8 @@ def anime_list_item(): @pytest.fixture def manga_list_item(): return MangaListItemFactory.create() + + +@pytest.fixture +def picture(): + return PictureFactory.create()