mirror of
https://github.com/FuzzyGrim/Yamtrack.git
synced 2026-03-03 02:57:01 +00:00
update import and export media tests
This commit is contained in:
2
.github/workflows/app-tests.yml
vendored
2
.github/workflows/app-tests.yml
vendored
@@ -38,6 +38,8 @@ jobs:
|
|||||||
YAMTRACK_MAL_API: ${{ secrets.YAMTRACK_MAL_API }}
|
YAMTRACK_MAL_API: ${{ secrets.YAMTRACK_MAL_API }}
|
||||||
run: |
|
run: |
|
||||||
coverage run --source='src/app' --parallel-mode src/manage.py test app
|
coverage run --source='src/app' --parallel-mode src/manage.py test app
|
||||||
|
coverage run --source='src/users' --parallel-mode src/manage.py test users
|
||||||
|
coverage run --source='src/integrations' --parallel-mode src/manage.py test integrations
|
||||||
|
|
||||||
- name: Build Coverage Report
|
- name: Build Coverage Report
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -1,31 +1,30 @@
|
|||||||
"media_id","media_type","title","image","score","progress","status","start_date","end_date","notes","season_number","episode_number","watch_date"
|
"media_id","media_type","title","image","score","progress","status","start_date","end_date","notes","season_number","episode_number","watch_date"
|
||||||
"1668","tv","Friends","tv-f496cm9enuEsZkSPzCwnTESEK5s.jpg","8.0","","","","","","","",""
|
"1668","tv","Friends","https://image.tmdb.org/t/p/w500/2koX1xLkpTQM4IZebYvKysFW1Nh.jpg","","24","In progress","2024-02-09","2024-02-09","","","",""
|
||||||
"10494","movie","Perfect Blue","movie-kG4AZLcWilPYIixowm8pnE3DqfI.jpg","9.0","1","Completed","","2023-07-13","","","",""
|
"10494","movie","Perfect Blue","https://image.tmdb.org/t/p/w500/6WTiOCfDPP8XV4jqfloiVWf7KHq.jpg","9.0","1","Completed","","2024-02-09","","","",""
|
||||||
"1668","season","Friends","season-odCW88Cq5hAF0ZFVOkeJmeQv1nV.jpg","7.0","24","Completed","2023-07-14","2023-07-14","nice","1","",""
|
"1668","season","Friends","https://image.tmdb.org/t/p/w500/odCW88Cq5hAF0ZFVOkeJmeQv1nV.jpg","8.0","24","Completed","2024-02-09","2024-02-09","","1","",""
|
||||||
"1396","season","Breaking Bad","season-1BP4xYv9ZG4ZVHkL7ocOziBbSYH.jpg","","0","Planning","","","","1","",""
|
"1668","episode","Friends","","","","","","","","1","24","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","1","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","23","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","2","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","22","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","3","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","21","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","4","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","20","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","5","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","19","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","6","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","18","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","7","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","17","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","8","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","16","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","9","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","15","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","10","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","14","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","11","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","13","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","12","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","12","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","13","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","11","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","14","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","10","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","15","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","9","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","16","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","8","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","17","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","7","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","18","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","6","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","19","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","5","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","20","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","4","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","21","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","3","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","22","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","2","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","23","2023-07-14"
|
"1668","episode","Friends","","","","","","","","1","1","2024-02-09"
|
||||||
"1668","episode","Friends","","","","","","","","1","24","2023-07-14"
|
"227","anime","FLCL","https://cdn.myanimelist.net/images/anime/7/77356l.jpg","","2","In progress","2024-02-09","","","","",""
|
||||||
"227","anime","FLCL","anime-77356l.jpg","","2","In progress","2023-07-14","","","","",""
|
"2","manga","Berserk","https://cdn.myanimelist.net/images/manga/1/157897l.jpg","","0","Completed","","2024-02-09","","","",""
|
||||||
"2","manga","Berserk","manga-157897l.jpg","","0","Planning","","","","","",""
|
|
||||||
|
|||||||
|
@@ -19,10 +19,11 @@ class ExportCSVTest(TestCase):
|
|||||||
self.client.login(**self.credentials)
|
self.client.login(**self.credentials)
|
||||||
|
|
||||||
# Create test data for each model
|
# Create test data for each model
|
||||||
TV.objects.create(
|
tv = TV.objects.create(
|
||||||
media_id=1668,
|
media_id=1668,
|
||||||
title="Friends",
|
title="Friends",
|
||||||
score=9,
|
score=9,
|
||||||
|
status="In progress",
|
||||||
user=self.user,
|
user=self.user,
|
||||||
notes="Nice",
|
notes="Nice",
|
||||||
)
|
)
|
||||||
@@ -42,10 +43,11 @@ class ExportCSVTest(TestCase):
|
|||||||
media_id=1668,
|
media_id=1668,
|
||||||
title="Friends",
|
title="Friends",
|
||||||
score=9,
|
score=9,
|
||||||
status="Completed",
|
status="In progress",
|
||||||
season_number=1,
|
season_number=1,
|
||||||
user=self.user,
|
user=self.user,
|
||||||
notes="Nice",
|
notes="Nice",
|
||||||
|
related_tv=tv,
|
||||||
)
|
)
|
||||||
|
|
||||||
Episode.objects.create(
|
Episode.objects.create(
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
import json
|
import json
|
||||||
import os
|
from pathlib import Path
|
||||||
from unittest.mock import MagicMock, patch
|
from unittest.mock import MagicMock, patch
|
||||||
|
|
||||||
|
import requests
|
||||||
from app.models import TV, Anime, Episode, Manga, Movie, Season
|
from app.models import TV, Anime, Episode, Manga, Movie, Season
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.test import TestCase
|
from django.test import TestCase
|
||||||
@@ -9,7 +10,7 @@ from users.models import User
|
|||||||
|
|
||||||
from integrations.utils import imports
|
from integrations.utils import imports
|
||||||
|
|
||||||
mock_path = os.path.join(os.path.dirname(__file__), "mock_data")
|
mock_path = Path(__file__).resolve().parent / "mock_data"
|
||||||
|
|
||||||
|
|
||||||
class ImportMAL(TestCase):
|
class ImportMAL(TestCase):
|
||||||
@@ -21,12 +22,12 @@ class ImportMAL(TestCase):
|
|||||||
self.user = User.objects.create_user(**self.credentials)
|
self.user = User.objects.create_user(**self.credentials)
|
||||||
|
|
||||||
@patch("requests.get")
|
@patch("requests.get")
|
||||||
def test_import_animelist(self: "ImportMAL", mock_request) -> None:
|
def test_import_animelist(self: "ImportMAL", mock_request: "patch") -> None:
|
||||||
"""Basic test importing anime and manga from MyAnimeList."""
|
"""Basic test importing anime and manga from MyAnimeList."""
|
||||||
|
|
||||||
with open(mock_path + "/import_mal_anime.json") as file:
|
with open(mock_path / "import_mal_anime.json") as file:
|
||||||
anime_response = json.load(file)
|
anime_response = json.load(file)
|
||||||
with open(mock_path + "/import_mal_manga.json") as file:
|
with open(mock_path / "import_mal_manga.json") as file:
|
||||||
manga_response = json.load(file)
|
manga_response = json.load(file)
|
||||||
|
|
||||||
anime_mock = MagicMock()
|
anime_mock = MagicMock()
|
||||||
@@ -48,15 +49,14 @@ class ImportMAL(TestCase):
|
|||||||
True,
|
True,
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
Manga.objects.get(user=self.user, title="Fire Punch").score
|
Manga.objects.get(user=self.user, title="Fire Punch").score == 7,
|
||||||
== 7,
|
|
||||||
True,
|
True,
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_user_not_found(self: "ImportMAL") -> None:
|
def test_user_not_found(self: "ImportMAL") -> None:
|
||||||
"""Test that an error is raised if the user is not found."""
|
"""Test that an error is raised if the user is not found."""
|
||||||
|
|
||||||
self.assertRaises(ValueError, imports.mal_data, "fhdsufdsu", self.user)
|
self.assertRaises(requests.exceptions.HTTPError, imports.mal_data, "fhdsufdsu", self.user)
|
||||||
|
|
||||||
|
|
||||||
class ImportTMDB(TestCase):
|
class ImportTMDB(TestCase):
|
||||||
@@ -71,7 +71,7 @@ class ImportTMDB(TestCase):
|
|||||||
def test_tmdb_import_ratings(self: "ImportTMDB") -> None:
|
def test_tmdb_import_ratings(self: "ImportTMDB") -> None:
|
||||||
"""Test importing ratings from TMDB."""
|
"""Test importing ratings from TMDB."""
|
||||||
|
|
||||||
with open(mock_path + "/import_tmdb_ratings.csv", "rb") as file:
|
with open(mock_path / "import_tmdb_ratings.csv", "rb") as file:
|
||||||
imports.tmdb_data(file, self.user, "Completed")
|
imports.tmdb_data(file, self.user, "Completed")
|
||||||
self.assertEqual(Movie.objects.filter(user=self.user).count(), 2)
|
self.assertEqual(Movie.objects.filter(user=self.user).count(), 2)
|
||||||
self.assertEqual(TV.objects.filter(user=self.user).count(), 1)
|
self.assertEqual(TV.objects.filter(user=self.user).count(), 1)
|
||||||
@@ -79,11 +79,10 @@ class ImportTMDB(TestCase):
|
|||||||
def test_tmdb_import_watchlist(self: "ImportTMDB") -> None:
|
def test_tmdb_import_watchlist(self: "ImportTMDB") -> None:
|
||||||
"""Test importing watchlist from TMDB."""
|
"""Test importing watchlist from TMDB."""
|
||||||
|
|
||||||
with open(mock_path + "/import_tmdb_watchlist.csv", "rb") as file:
|
with open(mock_path / "import_tmdb_watchlist.csv", "rb") as file:
|
||||||
imports.tmdb_data(file, self.user, "Planning")
|
imports.tmdb_data(file, self.user, "Planning")
|
||||||
|
|
||||||
self.assertEqual(TV.objects.filter(user=self.user).count(), 0)
|
self.assertEqual(TV.objects.filter(user=self.user).count(), 2)
|
||||||
self.assertEqual(Season.objects.filter(user=self.user).count(), 2)
|
|
||||||
|
|
||||||
|
|
||||||
class ImportAniList(TestCase):
|
class ImportAniList(TestCase):
|
||||||
@@ -96,10 +95,10 @@ class ImportAniList(TestCase):
|
|||||||
self.user = User.objects.create_user(**self.credentials)
|
self.user = User.objects.create_user(**self.credentials)
|
||||||
|
|
||||||
@patch("requests.post")
|
@patch("requests.post")
|
||||||
def test_import_anilist(self: "ImportAniList", mock_request) -> None:
|
def test_import_anilist(self: "ImportAniList", mock_request: "patch") -> None:
|
||||||
"""Basic test importing anime and manga from AniList."""
|
"""Basic test importing anime and manga from AniList."""
|
||||||
|
|
||||||
with open(mock_path + "/import_anilist.json") as file:
|
with open(mock_path / "import_anilist.json") as file:
|
||||||
anilist_response = json.load(file)
|
anilist_response = json.load(file)
|
||||||
mock_request.return_value.json.return_value = anilist_response
|
mock_request.return_value.json.return_value = anilist_response
|
||||||
|
|
||||||
@@ -111,15 +110,14 @@ class ImportAniList(TestCase):
|
|||||||
True,
|
True,
|
||||||
)
|
)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
Manga.objects.get(user=self.user, title="One Punch-Man").score
|
Manga.objects.get(user=self.user, title="One Punch-Man").score == 9,
|
||||||
== 9,
|
|
||||||
True,
|
True,
|
||||||
)
|
)
|
||||||
|
|
||||||
def test_user_not_found(self: "ImportAniList") -> None:
|
def test_user_not_found(self: "ImportAniList") -> None:
|
||||||
"""Test that an error is raised if the user is not found."""
|
"""Test that an error is raised if the user is not found."""
|
||||||
|
|
||||||
self.assertRaises(ValueError, imports.anilist_data, "fhdsufdsu", self.user)
|
self.assertRaises(requests.exceptions.HTTPError, imports.anilist_data, "fhdsufdsu", self.user)
|
||||||
|
|
||||||
|
|
||||||
class ImportYamtrack(TestCase):
|
class ImportYamtrack(TestCase):
|
||||||
@@ -134,14 +132,14 @@ class ImportYamtrack(TestCase):
|
|||||||
def test_import_yamtrack(self: "ImportYamtrack") -> None:
|
def test_import_yamtrack(self: "ImportYamtrack") -> None:
|
||||||
"""Basic test importing media from Yamtrack."""
|
"""Basic test importing media from Yamtrack."""
|
||||||
|
|
||||||
with open(mock_path + "/import_yamtrack.csv", "rb") as file:
|
with open(mock_path / "import_yamtrack.csv", "rb") as file:
|
||||||
imports.yamtrack_data(file, self.user)
|
imports.yamtrack_data(file, self.user)
|
||||||
|
|
||||||
self.assertEqual(Anime.objects.filter(user=self.user).count(), 1)
|
self.assertEqual(Anime.objects.filter(user=self.user).count(), 1)
|
||||||
self.assertEqual(Manga.objects.filter(user=self.user).count(), 1)
|
self.assertEqual(Manga.objects.filter(user=self.user).count(), 1)
|
||||||
self.assertEqual(TV.objects.filter(user=self.user).count(), 1)
|
self.assertEqual(TV.objects.filter(user=self.user).count(), 1)
|
||||||
self.assertEqual(Movie.objects.filter(user=self.user).count(), 1)
|
self.assertEqual(Movie.objects.filter(user=self.user).count(), 1)
|
||||||
self.assertEqual(Season.objects.filter(user=self.user).count(), 2)
|
self.assertEqual(Season.objects.filter(user=self.user).count(), 1)
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
Episode.objects.filter(related_season__user=self.user).count(),
|
Episode.objects.filter(related_season__user=self.user).count(),
|
||||||
24,
|
24,
|
||||||
|
|||||||
Reference in New Issue
Block a user