def test_world_from_content_full(self): """Testing parsing a world with full information""" content = self.load_resource(FILE_WORLD_FULL) world = World.from_content(content) self.assertIsInstance(world, World) self.assertEqual(world.name, "Premia") self.assertEqual(world.status, "Online") self.assertEqual(world.record_count, 531) self.assertIsInstance(world.record_date, datetime.datetime) self.assertEqual(world.creation_date, "2002-04") self.assertEqual(world.creation_year, 2002) self.assertEqual(world.creation_month, 4) self.assertEqual(world.location, WorldLocation.EUROPE) self.assertEqual(world.pvp_type, PvpType.OPEN_PVP) self.assertEqual(world.transfer_type, TransferType.REGULAR) self.assertEqual(len(world.world_quest_titles), 4) self.assertTrue(world.premium_only) self.assertTrue(world.battleye_protected) self.assertEqual(world.battleye_date, datetime.date(2017, 9, 5)) self.assertFalse(world.experimental) self.assertEqual(len(world.online_players), world.online_count) self.assertEqual(World.get_url(world.name), world.url) world_json_raw = world.to_json() world_json = json.loads(world_json_raw) self.assertEqual(len(world.online_players), len(world_json["online_players"]))
async def test_client_fetch_world(self, mock): """Testing fetching a world""" name = "Antica" content = self.load_resource(FILE_WORLD_FULL) mock.get(World.get_url(name), status=200, body=content) world = await self.client.fetch_world(name) self.assertIsInstance(world.data, World)
def test_world_from_content_offline(self): """Testing parsing an offline world""" content = self.load_resource(FILE_WORLD_FULL_OFFLINE, ) world = World.from_content(content) self.assertIsInstance(world, World) self.assertEqual(world.name, "Antica") self.assertEqual(world.status, "Offline") self.assertEqual(world.record_count, 1052) self.assertIsInstance(world.record_date, datetime.datetime) self.assertEqual(world.creation_date, "1997-01") self.assertEqual(world.creation_year, 1997) self.assertEqual(world.creation_month, 1) self.assertEqual(world.location, WorldLocation.EUROPE) self.assertEqual(world.pvp_type, PvpType.OPEN_PVP) self.assertEqual(world.transfer_type, TransferType.REGULAR) self.assertEqual(len(world.world_quest_titles), 5) self.assertFalse(world.premium_only) self.assertTrue(world.battleye_protected) self.assertEqual(world.battleye_date, datetime.date(2017, 8, 29)) self.assertFalse(world.experimental) self.assertEqual(len(world.online_players), world.online_count) self.assertEqual(World.get_url(world.name), world.url)
async def fetch_world(self, name): """Fetches a world from Tibia.com Parameters ---------- name: :class:`str` The name of the world. Returns ------- :class:`World` The world's information if found, ```None`` otherwise. 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(World.get_url(name)) world = World.from_content(content) return world