117 lines
4.6 KiB
Python
117 lines
4.6 KiB
Python
from django.test import TestCase
|
|
from catalog.common import *
|
|
from catalog.models import *
|
|
|
|
|
|
class IGDBTestCase(TestCase):
|
|
def test_parse(self):
|
|
t_id_type = IdType.IGDB
|
|
t_id_value = 'portal-2'
|
|
t_url = 'https://www.igdb.com/games/portal-2'
|
|
site = SiteList.get_site_by_id_type(t_id_type)
|
|
self.assertIsNotNone(site)
|
|
self.assertEqual(site.validate_url(t_url), True)
|
|
site = SiteList.get_site_by_url(t_url)
|
|
self.assertEqual(site.url, t_url)
|
|
self.assertEqual(site.id_value, t_id_value)
|
|
|
|
@use_local_response
|
|
def test_scrape(self):
|
|
t_url = 'https://www.igdb.com/games/portal-2'
|
|
site = SiteList.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'], 'Portal 2')
|
|
self.assertIsInstance(site.resource.item, Game)
|
|
self.assertEqual(site.resource.item.steam, '620')
|
|
|
|
@use_local_response
|
|
def test_scrape_non_steam(self):
|
|
t_url = 'https://www.igdb.com/games/the-legend-of-zelda-breath-of-the-wild'
|
|
site = SiteList.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'], 'The Legend of Zelda: Breath of the Wild')
|
|
self.assertIsInstance(site.resource.item, Game)
|
|
self.assertEqual(site.resource.item.primary_lookup_id_type, IdType.IGDB)
|
|
self.assertEqual(site.resource.item.primary_lookup_id_value, 'the-legend-of-zelda-breath-of-the-wild')
|
|
|
|
|
|
class SteamTestCase(TestCase):
|
|
def test_parse(self):
|
|
t_id_type = IdType.Steam
|
|
t_id_value = '620'
|
|
t_url = 'https://store.steampowered.com/app/620/Portal_2/'
|
|
t_url2 = 'https://store.steampowered.com/app/620'
|
|
site = SiteList.get_site_by_id_type(t_id_type)
|
|
self.assertIsNotNone(site)
|
|
self.assertEqual(site.validate_url(t_url), True)
|
|
site = SiteList.get_site_by_url(t_url)
|
|
self.assertEqual(site.url, t_url2)
|
|
self.assertEqual(site.id_value, t_id_value)
|
|
|
|
@use_local_response
|
|
def test_scrape(self):
|
|
t_url = 'https://store.steampowered.com/app/620/Portal_2/'
|
|
site = SiteList.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'], 'Portal 2')
|
|
self.assertEqual(site.resource.metadata['brief'], '“终身测试计划”现已升级,您可以为您自己或您的好友设计合作谜题!')
|
|
self.assertIsInstance(site.resource.item, Game)
|
|
self.assertEqual(site.resource.item.steam, '620')
|
|
|
|
|
|
class DoubanGameTestCase(TestCase):
|
|
def test_parse(self):
|
|
t_id_type = IdType.DoubanGame
|
|
t_id_value = '10734307'
|
|
t_url = 'https://www.douban.com/game/10734307/'
|
|
site = SiteList.get_site_by_id_type(t_id_type)
|
|
self.assertIsNotNone(site)
|
|
self.assertEqual(site.validate_url(t_url), True)
|
|
site = SiteList.get_site_by_url(t_url)
|
|
self.assertEqual(site.url, t_url)
|
|
self.assertEqual(site.id_value, t_id_value)
|
|
|
|
@use_local_response
|
|
def test_scrape(self):
|
|
t_url = 'https://www.douban.com/game/10734307/'
|
|
site = SiteList.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'], '传送门2 Portal 2')
|
|
self.assertIsInstance(site.resource.item, Game)
|
|
self.assertEqual(site.resource.item.douban_game, '10734307')
|
|
|
|
|
|
class BangumiGameTestCase(TestCase):
|
|
def test_parse(self):
|
|
t_id_type = IdType.Bangumi
|
|
t_id_value = '15912'
|
|
t_url = 'https://bgm.tv/subject/15912'
|
|
site = SiteList.get_site_by_id_type(t_id_type)
|
|
self.assertIsNotNone(site)
|
|
self.assertEqual(site.validate_url(t_url), True)
|
|
site = SiteList.get_site_by_url(t_url)
|
|
self.assertEqual(site.url, t_url)
|
|
self.assertEqual(site.id_value, t_id_value)
|
|
|
|
@use_local_response
|
|
def test_scrape(self):
|
|
# TODO
|
|
pass
|
|
|
|
|
|
class MultiGameSitesTestCase(TestCase):
|
|
@use_local_response
|
|
def test_games(self):
|
|
url1 = 'https://www.igdb.com/games/portal-2'
|
|
url2 = 'https://store.steampowered.com/app/620/Portal_2/'
|
|
p1 = SiteList.get_site_by_url(url1).get_resource_ready()
|
|
p2 = SiteList.get_site_by_url(url2).get_resource_ready()
|
|
self.assertEqual(p1.item.id, p2.item.id)
|