22
33import pytest
44
5+ from apps .utils .functions import generate_test_image
6+ from apps .persons .tests .factories import PersonFactory , CategoryChoices
57from ...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