summaryrefslogtreecommitdiff
path: root/tests/regressiontests/syndication/tests.py
diff options
context:
space:
mode:
authorJacob Kaplan-Moss <jacob@jacobian.org>2008-08-11 22:22:26 +0000
committerJacob Kaplan-Moss <jacob@jacobian.org>2008-08-11 22:22:26 +0000
commit942e5246accda3d953b4634a010402ef5786c2e0 (patch)
treec63609299b6dfdcd8a80141ebfe26004d3cc1b5f /tests/regressiontests/syndication/tests.py
parent899ca54fe2a289bee4dfbed9f5ef6fc9024def72 (diff)
Added a number of callbacks to SyndicationFeed for adding custom attributes and elements to feeds. Refs #6547.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@8311 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/syndication/tests.py')
-rw-r--r--tests/regressiontests/syndication/tests.py48
1 files changed, 45 insertions, 3 deletions
diff --git a/tests/regressiontests/syndication/tests.py b/tests/regressiontests/syndication/tests.py
index 142cf47d03..0938f69e5b 100644
--- a/tests/regressiontests/syndication/tests.py
+++ b/tests/regressiontests/syndication/tests.py
@@ -4,22 +4,64 @@ from xml.dom import minidom
from django.test import TestCase
from django.test.client import Client
from models import Entry
+try:
+ set
+except NameError:
+ from sets import Set as set
class SyndicationFeedTest(TestCase):
fixtures = ['feeddata.json']
+ def assertChildNodes(self, elem, expected):
+ actual = set([n.nodeName for n in elem.childNodes])
+ expected = set(expected)
+ self.assertEqual(actual, expected)
+
def test_rss_feed(self):
response = self.client.get('/syndication/feeds/rss/')
doc = minidom.parseString(response.content)
self.assertEqual(len(doc.getElementsByTagName('channel')), 1)
- self.assertEqual(len(doc.getElementsByTagName('item')), Entry.objects.count())
+
+ chan = doc.getElementsByTagName('channel')[0]
+ self.assertChildNodes(chan, ['title', 'link', 'description', 'language', 'lastBuildDate', 'item'])
+
+ items = chan.getElementsByTagName('item')
+ self.assertEqual(len(items), Entry.objects.count())
+ for item in items:
+ self.assertChildNodes(item, ['title', 'link', 'description', 'guid'])
def test_atom_feed(self):
response = self.client.get('/syndication/feeds/atom/')
doc = minidom.parseString(response.content)
- self.assertEqual(len(doc.getElementsByTagName('feed')), 1)
- self.assertEqual(len(doc.getElementsByTagName('entry')), Entry.objects.count())
+
+ feed = doc.firstChild
+ self.assertEqual(feed.nodeName, 'feed')
+ self.assertChildNodes(feed, ['title', 'link', 'id', 'updated', 'entry'])
+
+ entries = feed.getElementsByTagName('entry')
+ self.assertEqual(len(entries), Entry.objects.count())
+ for entry in entries:
+ self.assertChildNodes(entry, ['title', 'link', 'id', 'summary'])
+ summary = entry.getElementsByTagName('summary')[0]
+ self.assertEqual(summary.getAttribute('type'), 'html')
+ def test_custom_feed_generator(self):
+ response = self.client.get('/syndication/feeds/custom/')
+ doc = minidom.parseString(response.content)
+
+ feed = doc.firstChild
+ self.assertEqual(feed.nodeName, 'feed')
+ self.assertEqual(feed.getAttribute('django'), 'rocks')
+ self.assertChildNodes(feed, ['title', 'link', 'id', 'updated', 'entry', 'spam'])
+
+ entries = feed.getElementsByTagName('entry')
+ self.assertEqual(len(entries), Entry.objects.count())
+ for entry in entries:
+ self.assertEqual(entry.getAttribute('bacon'), 'yum')
+ self.assertChildNodes(entry, ['title', 'link', 'id', 'summary', 'ministry'])
+ summary = entry.getElementsByTagName('summary')[0]
+ self.assertEqual(summary.getAttribute('type'), 'html')
+
def test_complex_base_url(self):
"""
Tests that that the base url for a complex feed doesn't raise a 500