def test_killstatistics_changes(self): content = self.load_resource( "website_changes/8_community_kill_statistics_world_adra.txt") kill_statistics = KillStatistics.from_content(content) self.assertIsInstance(kill_statistics, KillStatistics) self.assertEqual(kill_statistics.world, "Adra") self.assertEqual(len(kill_statistics.entries), 784) # players shortcurt property self.assertEqual(kill_statistics.players, kill_statistics.entries["players"]) self.assertEqual(kill_statistics.players.last_day_killed, 3) self.assertEqual(kill_statistics.players.last_day_killed, kill_statistics.players.last_day_players_killed) self.assertEqual(kill_statistics.players.last_week_killed, 76) self.assertEqual(kill_statistics.players.last_week_killed, kill_statistics.players.last_week_players_killed) # demons demons_entry = kill_statistics.entries["demons"] self.assertEqual(84, demons_entry.last_day_killed) self.assertEqual(1, demons_entry.last_day_players_killed) self.assertEqual(1439, demons_entry.last_week_killed) self.assertEqual(1, demons_entry.last_week_players_killed)
def test_kill_statistics_from_content(self): """Testing parsing kill statistics""" content = self._load_resource(FILE_KILL_STATISTICS_FULL) kill_statistics = KillStatistics.from_content(content) self.assertEqual(kill_statistics.world, "Gladera") self.assertEqual(len(kill_statistics.entries), 920) self.assertIsNotNone(kill_statistics.total) self.assertIsNotNone(kill_statistics.url) # players shortcurt property self.assertEqual(kill_statistics.players, kill_statistics.entries["players"]) self.assertEqual(kill_statistics.players.last_day_killed, 2) self.assertEqual(kill_statistics.players.last_day_killed, kill_statistics.players.last_day_players_killed) self.assertEqual(kill_statistics.players.last_week_killed, 7) self.assertEqual(kill_statistics.players.last_week_killed, kill_statistics.players.last_week_players_killed) # demons demons_entry = kill_statistics.entries["demons"] self.assertEqual(2071, demons_entry.last_day_killed) self.assertEqual(1, demons_entry.last_day_players_killed) self.assertEqual(18484, demons_entry.last_week_killed) self.assertEqual(8, demons_entry.last_week_players_killed)
async def test_client_fetch_kill_statistics(self, mock): """Testing fetching kill statistics""" world = "Antica" content = self.load_resource(FILE_KILL_STATISTICS_FULL) mock.get(KillStatistics.get_url(world), status=200, body=content) kill_statistics = await self.client.fetch_kill_statistics(world) self.assertIsInstance(kill_statistics.data, KillStatistics)
async def fetch_kill_statistics(self, world): """Fetches the kill statistics of a world from Tibia.com. Parameters ---------- world: :class:`str` The name of the world. Returns ------- :class:`KillStatistics` The kill statistics of the world if found. Raises ------ Forbidden If a 403 Forbidden error was returned. This usually means that Tibia.com is rate-limiting the client because of too many requests. NetworkError If there's any connection errors during the request. """ content = await self._get(KillStatistics.get_url(world)) kill_statistics = KillStatistics.from_content(content) return kill_statistics
def test_kill_statistics_from_content_unrelated_section(self): """Testing parsing an unrelated section""" content = self._load_resource(self.FILE_UNRELATED_SECTION) with self.assertRaises(InvalidContent): KillStatistics.from_content(content)
def test_kill_statistics_from_content_empty(self): """Testing parsing empty kill statistics""" content = self._load_resource(FILE_KILL_STATISTICS_EMPTY) kill_statistics = KillStatistics.from_content(content) self.assertIsNone(kill_statistics)