improve test

This commit is contained in:
Your Name 2023-06-05 10:06:16 -04:00 committed by Henri Dickson
parent 5033f15abc
commit f53b1aca38
9 changed files with 26 additions and 23 deletions

View file

@ -76,7 +76,7 @@ class GoodreadsTestCase(TestCase):
t_id = "77566" t_id = "77566"
t_url = "https://www.goodreads.com/zh/book/show/77566.Hyperion" t_url = "https://www.goodreads.com/zh/book/show/77566.Hyperion"
t_url2 = "https://www.goodreads.com/book/show/77566" t_url2 = "https://www.goodreads.com/book/show/77566"
p1 = SiteManager.get_site_by_id_type(t_type) p1 = SiteManager.get_site_cls_by_id_type(t_type)
p2 = SiteManager.get_site_by_url(t_url) p2 = SiteManager.get_site_by_url(t_url)
self.assertEqual(p1.id_to_url(t_id), t_url2) self.assertEqual(p1.id_to_url(t_id), t_url2)
self.assertEqual(p2.url_to_id(t_url), t_id) self.assertEqual(p2.url_to_id(t_url), t_id)

View file

@ -234,8 +234,11 @@ class SiteManager:
return target return target
@staticmethod @staticmethod
def get_site_by_id_type(typ: str) -> AbstractSite | None: def get_site_cls_by_id_type(typ: str) -> AbstractSite:
return SiteManager.registry[typ]() if typ in SiteManager.registry else None if typ in SiteManager.registry:
return SiteManager.registry[typ]
else:
raise ValueError(f"Site for {typ} not found")
@staticmethod @staticmethod
def get_site_by_url(url: str) -> AbstractSite | None: def get_site_by_url(url: str) -> AbstractSite | None:
@ -271,7 +274,7 @@ class SiteManager:
return SiteManager.register.values() return SiteManager.register.values()
ExternalResource.get_site = lambda resource: SiteManager.get_site_by_id_type( ExternalResource.get_site = lambda resource: SiteManager.get_site_cls_by_id_type(
resource.id_type resource.id_type
) # type: ignore ) # type: ignore

View file

@ -8,7 +8,7 @@ class IGDBTestCase(TestCase):
t_id_type = IdType.IGDB t_id_type = IdType.IGDB
t_id_value = "portal-2" t_id_value = "portal-2"
t_url = "https://www.igdb.com/games/portal-2" t_url = "https://www.igdb.com/games/portal-2"
site = SiteManager.get_site_by_id_type(t_id_type) site = SiteManager.get_site_cls_by_id_type(t_id_type)
self.assertIsNotNone(site) self.assertIsNotNone(site)
self.assertEqual(site.validate_url(t_url), True) self.assertEqual(site.validate_url(t_url), True)
site = SiteManager.get_site_by_url(t_url) site = SiteManager.get_site_by_url(t_url)
@ -54,7 +54,7 @@ class SteamTestCase(TestCase):
t_id_value = "620" t_id_value = "620"
t_url = "https://store.steampowered.com/app/620/Portal_2/" t_url = "https://store.steampowered.com/app/620/Portal_2/"
t_url2 = "https://store.steampowered.com/app/620" t_url2 = "https://store.steampowered.com/app/620"
site = SiteManager.get_site_by_id_type(t_id_type) site = SiteManager.get_site_cls_by_id_type(t_id_type)
self.assertIsNotNone(site) self.assertIsNotNone(site)
self.assertEqual(site.validate_url(t_url), True) self.assertEqual(site.validate_url(t_url), True)
site = SiteManager.get_site_by_url(t_url) site = SiteManager.get_site_by_url(t_url)
@ -84,7 +84,7 @@ class DoubanGameTestCase(TestCase):
t_id_type = IdType.DoubanGame t_id_type = IdType.DoubanGame
t_id_value = "10734307" t_id_value = "10734307"
t_url = "https://www.douban.com/game/10734307/" t_url = "https://www.douban.com/game/10734307/"
site = SiteManager.get_site_by_id_type(t_id_type) site = SiteManager.get_site_cls_by_id_type(t_id_type)
self.assertIsNotNone(site) self.assertIsNotNone(site)
self.assertEqual(site.validate_url(t_url), True) self.assertEqual(site.validate_url(t_url), True)
site = SiteManager.get_site_by_url(t_url) site = SiteManager.get_site_by_url(t_url)
@ -110,7 +110,7 @@ class BangumiGameTestCase(TestCase):
t_id_type = IdType.Bangumi t_id_type = IdType.Bangumi
t_id_value = "15912" t_id_value = "15912"
t_url = "https://bgm.tv/subject/15912" t_url = "https://bgm.tv/subject/15912"
site = SiteManager.get_site_by_id_type(t_id_type) site = SiteManager.get_site_cls_by_id_type(t_id_type)
self.assertIsNotNone(site) self.assertIsNotNone(site)
self.assertEqual(site.validate_url(t_url), True) self.assertEqual(site.validate_url(t_url), True)
site = SiteManager.get_site_by_url(t_url) site = SiteManager.get_site_by_url(t_url)

View file

@ -6,7 +6,7 @@ class DoubanMovieTestCase(TestCase):
def test_parse(self): def test_parse(self):
t_id = "3541415" t_id = "3541415"
t_url = "https://movie.douban.com/subject/3541415/" t_url = "https://movie.douban.com/subject/3541415/"
p1 = SiteManager.get_site_by_id_type(IdType.DoubanMovie) p1 = SiteManager.get_site_cls_by_id_type(IdType.DoubanMovie)
self.assertIsNotNone(p1) self.assertIsNotNone(p1)
self.assertEqual(p1.validate_url(t_url), True) self.assertEqual(p1.validate_url(t_url), True)
p2 = SiteManager.get_site_by_url(t_url) p2 = SiteManager.get_site_by_url(t_url)
@ -33,7 +33,7 @@ class TMDBMovieTestCase(TestCase):
"https://www.themoviedb.org/movie/293767-billy-lynn-s-long-halftime-walk" "https://www.themoviedb.org/movie/293767-billy-lynn-s-long-halftime-walk"
) )
t_url2 = "https://www.themoviedb.org/movie/293767" t_url2 = "https://www.themoviedb.org/movie/293767"
p1 = SiteManager.get_site_by_id_type(IdType.TMDB_Movie) p1 = SiteManager.get_site_cls_by_id_type(IdType.TMDB_Movie)
self.assertIsNotNone(p1) self.assertIsNotNone(p1)
self.assertEqual(p1.validate_url(t_url), True) self.assertEqual(p1.validate_url(t_url), True)
self.assertEqual(p1.validate_url(t_url2), True) self.assertEqual(p1.validate_url(t_url2), True)
@ -59,7 +59,7 @@ class IMDBMovieTestCase(TestCase):
t_id = "tt1375666" t_id = "tt1375666"
t_url = "https://www.imdb.com/title/tt1375666/" t_url = "https://www.imdb.com/title/tt1375666/"
t_url2 = "https://www.imdb.com/title/tt1375666/" t_url2 = "https://www.imdb.com/title/tt1375666/"
p1 = SiteManager.get_site_by_id_type(IdType.IMDB) p1 = SiteManager.get_site_cls_by_id_type(IdType.IMDB)
self.assertIsNotNone(p1) self.assertIsNotNone(p1)
self.assertEqual(p1.validate_url(t_url), True) self.assertEqual(p1.validate_url(t_url), True)
self.assertEqual(p1.validate_url(t_url2), True) self.assertEqual(p1.validate_url(t_url2), True)

View file

@ -18,7 +18,7 @@ class SpotifyTestCase(TestCase):
t_id_type = IdType.Spotify_Album t_id_type = IdType.Spotify_Album
t_id_value = "65KwtzkJXw7oT819NFWmEP" t_id_value = "65KwtzkJXw7oT819NFWmEP"
t_url = "https://open.spotify.com/album/65KwtzkJXw7oT819NFWmEP" t_url = "https://open.spotify.com/album/65KwtzkJXw7oT819NFWmEP"
site = SiteManager.get_site_by_id_type(t_id_type) site = SiteManager.get_site_cls_by_id_type(t_id_type)
self.assertIsNotNone(site) self.assertIsNotNone(site)
self.assertEqual(site.validate_url(t_url), True) self.assertEqual(site.validate_url(t_url), True)
site = SiteManager.get_site_by_url(t_url) site = SiteManager.get_site_by_url(t_url)
@ -44,7 +44,7 @@ class DoubanMusicTestCase(TestCase):
t_id_type = IdType.DoubanMusic t_id_type = IdType.DoubanMusic
t_id_value = "33551231" t_id_value = "33551231"
t_url = "https://music.douban.com/subject/33551231/" t_url = "https://music.douban.com/subject/33551231/"
site = SiteManager.get_site_by_id_type(t_id_type) site = SiteManager.get_site_cls_by_id_type(t_id_type)
self.assertIsNotNone(site) self.assertIsNotNone(site)
self.assertEqual(site.validate_url(t_url), True) self.assertEqual(site.validate_url(t_url), True)
site = SiteManager.get_site_by_url(t_url) site = SiteManager.get_site_by_url(t_url)
@ -89,7 +89,7 @@ class BandcampTestCase(TestCase):
t_id_value = "intlanthem.bandcamp.com/album/in-these-times" t_id_value = "intlanthem.bandcamp.com/album/in-these-times"
t_url = "https://intlanthem.bandcamp.com/album/in-these-times?from=hpbcw" t_url = "https://intlanthem.bandcamp.com/album/in-these-times?from=hpbcw"
t_url2 = "https://intlanthem.bandcamp.com/album/in-these-times" t_url2 = "https://intlanthem.bandcamp.com/album/in-these-times"
site = SiteManager.get_site_by_id_type(t_id_type) site = SiteManager.get_site_cls_by_id_type(t_id_type)
self.assertIsNotNone(site) self.assertIsNotNone(site)
self.assertEqual(site.validate_url(t_url), True) self.assertEqual(site.validate_url(t_url), True)
site = SiteManager.get_site_by_url(t_url) site = SiteManager.get_site_by_url(t_url)
@ -116,7 +116,7 @@ class DiscogsReleaseTestCase(TestCase):
t_id_value = "25829341" t_id_value = "25829341"
t_url = "https://www.discogs.com/release/25829341-JID-The-Never-Story" t_url = "https://www.discogs.com/release/25829341-JID-The-Never-Story"
t_url_2 = "https://www.discogs.com/release/25829341" t_url_2 = "https://www.discogs.com/release/25829341"
site = SiteManager.get_site_by_id_type(t_id_type) site = SiteManager.get_site_cls_by_id_type(t_id_type)
self.assertIsNotNone(site) self.assertIsNotNone(site)
self.assertEqual(site.validate_url(t_url), True) self.assertEqual(site.validate_url(t_url), True)
site = SiteManager.get_site_by_url(t_url) site = SiteManager.get_site_by_url(t_url)
@ -146,7 +146,7 @@ class DiscogsMasterTestCase(TestCase):
t_id_value = "469004" t_id_value = "469004"
t_url = "https://www.discogs.com/master/469004-The-XX-Coexist" t_url = "https://www.discogs.com/master/469004-The-XX-Coexist"
t_url_2 = "https://www.discogs.com/master/469004" t_url_2 = "https://www.discogs.com/master/469004"
site = SiteManager.get_site_by_id_type(t_id_type) site = SiteManager.get_site_cls_by_id_type(t_id_type)
self.assertIsNotNone(site) self.assertIsNotNone(site)
self.assertEqual(site.validate_url(t_url), True) self.assertEqual(site.validate_url(t_url), True)
site = SiteManager.get_site_by_url(t_url) site = SiteManager.get_site_by_url(t_url)
@ -173,7 +173,7 @@ class AppleMusicTestCase(TestCase):
t_id_value = "1284391545" t_id_value = "1284391545"
t_url = "https://music.apple.com/us/album/kids-only/1284391545" t_url = "https://music.apple.com/us/album/kids-only/1284391545"
t_url_2 = "https://music.apple.com/album/1284391545" t_url_2 = "https://music.apple.com/album/1284391545"
site = SiteManager.get_site_by_id_type(t_id_type) site = SiteManager.get_site_cls_by_id_type(t_id_type)
self.assertIsNotNone(site) self.assertIsNotNone(site)
self.assertEqual(site.validate_url(t_url), True) self.assertEqual(site.validate_url(t_url), True)
site = SiteManager.get_site_by_url(t_url) site = SiteManager.get_site_by_url(t_url)

View file

@ -10,7 +10,7 @@ class DoubanDramaTestCase(TestCase):
def test_parse(self): def test_parse(self):
t_id = "24849279" t_id = "24849279"
t_url = "https://www.douban.com/location/drama/24849279/" t_url = "https://www.douban.com/location/drama/24849279/"
p1 = SiteManager.get_site_by_id_type(IdType.DoubanDrama) p1 = SiteManager.get_site_cls_by_id_type(IdType.DoubanDrama)
self.assertIsNotNone(p1) self.assertIsNotNone(p1)
p1 = SiteManager.get_site_by_url(t_url) p1 = SiteManager.get_site_by_url(t_url)
self.assertIsNotNone(p1) self.assertIsNotNone(p1)

View file

@ -11,7 +11,7 @@ from catalog.common import *
# t_id = "657765158" # t_id = "657765158"
# t_url = "https://podcasts.apple.com/us/podcast/%E5%A4%A7%E5%86%85%E5%AF%86%E8%B0%88/id657765158" # t_url = "https://podcasts.apple.com/us/podcast/%E5%A4%A7%E5%86%85%E5%AF%86%E8%B0%88/id657765158"
# t_url2 = "https://podcasts.apple.com/us/podcast/id657765158" # t_url2 = "https://podcasts.apple.com/us/podcast/id657765158"
# p1 = SiteManager.get_site_by_id_type(IdType.ApplePodcast) # p1 = SiteManager.get_site_cls_by_id_type(IdType.ApplePodcast)
# self.assertIsNotNone(p1) # self.assertIsNotNone(p1)
# self.assertEqual(p1.validate_url(t_url), True) # self.assertEqual(p1.validate_url(t_url), True)
# p2 = SiteManager.get_site_by_url(t_url) # p2 = SiteManager.get_site_by_url(t_url)

View file

@ -51,7 +51,7 @@ class IGDB(AbstractSite):
DEFAULT_MODEL = Game DEFAULT_MODEL = Game
@classmethod @classmethod
def id_to_url(self, id_value): def id_to_url(cls, id_value):
return "https://www.igdb.com/games/" + id_value return "https://www.igdb.com/games/" + id_value
@classmethod @classmethod
@ -139,7 +139,7 @@ class IGDB(AbstractSite):
} }
) )
if steam_url: if steam_url:
pd.lookup_ids[IdType.Steam] = SiteManager.get_site_by_id_type( pd.lookup_ids[IdType.Steam] = SiteManager.get_site_cls_by_id_type(
IdType.Steam IdType.Steam
).url_to_id(steam_url) ).url_to_id(steam_url)
if pd.metadata["cover_image_url"]: if pd.metadata["cover_image_url"]:

View file

@ -21,7 +21,7 @@ class TMDBTVTestCase(TestCase):
t_url = "https://www.themoviedb.org/tv/57243-doctor-who" t_url = "https://www.themoviedb.org/tv/57243-doctor-who"
t_url1 = "https://www.themoviedb.org/tv/57243-doctor-who/seasons" t_url1 = "https://www.themoviedb.org/tv/57243-doctor-who/seasons"
t_url2 = "https://www.themoviedb.org/tv/57243" t_url2 = "https://www.themoviedb.org/tv/57243"
p1 = SiteManager.get_site_by_id_type(IdType.TMDB_TV) p1 = SiteManager.get_site_cls_by_id_type(IdType.TMDB_TV)
self.assertIsNotNone(p1) self.assertIsNotNone(p1)
self.assertEqual(p1.validate_url(t_url), True) self.assertEqual(p1.validate_url(t_url), True)
self.assertEqual(p1.validate_url(t_url1), True) self.assertEqual(p1.validate_url(t_url1), True)
@ -52,7 +52,7 @@ class TMDBTVSeasonTestCase(TestCase):
t_id = "57243-11" t_id = "57243-11"
t_url = "https://www.themoviedb.org/tv/57243-doctor-who/season/11" t_url = "https://www.themoviedb.org/tv/57243-doctor-who/season/11"
t_url_unique = "https://www.themoviedb.org/tv/57243/season/11" t_url_unique = "https://www.themoviedb.org/tv/57243/season/11"
p1 = SiteManager.get_site_by_id_type(IdType.TMDB_TVSeason) p1 = SiteManager.get_site_cls_by_id_type(IdType.TMDB_TVSeason)
self.assertIsNotNone(p1) self.assertIsNotNone(p1)
self.assertEqual(p1.validate_url(t_url), True) self.assertEqual(p1.validate_url(t_url), True)
self.assertEqual(p1.validate_url(t_url_unique), True) self.assertEqual(p1.validate_url(t_url_unique), True)