test_profile.py 2.5 KB

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