Skip to content

Commit 0cadd70

Browse files
committed
test(utils): add picture factory and global fixture
1 parent 9c75121 commit 0cadd70

File tree

4 files changed

+44
-0
lines changed

4 files changed

+44
-0
lines changed

apps/utils/tests/factories.py

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
"""Factories for Utils App."""
2+
3+
import factory
4+
from uuid import uuid4
5+
from django.contrib.contenttypes.models import ContentType
6+
7+
from apps.animes.models import Anime
8+
from apps.mangas.models import Manga
9+
from apps.characters.models import Character
10+
from apps.persons.models import Person
11+
from ..models import Picture
12+
from ..functions import generate_test_image, generate_random_code
13+
14+
15+
class PictureFactory(factory.django.DjangoModelFactory):
16+
"""Factory for Picture model."""
17+
18+
class Meta:
19+
model = Picture
20+
skip_postgeneration_save = True
21+
22+
content_type = factory.LazyAttribute(
23+
lambda o: ContentType.objects.get_for_model(o.content_object.__class__)
24+
)
25+
object_id = factory.LazyAttribute(lambda o: uuid4())
26+
name = factory.LazyFunction(lambda: generate_random_code())
27+
image = factory.LazyAttribute(lambda _: generate_test_image(size=(600, 600)))
28+
29+
@factory.lazy_attribute
30+
def content_object(self):
31+
model_mapping = {
32+
"anime": Anime.objects.first(),
33+
"manga": Manga.objects.first(),
34+
"character": Character.objects.first(),
35+
"person": Person.objects.first(),
36+
}
37+
content_type_model = model_mapping.get(self.content_type.model)
38+
return content_type_model

apps/utils/tests/integration/__init__.py

Whitespace-only changes.

apps/utils/tests/unit/__init__.py

Whitespace-only changes.

conftest.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
ModeratorFactory,
3333
AdministratorFactory,
3434
)
35+
from apps.utils.tests.factories import PictureFactory
3536

3637
User = get_user_model()
3738

@@ -204,3 +205,8 @@ def anime_list_item():
204205
@pytest.fixture
205206
def manga_list_item():
206207
return MangaListItemFactory.create()
208+
209+
210+
@pytest.fixture
211+
def picture():
212+
return PictureFactory.create()

0 commit comments

Comments
 (0)