2022-12-08 15:45:37 +00:00
|
|
|
from django.test import TestCase
|
|
|
|
from catalog.common import *
|
|
|
|
from catalog.models import *
|
|
|
|
|
|
|
|
|
|
|
|
class SpotifyTestCase(TestCase):
|
|
|
|
def test_parse(self):
|
|
|
|
t_id_type = IdType.Spotify_Album
|
2022-12-29 23:57:02 -05:00
|
|
|
t_id_value = "65KwtzkJXw7oT819NFWmEP"
|
|
|
|
t_url = "https://open.spotify.com/album/65KwtzkJXw7oT819NFWmEP"
|
2022-12-15 17:29:35 -05:00
|
|
|
site = SiteManager.get_site_by_id_type(t_id_type)
|
2022-12-08 15:45:37 +00:00
|
|
|
self.assertIsNotNone(site)
|
|
|
|
self.assertEqual(site.validate_url(t_url), True)
|
2022-12-15 17:29:35 -05:00
|
|
|
site = SiteManager.get_site_by_url(t_url)
|
2022-12-08 15:45:37 +00:00
|
|
|
self.assertEqual(site.url, t_url)
|
|
|
|
self.assertEqual(site.id_value, t_id_value)
|
|
|
|
|
|
|
|
@use_local_response
|
|
|
|
def test_scrape(self):
|
2022-12-29 23:57:02 -05:00
|
|
|
t_url = "https://open.spotify.com/album/65KwtzkJXw7oT819NFWmEP"
|
2022-12-15 17:29:35 -05:00
|
|
|
site = SiteManager.get_site_by_url(t_url)
|
2022-12-08 15:45:37 +00:00
|
|
|
self.assertEqual(site.ready, False)
|
2022-12-08 16:08:59 +00:00
|
|
|
site.get_resource_ready()
|
2022-12-08 15:45:37 +00:00
|
|
|
self.assertEqual(site.ready, True)
|
2022-12-29 23:57:02 -05:00
|
|
|
self.assertEqual(site.resource.metadata["title"], "The Race For Space")
|
2022-12-08 16:08:59 +00:00
|
|
|
self.assertIsInstance(site.resource.item, Album)
|
2022-12-29 23:57:02 -05:00
|
|
|
self.assertEqual(site.resource.item.barcode, "3610159662676")
|
2022-12-08 18:08:05 +00:00
|
|
|
|
|
|
|
|
|
|
|
class DoubanMusicTestCase(TestCase):
|
|
|
|
def test_parse(self):
|
|
|
|
t_id_type = IdType.DoubanMusic
|
2022-12-29 23:57:02 -05:00
|
|
|
t_id_value = "33551231"
|
|
|
|
t_url = "https://music.douban.com/subject/33551231/"
|
2022-12-15 17:29:35 -05:00
|
|
|
site = SiteManager.get_site_by_id_type(t_id_type)
|
2022-12-08 18:08:05 +00:00
|
|
|
self.assertIsNotNone(site)
|
|
|
|
self.assertEqual(site.validate_url(t_url), True)
|
2022-12-15 17:29:35 -05:00
|
|
|
site = SiteManager.get_site_by_url(t_url)
|
2022-12-08 18:08:05 +00:00
|
|
|
self.assertEqual(site.url, t_url)
|
|
|
|
self.assertEqual(site.id_value, t_id_value)
|
|
|
|
|
|
|
|
@use_local_response
|
|
|
|
def test_scrape(self):
|
2022-12-29 23:57:02 -05:00
|
|
|
t_url = "https://music.douban.com/subject/33551231/"
|
2022-12-15 17:29:35 -05:00
|
|
|
site = SiteManager.get_site_by_url(t_url)
|
2022-12-08 18:08:05 +00:00
|
|
|
self.assertEqual(site.ready, False)
|
|
|
|
site.get_resource_ready()
|
|
|
|
self.assertEqual(site.ready, True)
|
2022-12-29 23:57:02 -05:00
|
|
|
self.assertEqual(site.resource.metadata["title"], "The Race For Space")
|
2022-12-08 18:08:05 +00:00
|
|
|
self.assertIsInstance(site.resource.item, Album)
|
2022-12-29 23:57:02 -05:00
|
|
|
self.assertEqual(site.resource.item.barcode, "3610159662676")
|
2022-12-08 18:08:05 +00:00
|
|
|
|
|
|
|
|
|
|
|
class MultiMusicSitesTestCase(TestCase):
|
|
|
|
@use_local_response
|
|
|
|
def test_albums(self):
|
2022-12-29 23:57:02 -05:00
|
|
|
url1 = "https://music.douban.com/subject/33551231/"
|
|
|
|
url2 = "https://open.spotify.com/album/65KwtzkJXw7oT819NFWmEP"
|
2022-12-15 17:29:35 -05:00
|
|
|
p1 = SiteManager.get_site_by_url(url1).get_resource_ready()
|
|
|
|
p2 = SiteManager.get_site_by_url(url2).get_resource_ready()
|
2022-12-08 18:08:05 +00:00
|
|
|
self.assertEqual(p1.item.id, p2.item.id)
|
2022-12-16 08:34:33 -05:00
|
|
|
|
|
|
|
|
|
|
|
class BandcampTestCase(TestCase):
|
|
|
|
def test_parse(self):
|
|
|
|
t_id_type = IdType.Bandcamp
|
2022-12-29 23:57:02 -05:00
|
|
|
t_id_value = "intlanthem.bandcamp.com/album/in-these-times"
|
|
|
|
t_url = "https://intlanthem.bandcamp.com/album/in-these-times?from=hpbcw"
|
|
|
|
t_url2 = "https://intlanthem.bandcamp.com/album/in-these-times"
|
2022-12-16 08:34:33 -05:00
|
|
|
site = SiteManager.get_site_by_id_type(t_id_type)
|
|
|
|
self.assertIsNotNone(site)
|
|
|
|
self.assertEqual(site.validate_url(t_url), True)
|
|
|
|
site = SiteManager.get_site_by_url(t_url)
|
|
|
|
self.assertEqual(site.url, t_url2)
|
|
|
|
self.assertEqual(site.id_value, t_id_value)
|
|
|
|
|
2022-12-16 08:36:48 -05:00
|
|
|
@use_local_response
|
2022-12-16 08:34:33 -05:00
|
|
|
def test_scrape(self):
|
2022-12-29 23:57:02 -05:00
|
|
|
t_url = "https://intlanthem.bandcamp.com/album/in-these-times?from=hpbcw"
|
2022-12-16 08:34:33 -05:00
|
|
|
site = SiteManager.get_site_by_url(t_url)
|
|
|
|
self.assertEqual(site.ready, False)
|
|
|
|
site.get_resource_ready()
|
|
|
|
self.assertEqual(site.ready, True)
|
2022-12-29 23:57:02 -05:00
|
|
|
self.assertEqual(site.resource.metadata["title"], "In These Times")
|
|
|
|
self.assertEqual(site.resource.metadata["artist"], ["Makaya McCraven"])
|
2022-12-16 08:34:33 -05:00
|
|
|
self.assertIsInstance(site.resource.item, Album)
|
2023-02-03 13:43:55 +01:00
|
|
|
|
|
|
|
|
|
|
|
class DiscogsReleaseTestCase(TestCase):
|
|
|
|
def test_parse(self):
|
|
|
|
t_id_type = IdType.Discogs_Release
|
|
|
|
t_id_value = "25746742"
|
|
|
|
t_url = (
|
|
|
|
"https://www.discogs.com/release/25746742-Phish-LP-on-LP-04-Ghost-5222000"
|
|
|
|
)
|
|
|
|
t_url_2 = "https://www.discogs.com/release/25746742"
|
|
|
|
site = SiteManager.get_site_by_id_type(t_id_type)
|
|
|
|
self.assertIsNotNone(site)
|
|
|
|
self.assertEqual(site.validate_url(t_url), True)
|
|
|
|
site = SiteManager.get_site_by_url(t_url)
|
|
|
|
self.assertEqual(site.url, t_url_2)
|
|
|
|
self.assertEqual(site.id_value, t_id_value)
|
|
|
|
|
|
|
|
@use_local_response
|
|
|
|
def test_scrape(self):
|
|
|
|
t_url = (
|
|
|
|
"https://www.discogs.com/release/25746742-Phish-LP-on-LP-04-Ghost-5222000"
|
|
|
|
)
|
|
|
|
site = SiteManager.get_site_by_url(t_url)
|
|
|
|
self.assertEqual(site.ready, False)
|
|
|
|
site.get_resource_ready()
|
|
|
|
self.assertEqual(site.ready, True)
|
|
|
|
self.assertEqual(
|
|
|
|
site.resource.metadata["title"], 'LP on LP 04: "Ghost" 5/22/2000'
|
|
|
|
)
|
|
|
|
self.assertEqual(site.resource.metadata["artist"], ["Phish"])
|
|
|
|
self.assertIsInstance(site.resource.item, Album)
|
|
|
|
self.assertEqual(site.resource.item.barcode, "850014859275")
|
|
|
|
|
|
|
|
|
|
|
|
class DiscogsMasterTestCase(TestCase):
|
|
|
|
def test_parse(self):
|
|
|
|
t_id_type = IdType.Discogs_Master
|
|
|
|
t_id_value = "14772"
|
|
|
|
t_url = "https://www.discogs.com/master/14772-Linda-Ronstadt-Silk-Purse"
|
|
|
|
t_url_2 = "https://www.discogs.com/master/14772"
|
|
|
|
site = SiteManager.get_site_by_id_type(t_id_type)
|
|
|
|
self.assertIsNotNone(site)
|
|
|
|
self.assertEqual(site.validate_url(t_url), True)
|
|
|
|
site = SiteManager.get_site_by_url(t_url)
|
|
|
|
self.assertEqual(site.url, t_url_2)
|
|
|
|
self.assertEqual(site.id_value, t_id_value)
|
|
|
|
|
|
|
|
@use_local_response
|
|
|
|
def test_scrape(self):
|
|
|
|
t_url = "https://www.discogs.com/master/14772-Linda-Ronstadt-Silk-Purse"
|
|
|
|
site = SiteManager.get_site_by_url(t_url)
|
|
|
|
self.assertEqual(site.ready, False)
|
|
|
|
site.get_resource_ready()
|
|
|
|
self.assertEqual(site.ready, True)
|
|
|
|
self.assertEqual(site.resource.metadata["title"], "Silk Purse")
|
|
|
|
self.assertEqual(site.resource.metadata["artist"], ["Linda Ronstadt"])
|
|
|
|
self.assertIsInstance(site.resource.item, Album)
|