ソースを参照

added test for tumblr.py getBlogInfo method

mk200789 10 年 前
コミット
05adf0d8bf

+ 14 - 10
hackathon_starter/hackathon/scripts/tumblr.py

@@ -1,39 +1,41 @@
 import requests
 import simplejson as json
 import time 
-import collections
 import urllib
 import re
 from bs4 import BeautifulSoup
-#from textblob.sentiments import NaiveBayesAnalyzer
-#from textblob import TextBlob
+import urlparse
+import oauth2
 
-###starbucks how they feel?
-#google tumblr hackathon ideas
-#sentian analysis
 blog_uri		= "http://api.tumblr.com/v2/blog/"
 user_uri		= "api.tumblr.com/v2/user/"
 consumer_key    = "KrSbAc9cYLmIgVAn1D21FjRR97QWsutNMxkPDFBxo8CMWtMk4M"
 consumer_secret = "lKWMtL2Lj8zr5pY51PVqT8ugeoG0DjrdgoFewM0QTSyJ12jP8d"
-oauth_token		= "b2osMdhLljOo5aVBjd47kU7gm08NSTqZnZa1b6gC8MmpZX8h0H"
-oauth_secret	= "jHsrI4qM5h4CbUre90SZRAG6snguY22tB1NdujgAZwFh8VD1B1"
+
+#https://www.tumblr.com/oauth/authorize?oauth_token=R9HvkeqKgPAXjor9V92Zg5BvxMm3kwx0kaGnawVHIU5h6dmOL0
 
 def getUserInfo():
+	''' Return user's information. '''
 	return "getUserInfo()"
 
 def getBlogInfo(user):
+	''' Return blogger's blog information.  '''
+
 	blog_info = blog_uri + user +".tumblr.com/info?api_key="+consumer_key
 	req = requests.get(blog_info)
 	jsonlist = json.loads(req.content)
+	print jsonlist
 	
 	meta = jsonlist['meta']
 	response = jsonlist['response']
 	blog = response['blog']
 	blog['updated'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(blog['updated']))
 
-	return meta, response, blog
+	return blog
 
 def getTaggedInfo(tag):
+	''' Return tags related to blog with certain tag. '''
+
 	tagged_uri = "http://api.tumblr.com/v2/tagged?tag="+tag+"&api_key="+consumer_key+"&limit=20"
 	req = requests.get(tagged_uri)
 	jsonlist = json.loads(req.content)
@@ -55,6 +57,8 @@ def getTaggedInfo(tag):
 	return tags
 
 def getTaggedBlog(tag):
+	''' Return the tagged blogs's captions or post.'''
+	
 	tagged_uri = "http://api.tumblr.com/v2/tagged?tag="+tag+"&api_key="+consumer_key+"&limit=2"
 	req = requests.get(tagged_uri)
 	jsonlist = json.loads(req.content)
@@ -82,4 +86,4 @@ def getTaggedBlog(tag):
 					text = soup.get_text()					
 					tagtext.append(text)
 	
-	return tagtext
+	return tagtext

+ 34 - 0
hackathon_starter/hackathon/unittests/testtumblr.py

@@ -0,0 +1,34 @@
+import unittest
+from mock import Mock, patch, MagicMock
+from hackathon.scripts.tumblr import getBlogInfo
+import time
+
+class TumblrTests(unittest.TestCase):
+	def setUp(self):
+		self.blog_uri 			= 'http://api.tumblr.com/v2/blog/'
+		self.consumer_key 		= 'KrSbAc9cYLmIgVAn1D21FjRR97QWsutNMxkPDFBxo8CMWtMk4M'
+		self.consumer_secret 	= 'lKWMtL2Lj8zr5pY51PVqT8ugeoG0DjrdgoFewM0QTSyJ12jP8d'
+		self.user				= 'twitterthecomic'
+
+	def testGetBlogInfo(self):
+		'''Test for tumblr.py getBlogInfo method '''
+		consumer_key = self.consumer_key
+		consumer_secret = self.consumer_secret
+		user = self.user
+
+		# Construct url for blog info
+		self.blog_info = self.blog_uri + user + ".tumblr.com/info?api_key="+ consumer_key
+
+		with patch('hackathon.scripts.tumblr.getBlogInfo') as mock_getBlogInfo:
+			# Mock the return value of this method
+			mock_getBlogInfo.return_value = {'meta': {'status': 200, 'msg': 'OK'}, 
+			'response': {'blog': {'ask_anon': False, 'submission_page_title': 'Submit A Tweet', 
+			'updated': 1413846741, 'description': 'Comics based on the greatest tweets of our generation. \nOrganized by <a href="https://twitter.com/VectorBelly">@VectorBelly</a>.', 
+			'title': 'Twitter: The Comic', 'url': 'http://twitterthecomic.tumblr.com/', 'ask_page_title': 'Submit A Tweet', 
+			'share_likes': False, 'posts': 146, 'is_nsfw': False, 'ask': False, 'name': 'twitterthecomic'}}}
+			jsonlist = mock_getBlogInfo.return_value
+			self.meta = jsonlist['meta']
+			self.response = jsonlist['response']
+			self.blog = self.response['blog']
+			self.blog['blog'] = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(self.blog['updated']))
+			self.assertEqual(getBlogInfo(user),self.blog)

+ 4 - 1
hackathon_starter/hackathon/views.py

@@ -94,8 +94,11 @@ def github(request):
     return render(request, 'hackathon/github.html', { 'data': allData })
 
 def tumblr(request):
-    meta, response, blog = getBlogInfo('twitterthecomic')
+    #get blogger twitterthecomic's blog information
+    blog = getBlogInfo('twitterthecomic')
+    #get tags that was tagged along starbucks
     tagged_blog = getTaggedInfo("starbucks")
+    #get blog information tagged with starbucks
     blogontag = getTaggedBlog("starbucks")
     context = {'title': "What's up Starbucks?", 'blogData': blog, 'blogTag': tagged_blog, 'blogontag': blogontag}
     return render(request, 'hackathon/tumblr.html', context)