diff --git a/tests/test_core.py b/tests/test_core.py index b824f86..4c215d4 100644 --- a/tests/test_core.py +++ b/tests/test_core.py @@ -1,12 +1,7 @@ # -*- coding: utf-8 -*- from twython import Twython, TwythonError, TwythonAuthError, TwythonRateLimitError -from .config import ( - test_tweet_object, test_tweet_html, test_tweet_symbols_object, - test_tweet_compat_object, test_tweet_extended_object, - test_tweet_extended_html, test_tweet_identical_urls, test_tweet_reply, - unittest -) +from .config import unittest import responses import requests @@ -303,66 +298,6 @@ class TwythonAPITestCase(unittest.TestCase): """Test encoding UTF-8 works""" self.api.encode('Twython is awesome!') - def test_html_for_tweet(self): - """Test HTML for Tweet returns what we want""" - tweet_text = self.api.html_for_tweet(test_tweet_object) - self.assertEqual(test_tweet_html, tweet_text) - - def test_html_for_tweet_reply(self): - """Test HTML for Tweet links the replied-to username.""" - tweet_text = self.api.html_for_tweet(test_tweet_reply) - self.assertEqual(tweet_text, - u'@philgyford Here’s a test tweet that goes on as much as possible and includes an image. Hi to my fans in testland! https://t.co/tzhyk2QWSr') - - def test_html_for_tweet_expanded_url(self): - """Test using expanded url in HTML for Tweet displays full urls""" - tweet_text = self.api.html_for_tweet(test_tweet_object, - use_expanded_url=True) - # Make sure full url is in HTML - self.assertTrue('http://google.com' in tweet_text) - - def test_html_for_tweet_short_url(self): - """Test using expanded url in HTML for Tweet displays full urls""" - tweet_text = self.api.html_for_tweet(test_tweet_object, False) - # Make sure HTML doesn't contain the display OR expanded url - self.assertTrue('http://google.com' not in tweet_text) - self.assertTrue('google.com' not in tweet_text) - - def test_html_for_tweet_identical_urls(self): - """If the 'url's for different url entities are identical, they should link correctly.""" - tweet_text = self.api.html_for_tweet(test_tweet_identical_urls) - self.assertEqual(tweet_text, - u'Use Cases, Trials and Making 5G a Reality buff.ly/2sEhrgO #5G #innovation via @5GWorldSeries buff.ly/2sEhrgO') - - def test_html_for_tweet_symbols(self): - tweet_text = self.api.html_for_tweet(test_tweet_symbols_object) - # Should only link symbols listed in entities: - self.assertTrue('$AAPL' in tweet_text) - self.assertTrue('$ANOTHER' not in tweet_text) - - def test_html_for_tweet_no_symbols(self): - """Should still work if tweet object has no symbols list""" - tweet = test_tweet_symbols_object - # Save a copy: - symbols = tweet['entities']['symbols'] - del tweet['entities']['symbols'] - tweet_text = self.api.html_for_tweet(tweet) - self.assertTrue('symbols: $AAPL and' in tweet_text) - self.assertTrue('and $ANOTHER and $A.' in tweet_text) - # Put the symbols back: - test_tweet_symbols_object['entities']['symbols'] = symbols - - def test_html_for_tweet_compatmode(self): - tweet_text = self.api.html_for_tweet(test_tweet_compat_object) - # link to compat web status link - self.assertTrue( - u'twitter.com/i/web/status/7…' in tweet_text) - - def test_html_for_tweet_extendedmode(self): - tweet_text = self.api.html_for_tweet(test_tweet_extended_object) - # full tweet rendered with suffix - self.assertEqual(test_tweet_extended_html, tweet_text) - def test_cursor_requires_twython_function(self): """Test that cursor() raises when called without a Twython function""" def init_and_iterate_cursor(*args, **kwargs): @@ -374,3 +309,4 @@ class TwythonAPITestCase(unittest.TestCase): self.assertRaises(TypeError, init_and_iterate_cursor, non_function) self.assertRaises(TwythonError, init_and_iterate_cursor, non_twython_function) + diff --git a/tests/test_html_for_tweet.py b/tests/test_html_for_tweet.py new file mode 100644 index 0000000..b8b5dc4 --- /dev/null +++ b/tests/test_html_for_tweet.py @@ -0,0 +1,74 @@ +# -*- coding: utf-8 -*- +from twython import Twython, TwythonError + +from .config import ( + test_tweet_object, test_tweet_html, test_tweet_symbols_object, + test_tweet_compat_object, test_tweet_extended_object, + test_tweet_extended_html, test_tweet_identical_urls, test_tweet_reply, + unittest +) + + +class TestHtmlForTweetTestCase(unittest.TestCase): + def setUp(self): + self.api = Twython('', '', '', '') + + def test_basic(self): + """Test HTML for Tweet returns what we want""" + tweet_text = self.api.html_for_tweet(test_tweet_object) + self.assertEqual(test_tweet_html, tweet_text) + + def test_reply(self): + """Test HTML for Tweet links the replied-to username.""" + tweet_text = self.api.html_for_tweet(test_tweet_reply) + self.assertEqual(tweet_text, + u'@philgyford Here’s a test tweet that goes on as much as possible and includes an image. Hi to my fans in testland! https://t.co/tzhyk2QWSr') + + def test_expanded_url(self): + """Test using expanded url in HTML for Tweet displays full urls""" + tweet_text = self.api.html_for_tweet(test_tweet_object, + use_expanded_url=True) + # Make sure full url is in HTML + self.assertTrue('http://google.com' in tweet_text) + + def test_short_url(self): + """Test using expanded url in HTML for Tweet displays full urls""" + tweet_text = self.api.html_for_tweet(test_tweet_object, False) + # Make sure HTML doesn't contain the display OR expanded url + self.assertTrue('http://google.com' not in tweet_text) + self.assertTrue('google.com' not in tweet_text) + + def test_identical_urls(self): + """If the 'url's for different url entities are identical, they should link correctly.""" + tweet_text = self.api.html_for_tweet(test_tweet_identical_urls) + self.assertEqual(tweet_text, + u'Use Cases, Trials and Making 5G a Reality buff.ly/2sEhrgO #5G #innovation via @5GWorldSeries buff.ly/2sEhrgO') + + def test_symbols(self): + tweet_text = self.api.html_for_tweet(test_tweet_symbols_object) + # Should only link symbols listed in entities: + self.assertTrue('$AAPL' in tweet_text) + self.assertTrue('$ANOTHER' not in tweet_text) + + def test_no_symbols(self): + """Should still work if tweet object has no symbols list""" + tweet = test_tweet_symbols_object + # Save a copy: + symbols = tweet['entities']['symbols'] + del tweet['entities']['symbols'] + tweet_text = self.api.html_for_tweet(tweet) + self.assertTrue('symbols: $AAPL and' in tweet_text) + self.assertTrue('and $ANOTHER and $A.' in tweet_text) + # Put the symbols back: + test_tweet_symbols_object['entities']['symbols'] = symbols + + def test_compatmode(self): + tweet_text = self.api.html_for_tweet(test_tweet_compat_object) + # link to compat web status link + self.assertTrue( + u'twitter.com/i/web/status/7…' in tweet_text) + + def test_extendedmode(self): + tweet_text = self.api.html_for_tweet(test_tweet_extended_object) + # full tweet rendered with suffix + self.assertEqual(test_tweet_extended_html, tweet_text)