test_profile.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. 'San Francisco, CA', 'example.com/foobar', 'Joined October 2009', '100'],
  7. ['mobile_test_2', 'mobile test 2', '', '', '', 'Joined January 2011', '13']
  8. ]
  9. verified = [['jack'], ['elonmusk']]
  10. protected = [
  11. ['mobile_test_7', 'mobile test 7', ''],
  12. ['Poop', 'Randy', 'Social media fanatic.']
  13. ]
  14. invalid = [['thisprofiledoesntexist'], ['%']]
  15. banner_color = [
  16. ['TheTwoffice', '29, 161, 242'],
  17. ['profiletest', '80, 176, 58']
  18. ]
  19. banner_image = [
  20. ['mobile_test', 'profile_banners%2F82135242%2F1384108037%2F1500x500']
  21. ]
  22. class ProfileTest(BaseTestCase):
  23. @parameterized.expand(profiles)
  24. def test_data(self, username, fullname, bio, location, website, joinDate, mediaCount):
  25. self.open_nitter(username)
  26. self.assert_exact_text(fullname, Profile.fullname)
  27. self.assert_exact_text(f'@{username}', Profile.username)
  28. tests = [
  29. (bio, Profile.bio),
  30. (location, Profile.location),
  31. (website, Profile.website),
  32. (joinDate, Profile.joinDate),
  33. (mediaCount + " Photos and videos", Profile.mediaCount)
  34. ]
  35. for text, selector in tests:
  36. if len(text) > 0:
  37. self.assert_exact_text(text, selector)
  38. else:
  39. self.assert_element_absent(selector)
  40. @parameterized.expand(verified)
  41. def test_verified(self, username):
  42. self.open_nitter(username)
  43. self.assert_element_visible(Profile.verified)
  44. @parameterized.expand(protected)
  45. def test_protected(self, username, fullname, bio):
  46. self.open_nitter(username)
  47. self.assert_element_visible(Profile.protected)
  48. self.assert_exact_text(fullname, Profile.fullname)
  49. self.assert_exact_text(f'@{username}', Profile.username)
  50. if len(bio) > 0:
  51. self.assert_text(bio, Profile.bio)
  52. else:
  53. self.assert_element_absent(Profile.bio)
  54. @parameterized.expand(invalid)
  55. def test_invalid_username(self, username):
  56. self.open_nitter(username)
  57. self.assert_text(f'User "{username}" not found')
  58. def test_suspended(self):
  59. self.open_nitter('test')
  60. self.assert_text(f'User "test" has been suspended')
  61. @parameterized.expand(banner_color)
  62. def test_banner_color(self, username, color):
  63. self.open_nitter(username)
  64. banner = self.find_element(Profile.banner + '-color')
  65. self.assertIn(color, banner.value_of_css_property('background-color'))
  66. @parameterized.expand(banner_image)
  67. def test_banner_image(self, username, url):
  68. self.open_nitter(username)
  69. banner = self.find_element(Profile.banner + ' img')
  70. self.assertIn(url, banner.get_attribute('src'))