test_tweet.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. from base import BaseTestCase, Tweet, get_timeline_tweet
  2. from parameterized import parameterized
  3. # image = tweet + 'div.attachments.media-body > div > div > a > div > img'
  4. # self.assert_true(self.get_image_url(image).split('/')[0] == 'http')
  5. timeline_tweets = [
  6. [1, 'Test account', 'mobile_test', '10 Aug 2016',
  7. '.'],
  8. [3, 'Test account', 'mobile_test', '3 Mar 2016',
  9. 'LIVE on #Periscope pscp.tv/w/aadiTzF6dkVOTXZSbX…'],
  10. [6, 'mobile test 2', 'mobile_test_2', '1 Oct 2014',
  11. 'Testing. One two three four. Test.']
  12. ]
  13. status_tweets = [
  14. [20, 'jack 🌍🌏🌎', 'jack', '21 Mar 2006',
  15. 'just setting up my twttr'],
  16. [134849778302464000, 'The Twoffice', 'TheTwoffice', '10 Nov 2011',
  17. 'test'],
  18. [105685475985080322, 'The Twoffice', 'TheTwoffice', '22 Aug 2011',
  19. 'regular tweet'],
  20. [572593440719912960, 'Test account', 'mobile_test', '2 Mar 2015',
  21. 'testing test']
  22. ]
  23. invalid_tweets = [
  24. ['mobile_test/status/120938109238'],
  25. ['TheTwoffice/status/8931928312']
  26. ]
  27. multiline_tweets = [
  28. [1142904127594401797, 'hot_pengu',
  29. """
  30. New tileset, dust effects, background. The 'sea' has per-line parallax and wavey fx which we think is really cool even tho u didn't notice 🐶. code:
  31. @exelotl
  32. #pixelart #gbadev #gba #indiedev"""],
  33. [400897186990284800, 'mobile_test_3',
  34. """
  35. KEEP
  36. CALM
  37. AND
  38. CLICHÉ
  39. ON"""]
  40. ]
  41. link_tweets = [
  42. ['nim_lang/status/1110499584852353024', [
  43. 'nim-lang.org/araq/ownedrefs.…',
  44. 'news.ycombinator.com/item?id…',
  45. 'old.reddit.com/r/programming…'
  46. ]],
  47. ['nim_lang/status/1125887775151140864', [
  48. 'en.wikipedia.org/wiki/Nim_(p…)'
  49. ]],
  50. ['hiankun_taioan/status/1086916335215341570', [
  51. '(hackernoon.com/interview-wit…)'
  52. ]]
  53. ]
  54. emoji_tweets = [
  55. ['Tesla/status/1134850442511257600', '🌈❤️🧡💛💚💙💜']
  56. ]
  57. class TestTweet(BaseTestCase):
  58. @parameterized.expand(timeline_tweets)
  59. def test_timeline(self, index, fullname, username, date, text):
  60. self.open_nitter(username)
  61. tweet = get_timeline_tweet(index)
  62. self.assert_exact_text(fullname, tweet.fullname)
  63. self.assert_exact_text('@' + username, tweet.username)
  64. self.assert_exact_text(date, tweet.date)
  65. self.assert_text(text, tweet.text)
  66. @parameterized.expand(status_tweets)
  67. def test_status(self, tid, fullname, username, date, text):
  68. tweet = Tweet()
  69. self.open_nitter(f'{username}/status/{tid}')
  70. self.assert_exact_text(fullname, tweet.fullname)
  71. self.assert_exact_text('@' + username, tweet.username)
  72. self.assert_exact_text(date, tweet.date)
  73. self.assert_text(text, tweet.text)
  74. @parameterized.expand(multiline_tweets)
  75. def test_multiline_formatting(self, tid, username, text):
  76. self.open_nitter(f'{username}/status/{tid}')
  77. self.assert_text(text.strip('\n'), '.main-tweet')
  78. @parameterized.expand(emoji_tweets)
  79. def test_emojis(self, tweet, text):
  80. self.open_nitter(tweet)
  81. self.assert_text(text, '.main-tweet')
  82. @parameterized.expand(link_tweets)
  83. def test_links(self, tweet, links):
  84. self.open_nitter(tweet)
  85. for link in links:
  86. self.assert_text(link, '.main-tweet')
  87. @parameterized.expand(invalid_tweets)
  88. def test_invalid_id(self, tweet):
  89. self.open_nitter(tweet)
  90. self.assert_text('Tweet not found', '.error-panel')