from base import BaseTestCase, Profile from parameterized import parameterized profiles = [ ['Test account', 'mobile_test', 'Test Account. test test Testing username with @mobile_test_2 and a #hashtag'], ['mobile test 2', 'mobile_test_2', ''] ] verified = [['jack'], ['elonmusk']] protected = [ ['mobile test 7', 'mobile_test_7', ''], ['Randy', 'Poop', 'Social media fanatic.'] ] invalid = [['thisprofiledoesntexist'], ['%']] class TestProfile(BaseTestCase): @parameterized.expand(profiles) def test_data(self, fullname, username, bio): self.open_nitter(username) self.assert_exact_text(fullname, Profile.fullname) self.assert_exact_text(f'@{username}', Profile.username) if len(bio) > 0: self.assert_exact_text(bio, Profile.bio) else: self.assert_element_absent(Profile.bio) @parameterized.expand(verified) def test_verified(self, username): self.open_nitter(username) self.assert_element_visible(Profile.verified) @parameterized.expand(protected) def test_protected(self, fullname, username, bio): self.open_nitter(username) self.assert_element_visible(Profile.protected) self.assert_exact_text(fullname, Profile.fullname) self.assert_exact_text(f'@{username}', Profile.username) self.assert_text('Tweets are protected') if len(bio) > 0: self.assert_text(bio, Profile.bio) else: self.assert_element_absent(Profile.bio) @parameterized.expand(invalid) def test_invalid_username(self, username): self.open_nitter(username) self.assert_text(f'User "{username}" not found') def test_suspended(self): # TODO: detect suspended self.open_nitter('test') self.assert_text(f'User "test" not found')