|
|
@@ -1,5 +1,5 @@
|
|
|
import pytest
|
|
|
-from twhatter.parser import TweetList, Tweet
|
|
|
+from twhatter.parser import *
|
|
|
|
|
|
|
|
|
class TestTweetList:
|
|
|
@@ -10,11 +10,11 @@ class TestTweetList:
|
|
|
def test_iter(self, raw_html_user_initial_page):
|
|
|
t_list = TweetList(raw_html_user_initial_page)
|
|
|
for t in t_list:
|
|
|
- assert isinstance(t, Tweet)
|
|
|
+ assert isinstance(t, TweetBase)
|
|
|
|
|
|
|
|
|
class TestTweet:
|
|
|
- @pytest.mark.parametrize("tweet_type", [
|
|
|
+ all_types = [
|
|
|
"plain",
|
|
|
"reaction_tweet",
|
|
|
"with_link",
|
|
|
@@ -22,11 +22,13 @@ class TestTweet:
|
|
|
"hashtags",
|
|
|
"mentions",
|
|
|
"stats",
|
|
|
- ])
|
|
|
- def test_plain_tweet(self, raw_tweet_factory, tweet_collection, tweet_type):
|
|
|
+ ]
|
|
|
+
|
|
|
+ @pytest.mark.parametrize("tweet_type", all_types)
|
|
|
+ def test_tweet(self, raw_tweet_factory, tweet_collection, tweet_type):
|
|
|
tweet_info = tweet_collection[tweet_type]
|
|
|
raw = raw_tweet_factory(tweet_info)
|
|
|
- t = Tweet.extract(raw)
|
|
|
+ t = TweetBase.extract(raw)
|
|
|
assert t
|
|
|
|
|
|
for field, value in tweet_info._asdict().items():
|
|
|
@@ -36,3 +38,15 @@ class TestTweet:
|
|
|
# not tested
|
|
|
if value is not None:
|
|
|
assert getattr(t, field) == value
|
|
|
+
|
|
|
+ @pytest.mark.parametrize("tweet_type,expected_class", [
|
|
|
+ ('plain', TweetTextOnly),
|
|
|
+ ('reaction_tweet', TweetReaction),
|
|
|
+ ('with_link', TweetLink),
|
|
|
+ ('retweet', TweetRetweet)
|
|
|
+ ])
|
|
|
+ def test_tweet_type(self, raw_tweet_factory, tweet_collection, tweet_type, expected_class):
|
|
|
+ tweet_info = tweet_collection[tweet_type]
|
|
|
+ raw = raw_tweet_factory(tweet_info)
|
|
|
+ t = TweetBase.extract(raw)
|
|
|
+ assert isinstance(t, expected_class)
|