test_profile.py 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. from base import BaseTestCase, Profile
  2. from parameterized import parameterized
  3. profiles = [
  4. ['mobile_test', 'Test account',
  5. 'Test Account. test test Testing username with @mobile_test_2 and a #hashtag'],
  6. ['mobile_test_2', 'mobile test 2', '']
  7. ]
  8. verified = [['jack'], ['elonmusk']]
  9. protected = [
  10. ['mobile_test_7', 'mobile test 7', ''],
  11. ['Poop', 'Randy', 'Social media fanatic.']
  12. ]
  13. invalid = [['thisprofiledoesntexist'], ['%']]
  14. banner_color = [
  15. ['TheTwoffice', '29, 161, 242'],
  16. ['profiletest', '80, 176, 58']
  17. ]
  18. banner_image = [
  19. ['mobile_test', 'profile_banners%2F82135242%2F1384108037%2F1500x500']
  20. ]
  21. class ProfileTest(BaseTestCase):
  22. @parameterized.expand(profiles)
  23. def test_data(self, username, fullname, bio):
  24. self.open_nitter(username)
  25. self.assert_exact_text(fullname, Profile.fullname)
  26. self.assert_exact_text(f'@{username}', Profile.username)
  27. if len(bio) > 0:
  28. self.assert_exact_text(bio, Profile.bio)
  29. else:
  30. self.assert_element_absent(Profile.bio)
  31. @parameterized.expand(verified)
  32. def test_verified(self, username):
  33. self.open_nitter(username)
  34. self.assert_element_visible(Profile.verified)
  35. @parameterized.expand(protected)
  36. def test_protected(self, username, fullname, bio):
  37. self.open_nitter(username)
  38. self.assert_element_visible(Profile.protected)
  39. self.assert_exact_text(fullname, Profile.fullname)
  40. self.assert_exact_text(f'@{username}', Profile.username)
  41. if len(bio) > 0:
  42. self.assert_text(bio, Profile.bio)
  43. else:
  44. self.assert_element_absent(Profile.bio)
  45. @parameterized.expand(invalid)
  46. def test_invalid_username(self, username):
  47. self.open_nitter(username)
  48. self.assert_text(f'User "{username}" not found')
  49. def test_suspended(self):
  50. # TODO: detect suspended
  51. self.open_nitter('test')
  52. self.assert_text(f'User "test" not found')
  53. @parameterized.expand(banner_color)
  54. def test_banner_color(self, username, color):
  55. self.open_nitter(username)
  56. banner = self.find_element(Profile.banner + '-color')
  57. self.assertIn(color, banner.value_of_css_property('background-color'))
  58. @parameterized.expand(banner_image)
  59. def test_banner_image(self, username, url):
  60. self.open_nitter(username)
  61. banner = self.find_element(Profile.banner + ' img')
  62. self.assertIn(url, banner.get_attribute('src'))