test_profile.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  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. ['nim_lang', '24, 26, 36']
  19. ]
  20. banner_image = [
  21. ['mobile_test', 'profile_banners%2F82135242%2F1384108037%2F1500x500']
  22. ]
  23. class ProfileTest(BaseTestCase):
  24. @parameterized.expand(profiles)
  25. def test_data(self, username, fullname, bio, location, website, joinDate, mediaCount):
  26. self.open_nitter(username)
  27. self.assert_exact_text(fullname, Profile.fullname)
  28. self.assert_exact_text(f'@{username}', Profile.username)
  29. tests = [
  30. (bio, Profile.bio),
  31. (location, Profile.location),
  32. (website, Profile.website),
  33. (joinDate, Profile.joinDate),
  34. (mediaCount + " Photos and videos", Profile.mediaCount)
  35. ]
  36. for text, selector in tests:
  37. if len(text) > 0:
  38. self.assert_exact_text(text, selector)
  39. else:
  40. self.assert_element_absent(selector)
  41. @parameterized.expand(verified)
  42. def test_verified(self, username):
  43. self.open_nitter(username)
  44. self.assert_element_visible(Profile.verified)
  45. @parameterized.expand(protected)
  46. def test_protected(self, username, fullname, bio):
  47. self.open_nitter(username)
  48. self.assert_element_visible(Profile.protected)
  49. self.assert_exact_text(fullname, Profile.fullname)
  50. self.assert_exact_text(f'@{username}', Profile.username)
  51. if len(bio) > 0:
  52. self.assert_text(bio, Profile.bio)
  53. else:
  54. self.assert_element_absent(Profile.bio)
  55. @parameterized.expand(invalid)
  56. def test_invalid_username(self, username):
  57. self.open_nitter(username)
  58. self.assert_text(f'User "{username}" not found')
  59. def test_suspended(self):
  60. self.open_nitter('user')
  61. self.assert_text('User "user" has been suspended')
  62. @parameterized.expand(banner_color)
  63. def test_banner_color(self, username, color):
  64. self.open_nitter(username)
  65. banner = self.find_element(Profile.banner + ' a')
  66. self.assertIn(color, banner.value_of_css_property('background-color'))
  67. @parameterized.expand(banner_image)
  68. def test_banner_image(self, username, url):
  69. self.open_nitter(username)
  70. banner = self.find_element(Profile.banner + ' img')
  71. self.assertIn(url, banner.get_attribute('src'))