Пример #1
0
    def test_character_from_content_complex_deaths(self):
        """Testing parsing a character with complex deaths (summons, assists, etc)"""
        content = self.load_resource(FILE_CHARACTER_DEATHS_COMPLEX)
        char = Character.from_content(content)
        self.assertEqual(5, len(char.deaths))
        death1, death2, death3, death4, death5 = char.deaths
        self.assertIsInstance(death1, Death)
        self.assertEqual(23, len(death1.killers))
        self.assertEqual(1, len(death1.assists))

        self.assertIsInstance(death2, Death)
        self.assertEqual(1, len(death2.killers))
        self.assertEqual(0, len(death2.assists))

        self.assertIsInstance(death3, Death)
        self.assertEqual(11, len(death3.killers))
        self.assertEqual(0, len(death3.assists))
        self.assertEqual("a paladin familiar", death3.killers[-1].summon)
        self.assertEqual("Alloy Hat", death3.killers[-1].name)
        self.assertTrue(death3.killers[-1].traded)

        self.assertIsInstance(death4, Death)
        self.assertEqual(12, len(death4.killers))
        self.assertEqual(0, len(death4.assists))
        self.assertEqual("Cliff Lee Burton", death4.killers[-1].name)
        self.assertTrue(death4.killers[-1].traded)
Пример #2
0
 def test_character_from_content_with_position(self):
     """Testing parsing a character with a position"""
     content = self._load_resource(FILE_CHARACTER_SPECIAL_POSITION)
     char = Character.from_content(content)
     self.assertEqual(char.name, "Steve")
     self.assertEqual(char.position, "CipSoft Member")
     self.assertEqual(char.account_information.position, "CipSoft Member")
Пример #3
0
    def test_character_from_content(self):
        """Testing parsing a character's HTML content"""
        character = Character.from_content(self.load_resource(FILE_CHARACTER_RESOURCE))
        self._compare_character(Character("Tschas", "Gladera", Vocation.ELDER_DRUID, 522, Sex.FEMALE), character)
        self.assertIsNotNone(character.guild_membership)
        self.assertEqual("Bald Dwarfs", character.guild_membership.name)
        self.assertEqual("Emperor", character.guild_membership.rank)
        self.assertIsNotNone(character.guild_url)
        self.assertIsNone(character.married_to_url)
        self.assertEqual(character.guild_name, character.guild_membership.name)
        self.assertEqual(character.guild_rank, character.guild_membership.rank)
        self.assertEqual(AccountStatus.PREMIUM_ACCOUNT, character.account_status)
        self.assertEqual(304, character.achievement_points)
        self.assertIsNone(character.deletion_date)
        self.assertIsNotNone(character.deaths)
        self.assertEqual(2, character.deaths.__len__())
        self.assertEqual(parse_tibia_datetime("Aug 02 2021, 17:32:07 CEST"), character.last_login)
        self.assertEqual(character.url, Character.get_url(character.name))
        self.assertEqual(5, len(character.other_characters))
        self.assertFalse(character.hidden)

        # Badges
        self.assertEqual(3, len(character.account_badges))
        badge = character.account_badges[0]
        self.assertEqual("Ancient Hero", badge.name)
        self.assertEqual("The account is older than 15 years.", badge.description)
Пример #4
0
 def test_character_from_content_truncated_deaths(self):
     """Testing parsing a character with truncated daths"""
     content = self._load_resource(FILE_CHARACTER_TRUNCATED_DEATHS)
     char = Character.from_content(content)
     self.assertEqual("Godlike Terror", char.name)
     self.assertEqual(51, len(char.deaths))
     self.assertTrue(char.deaths_truncated)
Пример #5
0
 def test_character_from_content(self):
     """Testing parsing a character's HTML content"""
     character = Character.from_content(
         self._load_resource(FILE_CHARACTER_RESOURCE))
     self._compare_character(
         Character("Tschas", "Gladera", Vocation.DRUID, 260, Sex.FEMALE),
         character)
     self.assertIsNotNone(character.guild_membership)
     self.assertEqual("Atlantis", character.guild_membership.name)
     self.assertEqual("Gaia", character.guild_membership.rank)
     self.assertIsNotNone(character.guild_url)
     self.assertIsNone(character.married_to_url)
     self.assertEqual(character.guild_name, character.guild_membership.name)
     self.assertEqual(character.guild_rank, character.guild_membership.rank)
     self.assertEqual(AccountStatus.FREE_ACCOUNT, character.account_status)
     self.assertEqual(182, character.achievement_points)
     self.assertIsNone(character.house)
     self.assertIsNone(character.deletion_date)
     self.assertIsNotNone(character.deaths)
     self.assertEqual(0, character.deaths.__len__())
     self.assertEqual(parse_tibia_datetime("Aug 04 2019, 13:56:59 CEST"),
                      character.last_login)
     self.assertEqual(character.url, Character.get_url(character.name))
     self.assertEqual(5, len(character.other_characters))
     self.assertFalse(character.hidden)
def get_character(name):
    """Fetch a character using requests instead of aiohttp."""
    url = Character.get_url(name)

    r = requests.get(url)
    content = r.text
    character = Character.from_content(content)
    return character
Пример #7
0
 def test_character_from_content_deleted_character(self):
     """Testing parsing a character scheduled for deletion"""
     content = self.load_resource(FILE_CHARACTER_DELETION)
     char = Character.from_content(content)
     self.assertEqual("Expendable Dummy", char.name)
     self.assertIsNotNone(char.deletion_date)
     self.assertIsInstance(char.deletion_date, datetime.datetime)
     self.assertEqual(parse_tibia_datetime("Oct 08 2018 22:17:00 CEST"), char.deletion_date)
Пример #8
0
 def test_character_from_content_complex_deaths(self):
     """Testing parsing a character with complex deaths (summons, assists, etc)"""
     content = self._load_resource(FILE_CHARACTER_DEATHS_COMPLEX)
     char = Character.from_content(content)
     self.assertTrue(char.deaths)
     self.assertIsInstance(char.deaths[0], Death)
     self.assertEqual(len(char.deaths), 19)
     oldest_death = char.deaths[-1]
     self.assertEqual(oldest_death.killer.summon, "a fire elemental")
Пример #9
0
 def test_character_from_content_no_selected_badges(self):
     """Testing parsing a character with visible badges but none selected."""
     content = self._load_resource(FILE_CHARACTER_NO_BADGES_SELECTED)
     char = Character.from_content(content)
     self.assertEqual("Cozzackirycerz", char.name)
     self.assertEqual(25, char.achievement_points)
     self.assertIsNone(char.title)
     self.assertEqual(3, char.unlocked_titles)
     self.assertEqual(0, len(char.account_badges))
     self.assertEqual(0, len(char.former_names))
Пример #10
0
 def test_character_from_content_multiple_houses(self):
     """Testing parsing a character with multiple houses."""
     content = self.load_resource(FILE_CHARACTER_MULTIPLE_HOUSES)
     char = Character.from_content(content)
     self.assertEqual("Sayuri Nowan", char.name)
     self.assertEqual(2, len(char.houses))
     first_house = char.houses[0]
     second_house = char.houses[1]
     self.assertEqual("Cormaya 10", first_house.name)
     self.assertEqual("Old Heritage Estate", second_house.name)
     self.assertEqual("Edron", first_house.town)
     self.assertEqual("Rathleton", second_house.town)
Пример #11
0
    def test_character_from_content_with_former_names(self):
        """Testing parsing a character that has former names"""
        content = self._load_resource(FILE_CHARACTER_FORMER_NAMES)
        char = Character.from_content(content)
        self.assertIsInstance(char.former_names, list)
        self.assertTrue(char.former_names)
        self.assertEqual(len(char.former_names), 2)

        self.assertIsInstance(char.house, CharacterHouse)
        self.assertEqual(char.house.owner, char.name)
        self.assertEqual(char.house.town, "Darashia")
        self.assertEqual(char.house.world, char.world)
        self.assertIsInstance(char.house.paid_until_date, datetime.date)
Пример #12
0
    def test_character_from_content_with_position(self):
        """Testing parsing a character with a position"""
        content = self.load_resource(FILE_CHARACTER_SPECIAL_POSITION)

        position = "CipSoft Member"

        char = Character.from_content(content)
        self.assertEqual("Steve", char.name)
        self.assertEqual(position, char.position)
        self.assertEqual(position, char.account_information.position)
        steve_other = char.other_characters[2]
        self.assertEqual("Steve", steve_other.name)
        self.assertEqual("CipSoft Member", steve_other.position)
Пример #13
0
 def test_character_from_content_badges_and_title(self):
     """Testing parsing a character with account badges and a title"""
     content = self._load_resource(FILE_CHARACTER_TITLE_BADGES)
     char = Character.from_content(content)
     self.assertEqual("Galarzaa Fidera", char.name)
     self.assertEqual(406, char.achievement_points)
     self.assertEqual("Gold Hoarder", char.title)
     self.assertEqual(8, char.unlocked_titles)
     self.assertEqual(6, len(char.account_badges))
     for badge in char.account_badges:
         self.assertIsInstance(badge, AccountBadge)
         self.assertIsInstance(badge.name, str)
         self.assertIsInstance(badge.icon_url, str)
         self.assertIsInstance(badge.description, str)
Пример #14
0
    def test_character_changes(self):
        content = self.load_resource(
            "website_changes/2_community_characters_bobeek.txt")
        character = Character.from_content(content)

        self.assertEqual("Bobeek", character.name)
        self.assertIsNotNone(character.guild_membership)
        self.assertEqual("Hill", character.guild_membership.name)
        self.assertEqual("King", character.guild_membership.rank)
        self.assertEqual("Goraca", character.married_to)
        self.assertEqual(character.guild_name, character.guild_membership.name)
        self.assertEqual(character.guild_rank, character.guild_membership.rank)
        self.assertEqual(AccountStatus.PREMIUM_ACCOUNT,
                         character.account_status)
        self.assertEqual(1038, character.achievement_points)
        self.assertIsNone(character.deletion_date)
        self.assertIsNotNone(character.deaths)
        self.assertEqual(1, character.deaths.__len__())
        self.assertEqual(character.url, Character.get_url(character.name))
        self.assertEqual(3, len(character.other_characters))
        self.assertFalse(character.hidden)
Пример #15
0
    async def fetch_character(self, name):
        """Fetches a character by its name from Tibia.com

        Parameters
        ----------
        name: :class:`str`
            The name of the character.

        Returns
        -------
        :class:`Character`
            The character if found, else ``None``.

        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(Character.get_url(name.strip()))
        char = Character.from_content(content)
        return char
Пример #16
0
 def test_character_from_content_not_found(self):
     """Testing parsing a character not found page"""
     content = self._load_resource(FILE_CHARACTER_NOT_FOUND)
     char = Character.from_content(content)
     self.assertIsNone(char)
Пример #17
0
 def test_character_from_content_unrelated(self):
     """Testing parsing an unrelated tibia.com section"""
     content = self._load_resource(self.FILE_UNRELATED_SECTION)
     with self.assertRaises(InvalidContent):
         Character.from_content(content)