NewsBlur/apps/rss_feeds/tests.py
Samuel Clay c508c58224 Merge branch 'django1.11' into django2.0
* django1.11: (102 commits)
  Beginning fix of rss_feeds unit tests.
  Fixing unit test for profile app and signup.
  Remove highlights count when it reaches zero.
  Android v10.1b1.
  Stubbing in profile tests.
  Adding nginx.local.conf
  Adding original text and original story to API docs.
  #1282 Adding feed to root folder
  #1319 In app and external browser options
  Adding a smarter wakeup for real-time to handle cases where a laptop is re-opened but real-time is not immediately reestablished.
  #1348 (scroll indicators theme)
  #1344 (search loses focus)
  #1335 Auto theme option for OS level dark mode
  Fixing signup flow.
  #1347 Show pager with stories after using the intel trainer and refreshing
  #1272 Load HTML in comments
  New icon for Infrequent Site Stories.
  Allowing selection in private notes.
  Autoresizing private notes field.
  For #1035: Adding private notes to saved stories.
  ...
2020-08-10 17:53:48 -04:00

247 lines
10 KiB
Python

import redis
from utils import json_functions as json
from django.test.client import Client
from django.test import TestCase
from django.core import management
from django.urls import reverse
from django.conf import settings
from apps.rss_feeds.models import Feed, MStory
from mongoengine.connection import connect, disconnect
class FeedTest(TestCase):
fixtures = ['rss_feeds.json']
def setUp(self):
disconnect()
settings.MONGODB = connect('test_newsblur')
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.REDIS_SESSIONS['host'], port=6379, db=10)
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')
self.client = Client()
def tearDown(self):
settings.MONGODB.drop_database('test_newsblur')
def test_load_feeds__gawker(self):
self.client.login(username='conesus', password='test')
management.call_command('loaddata', 'gawker1.json', verbosity=0, commit=False, skip_checks=False)
feed = Feed.objects.get(pk=10)
stories = MStory.objects(story_feed_id=feed.pk)
self.assertEqual(stories.count(), 0)
feed.update(force=True)
stories = MStory.objects(story_feed_id=feed.pk)
self.assertEqual(stories.count(), 38)
management.call_command('loaddata', 'gawker2.json', verbosity=0, commit=False, skip_checks=False)
feed.update(force=True)
# Test: 1 changed char in content
stories = MStory.objects(story_feed_id=feed.pk)
self.assertEqual(stories.count(), 38)
url = reverse('load-single-feed', kwargs=dict(feed_id=10))
response = self.client.get(url)
feed = json.decode(response.content)
self.assertEqual(len(feed['stories']), 6)
def test_load_feeds__gothamist(self):
self.client.login(username='conesus', password='test')
management.call_command('loaddata', 'gothamist_aug_2009_1.json', verbosity=0, commit=False, skip_checks=False)
feed = Feed.objects.get(feed_link__contains='gothamist')
stories = MStory.objects(story_feed_id=feed.pk)
self.assertEqual(stories.count(), 0)
feed.update(force=True)
stories = MStory.objects(story_feed_id=feed.pk)
self.assertEqual(stories.count(), 42)
url = reverse('load-single-feed', kwargs=dict(feed_id=4))
response = self.client.get(url)
content = json.decode(response.content)
self.assertEqual(len(content['stories']), 6)
management.call_command('loaddata', 'gothamist_aug_2009_2.json', verbosity=0, commit=False, skip_checks=False)
feed.update(force=True)
stories = MStory.objects(story_feed_id=feed.pk)
self.assertEqual(stories.count(), 42)
url = reverse('load-single-feed', kwargs=dict(feed_id=4))
response = self.client.get(url)
# print [c['story_title'] for c in json.decode(response.content)]
content = json.decode(response.content)
# Test: 1 changed char in title
self.assertEqual(len(content['stories']), 6)
def test_load_feeds__slashdot(self):
self.client.login(username='conesus', password='test')
old_story_guid = "tag:google.com,2005:reader/item/4528442633bc7b2b"
management.call_command('loaddata', 'slashdot1.json', verbosity=0, commit=False, skip_checks=False)
feed = Feed.objects.get(feed_link__contains='slashdot')
stories = MStory.objects(story_feed_id=feed.pk)
self.assertEqual(stories.count(), 0)
management.call_command('refresh_feed', force=1, feed=5, single_threaded=True, daemonize=False, skip_checks=False)
stories = MStory.objects(story_feed_id=feed.pk)
self.assertEqual(stories.count(), 38)
response = self.client.get(reverse('load-feeds'))
content = json.decode(response.content)
self.assertEqual(content['feeds']['5']['nt'], 38)
self.client.post(reverse('mark-story-as-read'), {'story_id': old_story_guid, 'feed_id': 5})
response = self.client.get(reverse('refresh-feeds'))
content = json.decode(response.content)
self.assertEqual(content['feeds']['5']['nt'], 37)
management.call_command('loaddata', 'slashdot2.json', verbosity=0, commit=False, skip_checks=False)
management.call_command('refresh_feed', force=1, feed=5, single_threaded=True, daemonize=False, skip_checks=False)
stories = MStory.objects(story_feed_id=feed.pk)
self.assertEqual(stories.count(), 38)
url = reverse('load-single-feed', kwargs=dict(feed_id=5))
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.assertEqual(len(feed['stories']), 6)
response = self.client.get(reverse('refresh-feeds'))
content = json.decode(response.content)
self.assertEqual(content['feeds']['5']['nt'], 37)
def test_load_feeds__motherjones(self):
self.client.login(username='conesus', password='test')
management.call_command('loaddata', 'motherjones1.json', verbosity=0, commit=False, skip_checks=False)
feed = Feed.objects.get(feed_link__contains='motherjones')
stories = MStory.objects(story_feed_id=feed.pk)
self.assertEqual(stories.count(), 0)
management.call_command('refresh_feed', force=1, feed=feed.pk, single_threaded=True, daemonize=False, skip_checks=False)
stories = MStory.objects(story_feed_id=feed.pk)
self.assertEqual(stories.count(), 10)
response = self.client.get(reverse('load-feeds'))
content = json.decode(response.content)
self.assertEqual(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})
response = self.client.get(reverse('refresh-feeds'))
content = json.decode(response.content)
self.assertEqual(content['feeds'][str(feed.pk)]['nt'], 9)
management.call_command('loaddata', 'motherjones2.json', verbosity=0, commit=False, skip_checks=False)
management.call_command('refresh_feed', force=1, feed=feed.pk, single_threaded=True, daemonize=False, skip_checks=False)
stories = MStory.objects(story_feed_id=feed.pk)
self.assertEqual(stories.count(), 10)
url = reverse('load-single-feed', kwargs=dict(feed_id=feed.pk))
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.assertEqual(len(feed['stories']), 6)
response = self.client.get(reverse('refresh-feeds'))
content = json.decode(response.content)
self.assertEqual(content['feeds'][str(feed['feed_id'])]['nt'], 9)
def test_load_feeds__google(self):
# Freezegun the date to 2017-04-30
self.client.login(username='conesus', password='test')
old_story_guid = "blog.google:443/topics/inside-google/google-earths-incredible-3d-imagery-explained/"
management.call_command('loaddata', 'google1.json', verbosity=1, skip_checks=False)
print((Feed.objects.all()))
feed = Feed.objects.get(pk=766)
print((" Testing test_load_feeds__google: %s" % feed))
stories = MStory.objects(story_feed_id=feed.pk)
self.assertEqual(stories.count(), 0)
management.call_command('refresh_feed', force=False, feed=766, single_threaded=True, daemonize=False, skip_checks=False)
stories = MStory.objects(story_feed_id=feed.pk)
self.assertEqual(stories.count(), 20)
response = self.client.get(reverse('load-feeds')+"?update_counts=true")
content = json.decode(response.content)
self.assertEqual(content['feeds']['766']['nt'], 20)
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})
response = self.client.get(reverse('refresh-feeds'))
content = json.decode(response.content)
self.assertEqual(content['feeds']['766']['nt'], 19)
management.call_command('loaddata', 'google2.json', verbosity=1, skip_checks=False)
management.call_command('refresh_feed', force=False, feed=766, single_threaded=True, daemonize=False, skip_checks=False)
stories = MStory.objects(story_feed_id=feed.pk)
self.assertEqual(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.assertEqual(len(feed['stories']), 6)
response = self.client.get(reverse('refresh-feeds'))
content = json.decode(response.content)
self.assertEqual(content['feeds']['766']['nt'], 19)
def test_load_feeds__brokelyn__invalid_xml(self):
BROKELYN_FEED_ID = 16
self.client.login(username='conesus', password='test')
management.call_command('loaddata', 'brokelyn.json', verbosity=0, commit=False)
self.assertEquals(Feed.objects.get(pk=BROKELYN_FEED_ID).pk, BROKELYN_FEED_ID)
management.call_command('refresh_feed', force=1, feed=BROKELYN_FEED_ID, single_threaded=True, daemonize=False)
management.call_command('loaddata', 'brokelyn.json', verbosity=0, commit=False, skip_checks=False)
management.call_command('refresh_feed', force=1, feed=6, single_threaded=True, daemonize=False, skip_checks=False)
url = reverse('load-single-feed', kwargs=dict(feed_id=BROKELYN_FEED_ID))
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.assertEqual(len(feed['stories']), 6)
def test_all_feeds(self):
pass