2017-04-30 22:32:46 -07:00
|
|
|
import redis
|
2010-10-23 13:06:28 -04:00
|
|
|
from utils import json_functions as json
|
2009-07-08 02:05:45 +00:00
|
|
|
from django.test.client import Client
|
2009-07-28 22:51:16 +00:00
|
|
|
from django.test import TestCase
|
2009-08-08 16:52:11 +00:00
|
|
|
from django.core import management
|
2011-09-01 09:11:29 -07:00
|
|
|
from django.core.urlresolvers import reverse
|
2012-11-27 16:22:03 -08:00
|
|
|
from django.conf import settings
|
2010-08-21 13:57:39 -04:00
|
|
|
from apps.rss_feeds.models import Feed, MStory
|
2012-11-27 16:22:03 -08:00
|
|
|
from mongoengine.connection import connect, disconnect
|
2011-10-10 20:46:13 -07:00
|
|
|
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2009-07-28 22:51:16 +00:00
|
|
|
class FeedTest(TestCase):
|
2009-08-08 16:52:11 +00:00
|
|
|
fixtures = ['rss_feeds.json']
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2009-07-08 02:05:45 +00:00
|
|
|
def setUp(self):
|
2012-11-27 16:22:03 -08:00
|
|
|
disconnect()
|
|
|
|
settings.MONGODB = connect('test_newsblur')
|
2017-04-30 22:32:46 -07:00
|
|
|
settings.REDIS_STORY_HASH_POOL = redis.ConnectionPool(host=settings.REDIS_STORY['host'], port=6379, db=10)
|
|
|
|
settings.REDIS_FEED_READ_POOL = redis.ConnectionPool(host=settings.SESSION_REDIS_HOST, port=6379, db=10)
|
|
|
|
|
2017-05-01 11:39:24 -07:00
|
|
|
r = redis.Redis(connection_pool=settings.REDIS_STORY_HASH_POOL)
|
|
|
|
r.delete('RS:1')
|
|
|
|
r.delete('lRS:1')
|
|
|
|
r.delete('RS:1:766')
|
|
|
|
r.delete('zF:766')
|
|
|
|
r.delete('F:766')
|
|
|
|
|
2009-07-08 02:05:45 +00:00
|
|
|
self.client = Client()
|
|
|
|
|
2012-11-27 16:22:03 -08:00
|
|
|
def tearDown(self):
|
|
|
|
settings.MONGODB.drop_database('test_newsblur')
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2009-08-30 00:43:13 +00:00
|
|
|
def test_load_feeds__gawker(self):
|
2009-12-18 20:47:44 +00:00
|
|
|
self.client.login(username='conesus', password='test')
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2009-08-30 00:43:13 +00:00
|
|
|
management.call_command('loaddata', 'gawker1.json', verbosity=0)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2010-07-07 18:40:10 -04:00
|
|
|
feed = Feed.objects.get(feed_link__contains='gawker')
|
2010-08-21 13:57:39 -04:00
|
|
|
stories = MStory.objects(story_feed_id=feed.pk)
|
2010-07-07 18:40:10 -04:00
|
|
|
self.assertEquals(stories.count(), 0)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2011-09-01 09:11:29 -07:00
|
|
|
feed.update(force=True)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2010-08-21 13:57:39 -04:00
|
|
|
stories = MStory.objects(story_feed_id=feed.pk)
|
2010-07-07 18:40:10 -04:00
|
|
|
self.assertEquals(stories.count(), 38)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2010-07-07 18:40:10 -04:00
|
|
|
management.call_command('loaddata', 'gawker2.json', verbosity=0)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2011-09-01 09:11:29 -07:00
|
|
|
feed.update(force=True)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2009-08-30 00:43:13 +00:00
|
|
|
# Test: 1 changed char in content
|
2010-08-21 13:57:39 -04:00
|
|
|
stories = MStory.objects(story_feed_id=feed.pk)
|
2010-07-07 18:40:10 -04:00
|
|
|
self.assertEquals(stories.count(), 38)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2011-09-01 09:11:29 -07:00
|
|
|
url = reverse('load-single-feed', kwargs=dict(feed_id=1))
|
|
|
|
response = self.client.get(url)
|
|
|
|
feed = json.decode(response.content)
|
2012-03-06 16:11:27 -08:00
|
|
|
self.assertEquals(len(feed['stories']), 6)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2009-08-30 00:43:13 +00:00
|
|
|
def test_load_feeds__gothamist(self):
|
2009-12-18 20:47:44 +00:00
|
|
|
self.client.login(username='conesus', password='test')
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2009-12-18 20:47:44 +00:00
|
|
|
management.call_command('loaddata', 'gothamist_aug_2009_1.json', verbosity=0)
|
2010-07-07 18:40:10 -04:00
|
|
|
feed = Feed.objects.get(feed_link__contains='gothamist')
|
2010-08-21 13:57:39 -04:00
|
|
|
stories = MStory.objects(story_feed_id=feed.pk)
|
2010-07-07 18:40:10 -04:00
|
|
|
self.assertEquals(stories.count(), 0)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2012-03-26 11:04:05 -07:00
|
|
|
feed.update(force=True)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2010-08-21 13:57:39 -04:00
|
|
|
stories = MStory.objects(story_feed_id=feed.pk)
|
2010-07-07 18:40:10 -04:00
|
|
|
self.assertEquals(stories.count(), 42)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2011-09-01 09:11:29 -07:00
|
|
|
url = reverse('load-single-feed', kwargs=dict(feed_id=4))
|
|
|
|
response = self.client.get(url)
|
2010-07-07 18:40:10 -04:00
|
|
|
content = json.decode(response.content)
|
2012-03-06 16:11:27 -08:00
|
|
|
self.assertEquals(len(content['stories']), 6)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2009-12-18 20:47:44 +00:00
|
|
|
management.call_command('loaddata', 'gothamist_aug_2009_2.json', verbosity=0)
|
2012-03-26 11:04:05 -07:00
|
|
|
feed.update(force=True)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2010-08-21 13:57:39 -04:00
|
|
|
stories = MStory.objects(story_feed_id=feed.pk)
|
2010-07-07 18:40:10 -04:00
|
|
|
self.assertEquals(stories.count(), 42)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2011-09-01 09:11:29 -07:00
|
|
|
url = reverse('load-single-feed', kwargs=dict(feed_id=4))
|
|
|
|
response = self.client.get(url)
|
2010-04-09 18:30:25 -04:00
|
|
|
# print [c['story_title'] for c in json.decode(response.content)]
|
2010-07-07 18:40:10 -04:00
|
|
|
content = json.decode(response.content)
|
2009-08-30 00:43:13 +00:00
|
|
|
# Test: 1 changed char in title
|
2012-03-06 16:11:27 -08:00
|
|
|
self.assertEquals(len(content['stories']), 6)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2009-09-07 01:56:52 +00:00
|
|
|
def test_load_feeds__slashdot(self):
|
2009-12-18 20:47:44 +00:00
|
|
|
self.client.login(username='conesus', password='test')
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2012-03-06 16:11:27 -08:00
|
|
|
old_story_guid = "tag:google.com,2005:reader/item/4528442633bc7b2b"
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2009-09-07 01:56:52 +00:00
|
|
|
management.call_command('loaddata', 'slashdot1.json', verbosity=0)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2010-07-07 18:40:10 -04:00
|
|
|
feed = Feed.objects.get(feed_link__contains='slashdot')
|
2010-08-21 13:57:39 -04:00
|
|
|
stories = MStory.objects(story_feed_id=feed.pk)
|
2010-07-07 18:40:10 -04:00
|
|
|
self.assertEquals(stories.count(), 0)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2010-04-09 18:30:25 -04:00
|
|
|
management.call_command('refresh_feed', force=1, feed=5, single_threaded=True, daemonize=False)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2010-08-21 13:57:39 -04:00
|
|
|
stories = MStory.objects(story_feed_id=feed.pk)
|
2010-07-07 18:40:10 -04:00
|
|
|
self.assertEquals(stories.count(), 38)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2011-10-10 20:46:13 -07:00
|
|
|
response = self.client.get(reverse('load-feeds'))
|
|
|
|
content = json.decode(response.content)
|
|
|
|
self.assertEquals(content['feeds']['5']['nt'], 38)
|
2012-03-06 16:11:27 -08:00
|
|
|
|
2011-10-10 20:46:13 -07:00
|
|
|
self.client.post(reverse('mark-story-as-read'), {'story_id': old_story_guid, 'feed_id': 5})
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2011-10-10 20:46:13 -07:00
|
|
|
response = self.client.get(reverse('refresh-feeds'))
|
|
|
|
content = json.decode(response.content)
|
|
|
|
self.assertEquals(content['feeds']['5']['nt'], 37)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2009-09-07 01:56:52 +00:00
|
|
|
management.call_command('loaddata', 'slashdot2.json', verbosity=0)
|
2010-04-09 18:30:25 -04:00
|
|
|
management.call_command('refresh_feed', force=1, feed=5, single_threaded=True, daemonize=False)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2010-08-21 13:57:39 -04:00
|
|
|
stories = MStory.objects(story_feed_id=feed.pk)
|
2010-07-07 18:40:10 -04:00
|
|
|
self.assertEquals(stories.count(), 38)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2011-09-01 09:11:29 -07:00
|
|
|
url = reverse('load-single-feed', kwargs=dict(feed_id=5))
|
|
|
|
response = self.client.get(url)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2009-12-18 20:47:44 +00:00
|
|
|
# pprint([c['story_title'] for c in json.decode(response.content)])
|
2010-04-09 18:30:25 -04:00
|
|
|
feed = json.decode(response.content)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2009-09-07 01:56:52 +00:00
|
|
|
# Test: 1 changed char in title
|
2012-03-06 16:11:27 -08:00
|
|
|
self.assertEquals(len(feed['stories']), 6)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2011-10-10 20:46:13 -07:00
|
|
|
response = self.client.get(reverse('refresh-feeds'))
|
|
|
|
content = json.decode(response.content)
|
|
|
|
self.assertEquals(content['feeds']['5']['nt'], 37)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2012-03-06 16:56:26 -08:00
|
|
|
def test_load_feeds__motherjones(self):
|
|
|
|
self.client.login(username='conesus', password='test')
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2012-03-06 16:56:26 -08:00
|
|
|
management.call_command('loaddata', 'motherjones1.json', verbosity=0)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2012-03-06 16:56:26 -08:00
|
|
|
feed = Feed.objects.get(feed_link__contains='motherjones')
|
|
|
|
stories = MStory.objects(story_feed_id=feed.pk)
|
|
|
|
self.assertEquals(stories.count(), 0)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2012-03-06 16:56:26 -08:00
|
|
|
management.call_command('refresh_feed', force=1, feed=feed.pk, single_threaded=True, daemonize=False)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2012-03-06 16:56:26 -08:00
|
|
|
stories = MStory.objects(story_feed_id=feed.pk)
|
|
|
|
self.assertEquals(stories.count(), 10)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2012-03-06 16:56:26 -08:00
|
|
|
response = self.client.get(reverse('load-feeds'))
|
|
|
|
content = json.decode(response.content)
|
|
|
|
self.assertEquals(content['feeds'][str(feed.pk)]['nt'], 10)
|
|
|
|
|
|
|
|
self.client.post(reverse('mark-story-as-read'), {'story_id': stories[0].story_guid, 'feed_id': feed.pk})
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2012-03-06 16:56:26 -08:00
|
|
|
response = self.client.get(reverse('refresh-feeds'))
|
|
|
|
content = json.decode(response.content)
|
|
|
|
self.assertEquals(content['feeds'][str(feed.pk)]['nt'], 9)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2012-03-06 16:56:26 -08:00
|
|
|
management.call_command('loaddata', 'motherjones2.json', verbosity=0)
|
|
|
|
management.call_command('refresh_feed', force=1, feed=feed.pk, single_threaded=True, daemonize=False)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2012-03-06 16:56:26 -08:00
|
|
|
stories = MStory.objects(story_feed_id=feed.pk)
|
|
|
|
self.assertEquals(stories.count(), 10)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2012-03-06 16:56:26 -08:00
|
|
|
url = reverse('load-single-feed', kwargs=dict(feed_id=feed.pk))
|
|
|
|
response = self.client.get(url)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2012-03-06 16:56:26 -08:00
|
|
|
# pprint([c['story_title'] for c in json.decode(response.content)])
|
|
|
|
feed = json.decode(response.content)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2012-03-06 16:56:26 -08:00
|
|
|
# Test: 1 changed char in title
|
|
|
|
self.assertEquals(len(feed['stories']), 6)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2012-03-06 16:56:26 -08:00
|
|
|
response = self.client.get(reverse('refresh-feeds'))
|
|
|
|
content = json.decode(response.content)
|
|
|
|
self.assertEquals(content['feeds'][str(feed['feed_id'])]['nt'], 9)
|
2012-03-06 16:11:27 -08:00
|
|
|
|
2017-04-30 18:47:10 -07:00
|
|
|
def test_load_feeds__google(self):
|
2017-04-30 22:32:46 -07:00
|
|
|
# Freezegun the date to 2017-04-30
|
|
|
|
|
2017-04-30 18:47:10 -07:00
|
|
|
self.client.login(username='conesus', password='test')
|
2017-04-30 22:32:46 -07:00
|
|
|
old_story_guid = "blog.google:443/topics/inside-google/google-earths-incredible-3d-imagery-explained/"
|
2017-04-30 18:47:10 -07:00
|
|
|
|
2017-05-01 09:27:31 -07:00
|
|
|
management.call_command('loaddata', 'google1.json', verbosity=1)
|
|
|
|
print Feed.objects.all()
|
2017-04-30 18:47:10 -07:00
|
|
|
feed = Feed.objects.get(pk=766)
|
|
|
|
print " Testing test_load_feeds__google: %s" % feed
|
|
|
|
stories = MStory.objects(story_feed_id=feed.pk)
|
|
|
|
self.assertEquals(stories.count(), 0)
|
|
|
|
|
|
|
|
management.call_command('refresh_feed', force=False, feed=766, single_threaded=True, daemonize=False)
|
|
|
|
|
|
|
|
stories = MStory.objects(story_feed_id=feed.pk)
|
|
|
|
self.assertEquals(stories.count(), 20)
|
|
|
|
|
2017-04-30 22:32:46 -07:00
|
|
|
response = self.client.get(reverse('load-feeds')+"?update_counts=true")
|
2017-04-30 18:47:10 -07:00
|
|
|
content = json.decode(response.content)
|
2017-05-01 11:39:24 -07:00
|
|
|
self.assertEquals(content['feeds']['766']['nt'], 20)
|
2017-04-30 18:47:10 -07:00
|
|
|
|
2017-04-30 22:32:46 -07:00
|
|
|
old_story = MStory.objects.get(story_feed_id=feed.pk, story_guid__contains=old_story_guid)
|
|
|
|
self.client.post(reverse('mark-story-hashes-as-read'), {'story_hash': old_story.story_hash})
|
2017-04-30 18:47:10 -07:00
|
|
|
|
|
|
|
response = self.client.get(reverse('refresh-feeds'))
|
|
|
|
content = json.decode(response.content)
|
2017-05-01 11:39:24 -07:00
|
|
|
self.assertEquals(content['feeds']['766']['nt'], 19)
|
2017-04-30 18:47:10 -07:00
|
|
|
|
2017-05-01 09:27:31 -07:00
|
|
|
management.call_command('loaddata', 'google2.json', verbosity=1)
|
2017-04-30 18:47:10 -07:00
|
|
|
management.call_command('refresh_feed', force=False, feed=766, single_threaded=True, daemonize=False)
|
|
|
|
|
|
|
|
stories = MStory.objects(story_feed_id=feed.pk)
|
|
|
|
self.assertEquals(stories.count(), 20)
|
|
|
|
|
|
|
|
url = reverse('load-single-feed', kwargs=dict(feed_id=766))
|
|
|
|
response = self.client.get(url)
|
|
|
|
|
|
|
|
# pprint([c['story_title'] for c in json.decode(response.content)])
|
|
|
|
feed = json.decode(response.content)
|
|
|
|
|
|
|
|
# Test: 1 changed char in title
|
|
|
|
self.assertEquals(len(feed['stories']), 6)
|
|
|
|
|
|
|
|
response = self.client.get(reverse('refresh-feeds'))
|
|
|
|
content = json.decode(response.content)
|
2017-05-01 11:39:24 -07:00
|
|
|
self.assertEquals(content['feeds']['766']['nt'], 19)
|
2017-04-30 18:47:10 -07:00
|
|
|
|
2010-07-07 18:40:10 -04:00
|
|
|
def test_load_feeds__brokelyn__invalid_xml(self):
|
|
|
|
self.client.login(username='conesus', password='test')
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2010-07-07 18:40:10 -04:00
|
|
|
management.call_command('loaddata', 'brokelyn.json', verbosity=0)
|
|
|
|
management.call_command('refresh_feed', force=1, feed=6, single_threaded=True, daemonize=False)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2011-09-01 09:11:29 -07:00
|
|
|
url = reverse('load-single-feed', kwargs=dict(feed_id=6))
|
|
|
|
response = self.client.get(url)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2010-07-07 18:40:10 -04:00
|
|
|
# pprint([c['story_title'] for c in json.decode(response.content)])
|
|
|
|
feed = json.decode(response.content)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2010-07-07 18:40:10 -04:00
|
|
|
# Test: 1 changed char in title
|
2012-03-06 16:11:27 -08:00
|
|
|
self.assertEquals(len(feed['stories']), 6)
|
2015-11-28 08:53:34 +01:00
|
|
|
|
2011-09-05 22:06:24 -07:00
|
|
|
def test_all_feeds(self):
|
2015-11-28 08:53:34 +01:00
|
|
|
pass
|