def test_retrieve(self): responses.add(responses.GET, 'https://api.thegamesdb.net/Games/ByGameName?filter%5Bplatform%5D=10&apikey=1e821bf1bab06854840650d77e7e2248f49583821ff9191f2cced47e43bf0a73&include=boxart&name=Tekken&fields=id%2Cgame_title%2Crelease_date%2Cdevelopers%2Cpublishers%2Cplayers%2Cgenres%2Coverview%2Crating', json=self._loadJsonFromFile('thegamesdb_search_tekken_playstation.json'), status=200) responses.add(responses.GET,'https://api.thegamesdb.net/Genres', json=self._loadJsonFromFile('genres.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/Developers', json=self._loadJsonFromFile('developers.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/Publishers', json=self._loadJsonFromFile('publishers.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/Games/Images', json=self._loadJsonFromFile('images_tekken.json'), status=200) scraper = TheGamesDB_Scraper() #do a search to store the found results scraper.search('Tekken', 'PlayStation') result = scraper.retrieve('2613', 'PlayStation') self.assertEquals(result['Game'], [u'Tekken 2']) self.assertTrue(result['Description'][0].startswith('MORE THAN A SEQUEL. THE UNDISPUTED #1 FIGHTING GAME ON THE PLANET.')) self.assertEquals(result['Developer'], [u'Namco']) self.assertEquals(result['Publisher'], [u'Namco']) self.assertEquals(result['ReleaseYear'], [u'1996']) self.assertEquals(result['Genre'], [u'Fighting']) self.assertEquals(result['Players'], [2]) self.assertEquals(result['Filetypeclearlogo'], [u'https://cdn.thegamesdb.net/images/large/clearlogo/2613.png']) self.assertEquals(result['Filetypefanart'], [u'https://cdn.thegamesdb.net/images/large/fanart/2613-1.jpg']) self.assertEquals(result['Filetypescreenshot'], [u'https://cdn.thegamesdb.net/images/large/screenshots/2613-1.jpg']) self.assertEquals(result['Filetypeboxfront'], [u'https://cdn.thegamesdb.net/images/large/boxart/front/2613-1.png']) self.assertEquals(result['Filetypeboxback'], [u'https://cdn.thegamesdb.net/images/large/boxart/back/2613-1.jpg'])
def test_Retrieve_numeric_publisher(self): """Make sure that games with numeric fields that are expected to be strings (e.g. Publisher) are handled correctly""" """Make sure that games with multiple genres are handled correctly""" responses.add(responses.GET, 'https://api.thegamesdb.net/Games/ByGameName?filter%5Bplatform%5D=10&apikey=1e821bf1bab06854840650d77e7e2248f49583821ff9191f2cced47e43bf0a73&include=boxart&name=Syphon+Filter&fields=id%2Cgame_title%2Crelease_date%2Cdevelopers%2Cpublishers%2Cplayers%2Cgenres%2Coverview%2Crating', json=self._loadJsonFromFile('thegamesdb_search_syphon_playstation.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/Genres', json=self._loadJsonFromFile('genres.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/Developers', json=self._loadJsonFromFile('developers.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/Publishers', json=self._loadJsonFromFile('publishers.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/Games/Images', json=self._loadJsonFromFile('images_syphon_playstation.json'), status=200) scraper = TheGamesDB_Scraper() #do a search to store the found results scraper.search('Syphon Filter', 'PlayStation') result = scraper.retrieve('7808', 'PlayStation') self.assertEqual(u"989", result['Publisher'][0], "Expected publisher with numeric name to be a string")
def test_retrieve_missing_images(self): """Make sure that when image types are not present that we don't have issues""" responses.add(responses.GET, 'https://api.thegamesdb.net/Games/ByGameName?filter%5Bplatform%5D=4911&apikey=1e821bf1bab06854840650d77e7e2248f49583821ff9191f2cced47e43bf0a73&include=boxart&name=Arkanoid&fields=id%2Cgame_title%2Crelease_date%2Cdevelopers%2Cpublishers%2Cplayers%2Cgenres%2Coverview%2Crating', json=self._loadJsonFromFile('thegamesdb_search_arkanoid_amiga.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/Genres', json=self._loadJsonFromFile('genres.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/Developers', json=self._loadJsonFromFile('developers.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/Publishers', json=self._loadJsonFromFile('publishers.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/Games/Images', json=self._loadJsonFromFile('images_arkanoid_amiga.json'), status=200) scraper = TheGamesDB_Scraper() #do a search to store the found results scraper.search('Arkanoid', 'Amiga') result = scraper.retrieve('9580', 'Amiga') self.assertEqual(result['Filetypeboxfront'], ['https://cdn.thegamesdb.net/images/large/boxart/front/9580-1.jpg']) self.assertEqual(result['Filetypeclearlogo'], ['https://cdn.thegamesdb.net/images/large/clearlogo/9580.png'])
def test_retrieve_missing_properties(self): responses.add(responses.GET, 'https://api.thegamesdb.net/Games/ByGameName?filter%5Bplatform%5D=4911&apikey=1e821bf1bab06854840650d77e7e2248f49583821ff9191f2cced47e43bf0a73&include=boxart&name=Arkanoid&fields=id%2Cgame_title%2Crelease_date%2Cdevelopers%2Cpublishers%2Cplayers%2Cgenres%2Coverview%2Crating', json=self._loadJsonFromFile('thegamesdb_search_arkanoid_amiga.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/Genres', json=self._loadJsonFromFile('genres.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/Developers', json=self._loadJsonFromFile('developers.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/Publishers', json=self._loadJsonFromFile('publishers.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/Games/Images', json=self._loadJsonFromFile('images_arkanoid_amiga.json'), status=200) scraper = TheGamesDB_Scraper() #do a search to store the found results scraper.search('Arkanoid', 'Amiga') result = scraper.retrieve('9580', 'Amiga') self.assertIsInstance(result, dict, "Return value of parseGameResult should be a dict") self.assertEquals(result['Game'], ["Arkanoid"]) self.assertEquals(result['Developer'], ["Taito Corporation"]) self.assertEquals(result['Publisher'], ["Discovery"]) self.assertEquals(result['Players'], [None]) self.assertTrue(result['Description'][0].startswith( "The original Breakout concept involves controlling a bat at the bottom of the screen"))
def test_GamesResultWithUnicode(self): scraper = TheGamesDB_Scraper() gamedata = scraper.retrieve('137') self.assertTrue( u"Mushroom Kingdom while avoiding all of Kamek\u2019s clever traps" in gamedata['Description'][0], "Expected non-ASCII strings to be converted to Unicode")
def test_retrieve_multiple_genres(self): """Make sure that games with multiple genres are handled correctly""" responses.add( responses.GET, 'https://api.thegamesdb.net/v1/Games/ByGameName?filter%5Bplatform%5D=10&apikey=1e821bf1bab06854840650d77e7e2248f49583821ff9191f2cced47e43bf0a73&include=boxart&name=Syphon+Filter&fields=id%2Cgame_title%2Crelease_date%2Cdevelopers%2Cpublishers%2Cplayers%2Cgenres%2Coverview%2Crating', json=self._loadJsonFromFile( 'thegamesdb_search_syphon_playstation.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/v1/Genres', json=self._loadJsonFromFile('genres.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/v1/Developers', json=self._loadJsonFromFile('developers.json'), status=200) responses.add(responses.GET, 'https://api.thegamesdb.net/v1/Publishers', json=self._loadJsonFromFile('publishers.json'), status=200) responses.add( responses.GET, 'https://api.thegamesdb.net/v1/Games/Images', json=self._loadJsonFromFile('images_syphon_playstation.json'), status=200) scraper = TheGamesDB_Scraper() #do a search to store the found results scraper.search('Syphon Filter', 'PlayStation') result = scraper.retrieve('7808', 'PlayStation') self.assertEqual(len(result['Genre']), 2) self.assertIn("Action", result['Genre'], "Expected genre Action to be retrieved") self.assertIn("Stealth", result['Genre'], "Expected genre Stealth to be retrieved")
def test_GamesResultWithUnicode(self): scraper = TheGamesDB_Scraper() gamedata = scraper.retrieve('137') self.assertTrue(u"Mushroom Kingdom while avoiding all of Kamek\u2019s clever traps" in gamedata['Description'][0], "Expected non-ASCII strings to be converted to Unicode")