test_timeline.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. from base import BaseTestCase, Timeline
  2. from parameterized import parameterized
  3. normal = [['jack'], ['elonmusk']]
  4. after = [['jack', '1681686036294803456'],
  5. ['elonmusk', '1681686036294803456']]
  6. no_more = [['mobile_test_8?cursor=1000']]
  7. empty = [['emptyuser'], ['mobile_test_10']]
  8. protected = [['mobile_test_7'], ['Empty_user']]
  9. photo_rail = [['mobile_test', [
  10. 'Bo0nDsYIYAIjqVn', 'BoQbwJAIUAA0QCY', 'BoQbRQxIIAA3FWD', 'Bn8Qh8iIIAABXrG',
  11. 'Bn8QIG3IYAA0IGT', 'Bn8O3QeIUAAONai', 'Bn8NGViIAAATNG4', 'BkKoRLNCAAAYfDf',
  12. 'BkKndxoCQAE1vFt'
  13. ]]]
  14. class TweetTest(BaseTestCase):
  15. @parameterized.expand(normal)
  16. def test_timeline(self, username):
  17. self.open_nitter(username)
  18. self.assert_element_present(Timeline.older)
  19. self.assert_element_absent(Timeline.newest)
  20. self.assert_element_absent(Timeline.end)
  21. self.assert_element_absent(Timeline.none)
  22. @parameterized.expand(after)
  23. def test_after(self, username, cursor):
  24. self.open_nitter(f'{username}?cursor={cursor}')
  25. self.assert_element_present(Timeline.newest)
  26. self.assert_element_present(Timeline.older)
  27. self.assert_element_absent(Timeline.end)
  28. self.assert_element_absent(Timeline.none)
  29. @parameterized.expand(no_more)
  30. def test_no_more(self, username):
  31. self.open_nitter(username)
  32. self.assert_text('No more items', Timeline.end)
  33. self.assert_element_present(Timeline.newest)
  34. self.assert_element_absent(Timeline.older)
  35. @parameterized.expand(empty)
  36. def test_empty(self, username):
  37. self.open_nitter(username)
  38. self.assert_text('No items found', Timeline.none)
  39. self.assert_element_absent(Timeline.newest)
  40. self.assert_element_absent(Timeline.older)
  41. self.assert_element_absent(Timeline.end)
  42. @parameterized.expand(protected)
  43. def test_protected(self, username):
  44. self.open_nitter(username)
  45. self.assert_text('This account\'s tweets are protected.', Timeline.protected)
  46. self.assert_element_absent(Timeline.newest)
  47. self.assert_element_absent(Timeline.older)
  48. self.assert_element_absent(Timeline.end)
  49. @parameterized.expand(photo_rail)
  50. def test_photo_rail(self, username, images):
  51. self.open_nitter(username)
  52. self.assert_element_visible(Timeline.photo_rail)
  53. for i, url in enumerate(images):
  54. img = self.get_attribute(Timeline.photo_rail + f' a:nth-child({i + 1}) img', 'src')
  55. self.assertIn(url, img)