forked from zedeus/nitter
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
128 additions
and
108 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,10 +1,9 @@ | ||
from base import BaseTestCase | ||
from parameterized import parameterized | ||
|
||
|
||
class TestSearch(BaseTestCase): | ||
def test_username_search(self): | ||
self.search_username('mobile_test') | ||
self.assert_text('@mobile_test') | ||
|
||
self.search_username('mobile_test_2') | ||
self.assert_text('@mobile_test_2') | ||
@parameterized.expand([['mobile_test'], ['mobile_test_2']]) | ||
def test_username_search(self, username): | ||
self.search_username(username) | ||
self.assert_text(f'@{username}') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,103 +1,112 @@ | ||
from base import BaseTestCase, Tweet, get_timeline_tweet | ||
from parameterized import parameterized | ||
|
||
# image = tweet + 'div.attachments.media-body > div > div > a > div > img' | ||
# self.assert_true(self.get_image_url(image).split('/')[0] == 'http') | ||
class TweetInfo(): | ||
def __init__(self, index, fullname, username, date, text): | ||
self.index = index | ||
self.fullname = fullname | ||
self.username = username | ||
self.date = date | ||
self.text = text | ||
|
||
timeline_tweets = [ | ||
TweetInfo(1, 'Test account', 'mobile_test', '10 Aug 2016', | ||
'.'), | ||
[1, 'Test account', 'mobile_test', '10 Aug 2016', | ||
'.'], | ||
|
||
TweetInfo(3, 'Test account', 'mobile_test', '3 Mar 2016', | ||
'LIVE on #Periscope pscp.tv/w/aadiTzF6dkVOTXZSbX…'), | ||
[3, 'Test account', 'mobile_test', '3 Mar 2016', | ||
'LIVE on #Periscope pscp.tv/w/aadiTzF6dkVOTXZSbX…'], | ||
|
||
TweetInfo(6, 'mobile test 2', 'mobile_test_2', '1 Oct 2014', | ||
'Testing. One two three four. Test.') | ||
[6, 'mobile test 2', 'mobile_test_2', '1 Oct 2014', | ||
'Testing. One two three four. Test.'] | ||
] | ||
|
||
status_tweets = [ | ||
TweetInfo(20, 'jack 🌍🌏🌎', 'jack', '21 Mar 2006', | ||
'just setting up my twttr'), | ||
[20, 'jack 🌍🌏🌎', 'jack', '21 Mar 2006', | ||
'just setting up my twttr'], | ||
|
||
TweetInfo(134849778302464000, 'The Twoffice', 'TheTwoffice', '10 Nov 2011', | ||
'test'), | ||
[134849778302464000, 'The Twoffice', 'TheTwoffice', '10 Nov 2011', | ||
'test'], | ||
|
||
TweetInfo(105685475985080322, 'The Twoffice', 'TheTwoffice', '22 Aug 2011', | ||
'regular tweet'), | ||
[105685475985080322, 'The Twoffice', 'TheTwoffice', '22 Aug 2011', | ||
'regular tweet'], | ||
|
||
TweetInfo(572593440719912960, 'Test account', 'mobile_test', '2 Mar 2015', | ||
'testing test') | ||
[572593440719912960, 'Test account', 'mobile_test', '2 Mar 2015', | ||
'testing test'] | ||
] | ||
|
||
invalid_tweets = [ | ||
'mobile_test/status/120938109238', | ||
'TheTwoffice/status/8931928312' | ||
['mobile_test/status/120938109238'], | ||
['TheTwoffice/status/8931928312'] | ||
] | ||
|
||
multiline_tweets = [ | ||
TweetInfo(1142904127594401797, '', 'hot_pengu', '', | ||
""" | ||
[1142904127594401797, 'hot_pengu', | ||
""" | ||
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: | ||
@exelotl | ||
#pixelart #gbadev #gba #indiedev"""), | ||
#pixelart #gbadev #gba #indiedev"""], | ||
|
||
TweetInfo(400897186990284800, '', 'mobile_test_3', '', | ||
""" | ||
[400897186990284800, 'mobile_test_3', | ||
""" | ||
♔ | ||
KEEP | ||
CALM | ||
AND | ||
CLICHÉ | ||
ON""") | ||
ON"""] | ||
] | ||
|
||
link_tweets = [ | ||
['nim_lang/status/1110499584852353024', [ | ||
'nim-lang.org/araq/ownedrefs.…', | ||
'news.ycombinator.com/item?id…', | ||
'old.reddit.com/r/programming…' | ||
]], | ||
|
||
['nim_lang/status/1125887775151140864', [ | ||
'en.wikipedia.org/wiki/Nim_(p…)' | ||
]], | ||
|
||
['hiankun_taioan/status/1086916335215341570', [ | ||
'(hackernoon.com/interview-wit…)' | ||
]] | ||
] | ||
|
||
emoji_tweets = [ | ||
['Tesla/status/1134850442511257600', '🌈❤️🧡💛💚💙💜'] | ||
] | ||
|
||
class TestTweet(BaseTestCase): | ||
def test_timeline(self): | ||
for info in timeline_tweets: | ||
self.open_nitter(f'{info.username}') | ||
tweet = get_timeline_tweet(info.index) | ||
self.assert_exact_text(info.fullname, tweet.fullname) | ||
self.assert_exact_text('@' + info.username, tweet.username) | ||
self.assert_exact_text(info.date, tweet.date) | ||
self.assert_text(info.text, tweet.text) | ||
|
||
def test_status(self): | ||
@parameterized.expand(timeline_tweets) | ||
def test_timeline(self, index, fullname, username, date, text): | ||
self.open_nitter(username) | ||
tweet = get_timeline_tweet(index) | ||
self.assert_exact_text(fullname, tweet.fullname) | ||
self.assert_exact_text('@' + username, tweet.username) | ||
self.assert_exact_text(date, tweet.date) | ||
self.assert_text(text, tweet.text) | ||
|
||
@parameterized.expand(status_tweets) | ||
def test_status(self, tid, fullname, username, date, text): | ||
tweet = Tweet() | ||
for info in status_tweets: | ||
self.open_nitter(f'{info.username}/status/{info.index}') | ||
self.assert_exact_text(info.fullname, tweet.fullname) | ||
self.assert_exact_text('@' + info.username, tweet.username) | ||
self.assert_exact_text(info.date, tweet.date) | ||
self.assert_text(info.text, tweet.text) | ||
|
||
def test_multiline_formatting(self): | ||
for info in multiline_tweets: | ||
self.open_nitter(f'{info.username}/status/{info.index}') | ||
self.assert_text(info.text.strip('\n'), '.main-tweet') | ||
|
||
def test_emojis(self): | ||
self.open_nitter('Tesla/status/1134850442511257600') | ||
self.assert_text('🌈❤️🧡💛💚💙💜', '.main-tweet') | ||
|
||
def test_links(self): | ||
self.open_nitter('nim_lang/status/1110499584852353024') | ||
self.assert_text('nim-lang.org/araq/ownedrefs.…', '.main-tweet') | ||
self.assert_text('news.ycombinator.com/item?id…', '.main-tweet') | ||
self.assert_text('old.reddit.com/r/programming…', '.main-tweet') | ||
|
||
self.open_nitter('nim_lang/status/1125887775151140864') | ||
self.assert_text('en.wikipedia.org/wiki/Nim_(p…)', '.main-tweet') | ||
|
||
self.open_nitter('hiankun_taioan/status/1086916335215341570') | ||
self.assert_text('(hackernoon.com/interview-wit…)', '.main-tweet') | ||
|
||
def test_invalid_id(self): | ||
for tweet in invalid_tweets: | ||
self.open_nitter(tweet) | ||
self.assert_text('Tweet not found', '.error-panel') | ||
self.open_nitter(f'{username}/status/{tid}') | ||
self.assert_exact_text(fullname, tweet.fullname) | ||
self.assert_exact_text('@' + username, tweet.username) | ||
self.assert_exact_text(date, tweet.date) | ||
self.assert_text(text, tweet.text) | ||
|
||
@parameterized.expand(multiline_tweets) | ||
def test_multiline_formatting(self, tid, username, text): | ||
self.open_nitter(f'{username}/status/{tid}') | ||
self.assert_text(text.strip('\n'), '.main-tweet') | ||
|
||
@parameterized.expand(emoji_tweets) | ||
def test_emojis(self, tweet, text): | ||
self.open_nitter(tweet) | ||
self.assert_text(text, '.main-tweet') | ||
|
||
@parameterized.expand(link_tweets) | ||
def test_links(self, tweet, links): | ||
self.open_nitter(tweet) | ||
for link in links: | ||
self.assert_text(link, '.main-tweet') | ||
|
||
@parameterized.expand(invalid_tweets) | ||
def test_invalid_id(self, tweet): | ||
self.open_nitter(tweet) | ||
self.assert_text('Tweet not found', '.error-panel') |