test_timeline.py 2.7 KB

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