Skip to content

Commit b0f3881

Browse files
committed
test(animes, mangas): add new integration tests
1 parent 629383b commit b0f3881

File tree

2 files changed

+100
-7
lines changed

2 files changed

+100
-7
lines changed

apps/animes/tests/unit/test_serializers.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
AnimeReadSerializer,
99
AnimeWriteSerializer,
1010
AnimeMinimalSerializer,
11+
AnimeStatsReadSerializer,
1112
)
1213

1314

@@ -167,4 +168,22 @@ def test_anime_minimal_serializer(self, anime):
167168
}
168169
assert serializer.data == expected_data
169170

170-
# TODO: Add AnimeStatsReadSerializer test
171+
172+
@pytest.mark.django_db
173+
class TestMangaStatsSerializers:
174+
"""Tests for MangaStats serializers."""
175+
176+
def test_anime_stats_read_serializer(self, anime):
177+
anime_stats = anime.stats # Inverse relationship created by the signal
178+
serializer = AnimeStatsReadSerializer(anime_stats)
179+
expected_data = {
180+
"id": str(anime_stats.id),
181+
"watching": anime_stats.watching,
182+
"completed": anime_stats.completed,
183+
"on_hold": anime_stats.on_hold,
184+
"dropped": anime_stats.dropped,
185+
"plan_to_watch": anime_stats.plan_to_watch,
186+
"total": anime_stats.total,
187+
"updated_at": anime_stats.updated_at.isoformat(),
188+
}
189+
assert serializer.data == expected_data

apps/mangas/tests/unit/test_serializers.py

Lines changed: 80 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,15 @@
22

33
import pytest
44

5+
from apps.utils.functions import generate_test_image
6+
from apps.persons.tests.factories import PersonFactory, CategoryChoices
57
from ...serializers import (
68
MagazineReadSerializer,
79
MagazineWriteSerializer,
810
MangaReadSerializer,
9-
# MangaWriteSerializer,
10-
# MangaMinimalSerializer,
11-
# MangaStatsReadSerializer,
11+
MangaWriteSerializer,
12+
MangaMinimalSerializer,
13+
MangaStatsReadSerializer,
1214
)
1315

1416

@@ -26,20 +28,17 @@ def test_magazine_read_serializer(self, magazine):
2628
"created_at": magazine.created_at.isoformat(),
2729
"updated_at": magazine.updated_at.isoformat(),
2830
}
29-
3031
assert serializer.data == expected_data
3132

3233
def test_magazine_write_serializer_valid_data(self, magazine):
3334
data = {"name": "Kadokawa"}
3435
serializer = MagazineWriteSerializer(data=data)
35-
3636
assert serializer.is_valid(), serializer.errors
3737
assert serializer.validated_data["name"] == "Kadokawa"
3838

3939
def test_magazine_write_serializer_invalid_data(self):
4040
data = {}
4141
serializer = MagazineWriteSerializer(data=data)
42-
4342
assert not serializer.is_valid()
4443
assert "name" in serializer.errors
4544

@@ -112,5 +111,80 @@ def test_manga_read_serializer(self, manga):
112111
"created_at": manga.created_at.isoformat(),
113112
"updated_at": manga.updated_at.isoformat(),
114113
}
114+
assert serializer.data == expected_data
115+
116+
def test_manga_write_serializer_valid_data(self, manga):
117+
author = PersonFactory.create(category=CategoryChoices.ARTIST)
118+
image = generate_test_image(size=(600, 600))
119+
data = {
120+
"name": "Haikyu!!",
121+
"name_jpn": "ハイキュー!!",
122+
"name_rom": "Haikyu!!",
123+
"alternative_names": manga.alternative_names,
124+
"image": image,
125+
"synopsis": manga.synopsis,
126+
"background": manga.background,
127+
"media_type": manga.media_type,
128+
"volumes": manga.volumes,
129+
"chapters": manga.chapters,
130+
"status": manga.status,
131+
"published_from": manga.published_from,
132+
"published_to": manga.published_to,
133+
"genres": [genre.id for genre in manga.genres.all()],
134+
"themes": [theme.id for theme in manga.themes.all()],
135+
"demographic_id": str(manga.demographic_id.id),
136+
"serialization_id": str(manga.serialization_id.id),
137+
"author_id": author.id,
138+
"website": manga.website,
139+
}
140+
serializer = MangaWriteSerializer(data=data)
141+
assert serializer.is_valid(), serializer.errors
142+
assert serializer.validated_data["name"] == "Haikyu!!"
143+
assert serializer.validated_data["name_jpn"] == "ハイキュー!!"
144+
assert serializer.validated_data["name_rom"] == "Haikyu!!"
145+
146+
def test_manga_write_serializer_invalid_data(self):
147+
data = {}
148+
serializer = MangaWriteSerializer(data=data)
149+
assert not serializer.is_valid()
150+
assert "name" in serializer.errors
151+
assert "name_jpn" in serializer.errors
152+
assert "image" in serializer.errors
153+
assert "published_from" in serializer.errors
154+
assert "genres" in serializer.errors
155+
assert "themes" in serializer.errors
156+
assert "author_id" in serializer.errors
157+
158+
def test_manga_minimal_serializer(self, manga):
159+
serializer = MangaMinimalSerializer(manga)
160+
expected_data = {
161+
"id": str(manga.id),
162+
"name": manga.name,
163+
"image": manga.image.url,
164+
"published_from": str(manga.published_from),
165+
"published_to": str(manga.published_to),
166+
"media_type": manga.get_media_type_display(),
167+
"status": manga.get_status_display(),
168+
"favorites": manga.favorites,
169+
}
170+
assert serializer.data == expected_data
171+
115172

173+
@pytest.mark.django_db
174+
class TestMangaStatsSerializers:
175+
"""Tests for MangaStats serializers."""
176+
177+
def test_manga_stats_read_serializer(self, manga):
178+
manga_stats = manga.stats # Inverse relationship created by the signal
179+
serializer = MangaStatsReadSerializer(manga_stats)
180+
expected_data = {
181+
"id": str(manga_stats.id),
182+
"reading": manga_stats.reading,
183+
"completed": manga_stats.completed,
184+
"on_hold": manga_stats.on_hold,
185+
"dropped": manga_stats.dropped,
186+
"plan_to_read": manga_stats.plan_to_read,
187+
"total": manga_stats.total,
188+
"updated_at": manga_stats.updated_at.isoformat(),
189+
}
116190
assert serializer.data == expected_data

0 commit comments

Comments
 (0)