Coverage for tests\anime\test_anime_info.py: 100%
266 statements
« prev ^ index » next coverage.py v7.10.1, created at 2025-10-19 21:13 +0800
« prev ^ index » next coverage.py v7.10.1, created at 2025-10-19 21:13 +0800
1from random import choice
2from tests.conftest import get_json_val, get_reviews_last_page, ANIME_ENG
3import json
4import pytest
7@pytest.mark.parametrize("path", [
8 "abc/xyz",
9 "2592/t",
10 "hi/3304",
11 "2592/3304",
12 "2592/3304",
13])
14def test_info_input_not_valid_integer(client_nc, path) -> None:
15 resp = client_nc.get(f"/animes/{path}")
16 resp_data = resp.json()
18 assert resp.status_code == 422
19 for err in get_json_val(resp_data, "$.detail"):
20 assert get_json_val(err, "$.msg") == "Input should be a valid integer, unable to parse string as an integer"
23@pytest.mark.parametrize("path", [
24 ("abc/xyz", ""),
25 ("2592/t", ""),
26 ("hi/3304", ""),
27 ("2592/3304", ""),
28 ("2592/3304", ""),
29 ("2592/3304", "?page"),
30 ("2592/3304", "?page="),
31 ("2592/3304", "?page=def"),
32 ("2592/3304", "?page=2"),
33])
34def test_review_input_not_valid_integer(client_nc, path) -> None:
35 resp = client_nc.get(f"/animes/{path[0]}/reviews{path[1]}")
36 resp_data = resp.json()
38 assert resp.status_code == 422
39 for err in get_json_val(resp_data, "$.detail"):
40 assert get_json_val(err, "$.msg") == "Input should be a valid integer, unable to parse string as an integer"
43@pytest.mark.parametrize("path", [
44 ("2592/3304", "?page=0"),
45])
46def test_review_input_less_than_min_threshold(client_nc, path) -> None:
47 resp = client_nc.get(f"/animes/{path[0]}/reviews{path[1]}")
48 resp_data = resp.json()
50 assert resp.status_code == 422
51 for err in get_json_val(resp_data, "$.detail"):
52 assert get_json_val(err, "$.msg") == "Input should be greater than 0"
55@pytest.mark.parametrize("path", [
56 ("2592/3304", "?page=10001"),
57])
58def test_review_input_more_than_max_threshold(client_nc, path) -> None:
59 resp = client_nc.get(f"/animes/{path[0]}/reviews{path[1]}")
60 resp_data = resp.json()
62 assert resp.status_code == 422
63 for err in get_json_val(resp_data, "$.detail"):
64 assert get_json_val(err, "$.msg") == "Input should be less than or equal to 10000"
67@pytest.mark.parametrize(
68 "test_data",
69 [
70 {
71 "title": "デジモンアドベンチャー",
72 "rating": 4.3,
73 "mark_count": 2293,
74 "clip_count": 587,
75 "series_id": 2592,
76 "season_id": 3304,
77 "link": "https://filmarks.com/animes/2592/3304",
78 "production_year_link": "https://filmarks.com/list-anime/year/1990s/1999",
79 "production_year": 1999,
80 "release_date": "1999年03月07日",
81 "playback_time": "23分",
82 "country_of_origin": ["日本"],
83 "production_company": [
84 {
85 "name": "東映アニメーション",
86 "id": 41,
87 "link": "https://filmarks.com/list-anime/company/41",
88 }
89 ],
90 "cast": [
91 {
92 "name": "藤田淑子",
93 "character": "八神太一",
94 "id": 44556,
95 "link": "https://filmarks.com/people/44556",
96 },
97 {
98 "name": "坂本千夏",
99 "character": "アグモン",
100 "id": 122276,
101 "link": "https://filmarks.com/people/122276",
102 },
103 {
104 "name": " 風間勇刀",
105 "character": "石田ヤマト",
106 "id": 240716,
107 "link": "https://filmarks.com/people/240716",
108 },
109 {
110 "name": "山口眞弓",
111 "character": "ガブモン",
112 "id": 214280,
113 "link": "https://filmarks.com/people/214280",
114 },
115 {
116 "name": "水谷優子",
117 "character": "武之内空",
118 "id": 214749,
119 "link": "https://filmarks.com/people/214749",
120 },
121 {
122 "name": "重松花鳥",
123 "character": "ピヨモン",
124 "id": 214279,
125 "link": "https://filmarks.com/people/214279",
126 },
127 {
128 "name": "天神有海",
129 "character": "泉光子郎",
130 "id": 240715,
131 "link": "https://filmarks.com/people/240715",
132 },
133 {
134 "name": "櫻井孝宏",
135 "character": "テントモン",
136 "id": 187531,
137 "link": "https://filmarks.com/people/187531",
138 },
139 {
140 "name": "前田愛",
141 "character": "太刀川ミミ",
142 "id": 274563,
143 "link": "https://filmarks.com/people/274563",
144 },
145 {
146 "name": "山田きのこ",
147 "character": "パルモン",
148 "id": 214281,
149 "link": "https://filmarks.com/people/214281",
150 },
151 {
152 "name": "菊池正美",
153 "character": "城戸丈",
154 "id": 220563,
155 "link": "https://filmarks.com/people/220563",
156 },
157 {
158 "name": "竹内順子",
159 "character": "ゴマモン",
160 "id": 189557,
161 "link": "https://filmarks.com/people/189557",
162 },
163 {
164 "name": "小西寛子",
165 "character": "高石タケル",
166 "id": 240717,
167 "link": "https://filmarks.com/people/240717",
168 },
169 {
170 "name": "松本美和",
171 "character": "パタモン",
172 "id": 75432,
173 "link": "https://filmarks.com/people/75432",
174 },
175 {
176 "name": "荒木香恵",
177 "character": "八神ヒカリ",
178 "id": 237819,
179 "link": "https://filmarks.com/people/237819",
180 },
181 {
182 "name": "徳光由禾",
183 "character": "テイルモン",
184 "id": 214282,
185 "link": "https://filmarks.com/people/214282",
186 },
187 ],
188 },
189 ],
190)
191def test_info_with_results_single_1(client_nc, test_data, caplog) -> None:
192 series_id = get_json_val(test_data, "$.series_id")
193 season_id = get_json_val(test_data, "$.season_id")
195 resp = client_nc.get(f"/animes/{series_id}/{season_id}")
196 resp_data = resp.json()
198 assert resp.status_code == 200
199 assert get_json_val(resp_data, "$.data.series_id") == series_id
200 assert get_json_val(resp_data, "$.data.season_id") == season_id
201 assert ANIME_ENG in caplog.text
203 fields = [
204 "title",
205 "link",
206 "production_year_link",
207 "production_year",
208 "release_date",
209 "playback_time",
210 "country_of_origin",
211 "production_company",
212 "cast",
213 ]
214 for field in fields:
215 assert get_json_val(resp_data, f"$.data.{field}") == get_json_val(test_data, f"$.{field}")
217 assert get_json_val(resp_data, "$.data.rating") == pytest.approx(get_json_val(test_data, "$.rating"), abs=0.5)
218 assert get_json_val(resp_data, "$.data.mark_count") >= get_json_val(test_data, "$.mark_count")
219 assert get_json_val(resp_data, "$.data.clip_count") >= get_json_val(test_data, "$.clip_count")
221 assert get_json_val(resp_data, "$.data.original_title") is None
222 assert get_json_val(resp_data, "$.data.synopsis") is not None
223 assert get_json_val(resp_data, "$.data.official_site") is None
224 assert get_json_val(resp_data, "$.data.poster") is not None
225 assert get_json_val(resp_data, "$.data.creator") is not None
226 assert get_json_val(resp_data, "$.data.planner") is None
227 assert get_json_val(resp_data, "$.data.producer") is None
228 assert get_json_val(resp_data, "$.data.executive_producer") is None
229 assert get_json_val(resp_data, "$.data.chief_director") is None
230 assert get_json_val(resp_data, "$.data.director") is None
231 assert get_json_val(resp_data, "$.data.series_composer") is not None
232 assert get_json_val(resp_data, "$.data.scriptwriter") is not None
233 assert get_json_val(resp_data, "$.data.character_original_designer") is None
234 assert get_json_val(resp_data, "$.data.character_designer") is not None
235 assert get_json_val(resp_data, "$.data.narrator") is not None
236 assert get_json_val(resp_data, "$.data.artist") is not None
239@pytest.mark.parametrize(
240 "test_data",
241 [
242 {
243 "title": "DEATH NOTE",
244 "rating": 4.3,
245 "mark_count": 14633,
246 "clip_count": 3233,
247 "series_id": 1533,
248 "season_id": 2046,
249 "link": "https://filmarks.com/animes/1533/2046",
250 "production_year_link": "https://filmarks.com/list-anime/year/2000s/2006",
251 "production_year": 2006,
252 "release_date": "2006年10月04日",
253 "country_of_origin": ["日本"],
254 "production_company": [
255 {
256 "name": "マッドハウス",
257 "id": 43,
258 "link": "https://filmarks.com/list-anime/company/43",
259 }
260 ],
261 "cast": [
262 {
263 "name": "宮野真守",
264 "character": "夜神月",
265 "id": 52736,
266 "link": "https://filmarks.com/people/52736",
267 },
268 {
269 "name": "山口勝平",
270 "character": "L",
271 "id": 123348,
272 "link": "https://filmarks.com/people/123348",
273 },
274 {
275 "name": "日髙のり子",
276 "character": "ニア",
277 "id": 271949,
278 "link": "https://filmarks.com/people/271949",
279 },
280 {
281 "name": "佐々木望",
282 "character": "メロ",
283 "id": 158771,
284 "link": "https://filmarks.com/people/158771",
285 },
286 {
287 "name": "平野綾",
288 "character": "弥海砂 ",
289 "id": 186905,
290 "link": "https://filmarks.com/people/186905",
291 },
292 {
293 "name": "松風雅也",
294 "character": "魅上照",
295 "id": 143856,
296 "link": "https://filmarks.com/people/143856",
297 },
298 {
299 "name": "岡村麻純",
300 "character": "高田清美",
301 "id": 275804,
302 "link": "https://filmarks.com/people/275804",
303 },
304 ],
305 },
306 ],
307)
308def test_info_with_results_single_2(client_nc, test_data, caplog) -> None:
309 series_id = get_json_val(test_data, "$.series_id")
310 season_id = get_json_val(test_data, "$.season_id")
312 resp = client_nc.get(f"/animes/{series_id}/{season_id}")
313 resp_data = resp.json()
315 assert resp.status_code == 200
316 assert get_json_val(resp_data, "$.data.series_id") == series_id
317 assert get_json_val(resp_data, "$.data.season_id") == season_id
318 assert ANIME_ENG in caplog.text
320 fields = [
321 "title",
322 "link",
323 "production_year_link",
324 "production_year",
325 "release_date",
326 "playback_time",
327 "country_of_origin",
328 "production_company",
329 "cast",
330 ]
331 for field in fields:
332 assert get_json_val(resp_data, f"$.data.{field}") == get_json_val(test_data, f"$.{field}")
334 assert get_json_val(resp_data, "$.data.rating") == pytest.approx(get_json_val(test_data, "$.rating"), abs=0.5)
335 assert get_json_val(resp_data, "$.data.mark_count") >= get_json_val(test_data, "$.mark_count")
336 assert get_json_val(resp_data, "$.data.clip_count") >= get_json_val(test_data, "$.clip_count")
338 assert get_json_val(resp_data, "$.data.original_title") is None
339 assert get_json_val(resp_data, "$.data.synopsis") is not None
340 assert get_json_val(resp_data, "$.data.official_site") is None
341 assert get_json_val(resp_data, "$.data.poster") is not None
342 assert get_json_val(resp_data, "$.data.creator") is not None
343 assert get_json_val(resp_data, "$.data.planner") is None
344 assert get_json_val(resp_data, "$.data.producer") is None
345 assert get_json_val(resp_data, "$.data.executive_producer") is None
346 assert get_json_val(resp_data, "$.data.chief_director") is None
347 assert get_json_val(resp_data, "$.data.director") is not None
348 assert get_json_val(resp_data, "$.data.series_composer") is not None
349 assert get_json_val(resp_data, "$.data.scriptwriter") is None
350 assert get_json_val(resp_data, "$.data.character_original_designer") is None
351 assert get_json_val(resp_data, "$.data.character_designer") is not None
352 assert get_json_val(resp_data, "$.data.narrator") is None
353 assert get_json_val(resp_data, "$.data.artist") is not None
356@pytest.mark.parametrize(
357 "test_data",
358 [
359 {
360 "title": "アバター 伝説の少年アン:火の巻",
361 "original_title": "Avatar: The Last Airbender:Fire",
362 "rating": 4.5,
363 "mark_count": 75,
364 "clip_count": 37,
365 "series_id": 3691,
366 "season_id": 4983,
367 "link": "https://filmarks.com/animes/3691/4983",
368 "production_year_link": "https://filmarks.com/list-anime/year/2000s/2007",
369 "production_year": 2007,
370 "country_of_origin": ["アメリカ"],
371 "production_company": [
372 {
373 "name": "MOI Animation",
374 "id": 432,
375 "link": "https://filmarks.com/list-anime/company/432",
376 }
377 ],
378 "cast": [
379 {
380 "name": "ザック・タイラー",
381 "character": "アン",
382 "id": 47745,
383 "link": "https://filmarks.com/people/47745",
384 },
385 {
386 "name": "メイ・ホイットマン",
387 "character": "カタラ",
388 "id": 12018,
389 "link": "https://filmarks.com/people/12018",
390 },
391 {
392 "name": "ジャック・デ・セナ",
393 "character": "サカ",
394 "id": 231429,
395 "link": "https://filmarks.com/people/231429",
396 },
397 {
398 "name": "ディー・ブラッドリー・ベイカー",
399 "character": "アッパ/モモ",
400 "id": 192081,
401 "link": "https://filmarks.com/people/192081",
402 },
403 {
404 "name": "ダンテ・バスコ",
405 "character": "ズーコ",
406 "id": 123497,
407 "link": "https://filmarks.com/people/123497",
408 },
409 {
410 "name": "ジェシー・フラワー",
411 "character": "トフ",
412 "id": 307449,
413 "link": "https://filmarks.com/people/307449",
414 },
415 ],
416 },
417 ],
418)
419def test_info_with_results_single_3(client_nc, test_data, caplog) -> None:
420 series_id = get_json_val(test_data, "$.series_id")
421 season_id = get_json_val(test_data, "$.season_id")
423 resp = client_nc.get(f"/animes/{series_id}/{season_id}")
424 resp_data = resp.json()
426 assert resp.status_code == 200
427 assert get_json_val(resp_data, "$.data.series_id") == series_id
428 assert get_json_val(resp_data, "$.data.season_id") == season_id
429 assert ANIME_ENG in caplog.text
431 fields = [
432 "title",
433 "original_title",
434 "link",
435 "production_year_link",
436 "production_year",
437 "country_of_origin",
438 "production_company",
439 "cast",
440 ]
441 for field in fields:
442 assert get_json_val(resp_data, f"$.data.{field}") == get_json_val(test_data, f"$.{field}")
444 assert get_json_val(resp_data, "$.data.rating") == pytest.approx(get_json_val(test_data, "$.rating"), abs=0.5)
445 assert get_json_val(resp_data, "$.data.mark_count") >= get_json_val(test_data, "$.mark_count")
446 assert get_json_val(resp_data, "$.data.clip_count") >= get_json_val(test_data, "$.clip_count")
448 assert get_json_val(resp_data, "$.data.synopsis") is not None
449 assert get_json_val(resp_data, "$.data.official_site") is None
450 assert get_json_val(resp_data, "$.data.poster") is not None
451 assert get_json_val(resp_data, "$.data.release_date") is None
452 assert get_json_val(resp_data, "$.data.playback_time") is None
453 assert get_json_val(resp_data, "$.data.creator") is None
454 assert get_json_val(resp_data, "$.data.planner") is None
455 assert get_json_val(resp_data, "$.data.producer") is None
456 assert get_json_val(resp_data, "$.data.executive_producer") is not None
457 assert get_json_val(resp_data, "$.data.chief_director") is None
458 assert get_json_val(resp_data, "$.data.director") is not None
459 assert get_json_val(resp_data, "$.data.series_composer") is None
460 assert get_json_val(resp_data, "$.data.scriptwriter") is not None
461 assert get_json_val(resp_data, "$.data.character_original_designer") is None
462 assert get_json_val(resp_data, "$.data.character_designer") is None
463 assert get_json_val(resp_data, "$.data.narrator") is None
464 assert get_json_val(resp_data, "$.data.artist") is None
467@pytest.mark.parametrize(
468 "test_data",
469 [
470 {
471 "title": "タコピーの原罪",
472 "rating": 4.1,
473 "mark_count": 15740,
474 "clip_count": 6837,
475 "series_id": 4809,
476 "season_id": 6518,
477 "link": "https://filmarks.com/animes/4809/6518",
478 "official_site": "https://www.tbs.co.jp/anime/takopi_project/",
479 "production_year_link": "https://filmarks.com/list-anime/year/2020s/2025",
480 "production_year": 2025,
481 "release_date": "2025年06月28日",
482 "playback_time": "25分",
483 "country_of_origin": ["日本"],
484 "production_company": [
485 {
486 "name": "ENISHIYA",
487 "id": 1152,
488 "link": "https://filmarks.com/list-anime/company/1152"
489 }
490 ],
491 "cast": [
492 {
493 "name": "間宮くるみ",
494 "character": "タコピー",
495 "id": 220117,
496 "link": "https://filmarks.com/people/220117"
497 },
498 {
499 "name": "上田麗奈",
500 "character": "しずか",
501 "id": 192831,
502 "link": "https://filmarks.com/people/192831"
503 },
504 {
505 "name": "小原好美",
506 "character": "まりな\t",
507 "id": 220426,
508 "link": "https://filmarks.com/people/220426"
509 },
510 {
511 "name": "永瀬アンナ",
512 "character": "東",
513 "id": 287199,
514 "link": "https://filmarks.com/people/287199"
515 }
516 ],
517 },
518 ],
519)
520def test_info_with_results_single_4(client_nc, test_data, caplog) -> None:
521 series_id = get_json_val(test_data, "$.series_id")
522 season_id = get_json_val(test_data, "$.season_id")
524 resp = client_nc.get(f"/animes/{series_id}/{season_id}")
525 resp_data = resp.json()
527 assert resp.status_code == 200
528 assert get_json_val(resp_data, "$.data.series_id") == series_id
529 assert get_json_val(resp_data, "$.data.season_id") == season_id
530 assert ANIME_ENG in caplog.text
532 fields = [
533 "title",
534 "link",
535 "official_site",
536 "production_year_link",
537 "production_year",
538 "release_date",
539 "playback_time",
540 "country_of_origin",
541 "production_company",
542 "cast",
543 ]
544 for field in fields:
545 assert get_json_val(resp_data, f"$.data.{field}") == get_json_val(test_data, f"$.{field}")
547 assert get_json_val(resp_data, "$.data.rating") == pytest.approx(get_json_val(test_data, "$.rating"), abs=0.5)
548 assert get_json_val(resp_data, "$.data.mark_count") >= get_json_val(test_data, "$.mark_count")
549 assert get_json_val(resp_data, "$.data.clip_count") >= get_json_val(test_data, "$.clip_count")
551 assert get_json_val(resp_data, "$.data.original_title") is None
552 assert get_json_val(resp_data, "$.data.synopsis") is not None
553 assert get_json_val(resp_data, "$.data.poster") is not None
554 assert get_json_val(resp_data, "$.data.creator") is not None
555 assert get_json_val(resp_data, "$.data.planner") is None
556 assert get_json_val(resp_data, "$.data.producer") is None
557 assert get_json_val(resp_data, "$.data.executive_producer") is None
558 assert get_json_val(resp_data, "$.data.chief_director") is None
559 assert get_json_val(resp_data, "$.data.director") is not None
560 assert get_json_val(resp_data, "$.data.series_composer") is not None
561 assert get_json_val(resp_data, "$.data.scriptwriter") is None
562 assert get_json_val(resp_data, "$.data.character_original_designer") is None
563 assert get_json_val(resp_data, "$.data.character_designer") is not None
564 assert get_json_val(resp_data, "$.data.narrator") is None
565 assert get_json_val(resp_data, "$.data.artist") is not None
568def test_info_with_results_random(client_nc, caplog) -> None:
569 with open(file="tests/anime/100_animes.json", mode="r", encoding="utf-8") as f:
570 test_data = json.load(f)
571 anime = choice(test_data)
573 title = get_json_val(anime, "$.title")
574 series_id = get_json_val(anime, "$.series")
575 season_id = get_json_val(anime, "$.season")
577 resp = client_nc.get(f"/animes/{series_id}/{season_id}")
578 resp_data = resp.json()
580 assert resp.status_code == 200
581 assert ANIME_ENG in caplog.text
582 assert get_json_val(resp_data, "$.data.title") == title
583 assert get_json_val(resp_data, "$.data.rating") is not None
584 assert get_json_val(resp_data, "$.data.mark_count") is not None
585 assert get_json_val(resp_data, "$.data.clip_count") is not None
586 assert get_json_val(resp_data, "$.data.series_id") == series_id
587 assert get_json_val(resp_data, "$.data.season_id") == season_id
588 assert get_json_val(resp_data, "$.data.link") is not None
591@pytest.mark.parametrize(
592 "test_data",
593 [
594 {
595 "title": "DEATH NOTE",
596 "rating": 4.3,
597 "series_id": 1533,
598 "season_id": 2046,
599 "link": "https://filmarks.com/animes/1533/2046",
600 "reviews": {
601 "user": {
602 "name": "ChameleonBaby",
603 "id": "Nick575",
604 "link": "https://filmarks.com/users/Nick575",
605 },
606 "review": {
607 "date": "2020/11/20 19:29",
608 "rating": 4,
609 "id": 292787,
610 "link": "https://filmarks.com/animes/1533/2046/reviews/292787",
611 "contents": "原作が素晴らしいが、アニメ化も素晴らしかった。 特にシブタクの人気が圧倒的。 数々のMAD素材にもなったことから、当時のニコニコ動画文化に根強く浸透している。",
612 },
613 },
614 },
615 ],
616)
617def test_review_with_results_full(client_nc, test_data, caplog) -> None:
618 series_id = get_json_val(test_data, "$.series_id")
619 season_id = get_json_val(test_data, "$.season_id")
621 slug = f"animes/{series_id}/{season_id}"
622 last_page = get_reviews_last_page(slug)
624 resp = client_nc.get(f"{slug}/reviews?page={last_page}")
625 resp_data = resp.json()
627 assert resp.status_code == 200
628 assert get_json_val(resp_data, "$.data.series_id") == series_id
629 assert get_json_val(resp_data, "$.data.season_id") == season_id
630 assert ANIME_ENG in caplog.text
632 review_fields = [
633 "user.name",
634 "user.id",
635 "user.link",
636 "review.date",
637 "review.rating",
638 "review.id",
639 "review.link",
640 "review.contents"
641 ]
642 for field in review_fields:
643 assert get_json_val(resp_data, f"$.data.reviews[-1].{field}") == get_json_val(test_data, f"$.reviews.{field}")
645 assert get_json_val(resp_data, "$.data.title") == get_json_val(test_data, "$.title")
646 assert get_json_val(resp_data, "$.data.original_title") is None
647 assert get_json_val(resp_data, "$.data.rating") == pytest.approx(get_json_val(test_data, "$.rating"), abs=0.5)
648 assert get_json_val(resp_data, "$.data.link") == f"{get_json_val(test_data, "$.link")}?page={last_page}"
649 assert len(get_json_val(resp_data, "$.data.reviews")) > 0
652@pytest.mark.parametrize(
653 "test_data",
654 [
655 {
656 "title": "DEATH NOTE",
657 "rating": 4.3,
658 "series_id": 1533,
659 "season_id": 2046,
660 "review_id": 292787,
661 "link": "https://filmarks.com/animes/1533/2046/reviews/292787",
662 "review": {
663 "user": {
664 "name": "ChameleonBaby",
665 "id": "Nick575",
666 "link": "https://filmarks.com/users/Nick575",
667 },
668 "review": {
669 "date": "2020/11/20 19:29",
670 "rating": 4,
671 "contents": "原作が素晴らしいが、アニメ化も素晴らしかった。 特にシブタクの人気が圧倒的。 数々のMAD素材にもなったことから、当時のニコニコ動画文化に根強く浸透している。",
672 },
673 },
674 },
675 ],
676)
677def test_review_with_results_specific(client_nc, test_data, caplog) -> None:
678 series_id = get_json_val(test_data, "$.series_id")
679 season_id = get_json_val(test_data, "$.season_id")
680 review_id = get_json_val(test_data, "$.review_id")
682 resp = client_nc.get(f"animes/{series_id}/{season_id}/reviews/292787")
683 resp_data = resp.json()
685 assert resp.status_code == 200
686 assert get_json_val(resp_data, "$.data.series_id") == series_id
687 assert get_json_val(resp_data, "$.data.season_id") == season_id
688 assert get_json_val(resp_data, "$.data.review_id") == review_id
689 assert ANIME_ENG in caplog.text
691 review_fields = [
692 "user.name",
693 "user.id",
694 "user.link",
695 "review.date",
696 "review.rating",
697 "review.contents"
698 ]
699 for field in review_fields:
700 assert get_json_val(resp_data, f"$.data.review.{field}") == get_json_val(test_data, f"$.review.{field}")
702 assert get_json_val(resp_data, "$.data.title") == get_json_val(test_data, "$.title")
703 assert get_json_val(resp_data, "$.data.original_title") is None
704 assert get_json_val(resp_data, "$.data.rating") == pytest.approx(get_json_val(test_data, "$.rating"), abs=0.5)
705 assert get_json_val(resp_data, "$.data.link") == get_json_val(test_data, "$.link")
708def test_review_with_results(client_nc, caplog) -> None:
709 title = "ラグラッツ シーズン1"
710 original_title = "Rugrats Season 1"
711 series_id = 3980
712 season_id = 5380
714 resp = client_nc.get(f"/animes/{series_id}/{season_id}/reviews")
715 resp_data = resp.json()
717 assert resp.status_code == 200
718 assert ANIME_ENG in caplog.text
719 assert get_json_val(resp_data, "$.data.title") == title
720 assert get_json_val(resp_data, "$.data.original_title") == original_title
721 assert get_json_val(resp_data, "$.data.rating") is not None
722 assert get_json_val(resp_data, "$.data.series_id") == series_id
723 assert get_json_val(resp_data, "$.data.season_id") == season_id
724 assert get_json_val(resp_data, "$.data.link") is not None
725 assert len(get_json_val(resp_data, "$.data.reviews")) > 0
728def test_review_without_results(client_nc, caplog) -> None:
729 title = "ラグラッツ シーズン1"
730 original_title = "Rugrats Season 1"
731 series_id = 3980
732 season_id = 5380
734 resp = client_nc.get(f"/animes/{series_id}/{season_id}/reviews?page=10")
735 resp_data = resp.json()
737 assert resp.status_code == 200
738 assert ANIME_ENG in caplog.text
739 assert get_json_val(resp_data, "$.data.title") == title
740 assert get_json_val(resp_data, "$.data.original_title") == original_title
741 assert get_json_val(resp_data, "$.data.rating") is not None
742 assert get_json_val(resp_data, "$.data.series_id") == series_id
743 assert get_json_val(resp_data, "$.data.season_id") == season_id
744 assert get_json_val(resp_data, "$.data.link") is not None
745 assert len(get_json_val(resp_data, "$.data.reviews")) == 0
748def test_review_with_results_random(client_nc, caplog) -> None:
749 with open(file="tests/anime/100_animes.json", mode="r", encoding="utf-8") as f:
750 test_data = json.load(f)
751 anime = choice(test_data)
753 title = get_json_val(anime, "$.title")
754 series_id = get_json_val(anime, "$.series")
755 season_id = get_json_val(anime, "$.season")
757 resp = client_nc.get(f"/animes/{series_id}/{season_id}/reviews")
758 resp_data = resp.json()
760 assert resp.status_code == 200
761 assert ANIME_ENG in caplog.text
762 assert get_json_val(resp_data, "$.data.title") == title
763 assert get_json_val(resp_data, "$.data.rating") is not None
764 assert get_json_val(resp_data, "$.data.series_id") == series_id
765 assert get_json_val(resp_data, "$.data.season_id") == season_id
766 assert get_json_val(resp_data, "$.data.link") is not None
767 assert len(get_json_val(resp_data, "$.data.reviews")) > 0