Loading tests/regressiontests/syndication/feeds.py 0 → 100644 +23 −0 Original line number Diff line number Diff line from django.core.exceptions import ObjectDoesNotExist from django.contrib.syndication import feeds from django.utils.feedgenerator import Atom1Feed class ComplexFeed(feeds.Feed): def get_object(self, bits): if len(bits) != 1: raise ObjectDoesNotExist return None class TestRssFeed(feeds.Feed): link = "/blog/" title = 'My blog' def items(self): from models import Entry return Entry.objects.all() def item_link(self, item): return "/blog/%s/" % item.pk class TestAtomFeed(TestRssFeed): feed_type = Atom1Feed tests/regressiontests/syndication/fixtures/feeddata.json 0 → 100644 +26 −0 Original line number Diff line number Diff line [ { "model": "syndication.entry", "pk": 1, "fields": { "title": "My first entry", "date": "2008-01-01 12:30:00" } }, { "model": "syndication.entry", "pk": 2, "fields": { "title": "My second entry", "date": "2008-01-02 12:30:00" } }, { "model": "syndication.entry", "pk": 3, "fields": { "title": "My third entry", "date": "2008-01-02 13:30:00" } } ] No newline at end of file tests/regressiontests/syndication/models.py +8 −0 Original line number Diff line number Diff line from django.db import models class Entry(models.Model): title = models.CharField(max_length=200) date = models.DateTimeField() def __unicode__(self): return self.title No newline at end of file tests/regressiontests/syndication/tests.py +19 −2 Original line number Diff line number Diff line # -*- coding: utf-8 -*- from xml.dom import minidom from django.test import TestCase from django.test.client import Client from models import Entry class SyndicationFeedTest(TestCase): fixtures = ['feeddata.json'] 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()) 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()) def test_complex_base_url(self): """ Tests that that the base url for a complex feed doesn't raise a 500 exception. """ c = Client() response = c.get('/syndication/feeds/complex/') response = self.client.get('/syndication/feeds/complex/') self.assertEquals(response.status_code, 404) tests/regressiontests/syndication/urls.py +8 −14 Original line number Diff line number Diff line from feeds import TestRssFeed, TestAtomFeed, ComplexFeed from django.conf.urls.defaults import patterns from django.core.exceptions import ObjectDoesNotExist from django.contrib.syndication import feeds class ComplexFeed(feeds.Feed): def get_object(self, bits): if len(bits) != 1: raise ObjectDoesNotExist return None feed_dict = { 'complex': ComplexFeed, 'rss': TestRssFeed, 'atom': TestAtomFeed, } urlpatterns = patterns('', (r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', { 'feed_dict': dict( complex = ComplexFeed, )}), (r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feed_dict}) ) django/contrib/syndication/feeds.py +1 −1 File changed.Contains only whitespace changes. Show changes Loading
tests/regressiontests/syndication/feeds.py 0 → 100644 +23 −0 Original line number Diff line number Diff line from django.core.exceptions import ObjectDoesNotExist from django.contrib.syndication import feeds from django.utils.feedgenerator import Atom1Feed class ComplexFeed(feeds.Feed): def get_object(self, bits): if len(bits) != 1: raise ObjectDoesNotExist return None class TestRssFeed(feeds.Feed): link = "/blog/" title = 'My blog' def items(self): from models import Entry return Entry.objects.all() def item_link(self, item): return "/blog/%s/" % item.pk class TestAtomFeed(TestRssFeed): feed_type = Atom1Feed
tests/regressiontests/syndication/fixtures/feeddata.json 0 → 100644 +26 −0 Original line number Diff line number Diff line [ { "model": "syndication.entry", "pk": 1, "fields": { "title": "My first entry", "date": "2008-01-01 12:30:00" } }, { "model": "syndication.entry", "pk": 2, "fields": { "title": "My second entry", "date": "2008-01-02 12:30:00" } }, { "model": "syndication.entry", "pk": 3, "fields": { "title": "My third entry", "date": "2008-01-02 13:30:00" } } ] No newline at end of file
tests/regressiontests/syndication/models.py +8 −0 Original line number Diff line number Diff line from django.db import models class Entry(models.Model): title = models.CharField(max_length=200) date = models.DateTimeField() def __unicode__(self): return self.title No newline at end of file
tests/regressiontests/syndication/tests.py +19 −2 Original line number Diff line number Diff line # -*- coding: utf-8 -*- from xml.dom import minidom from django.test import TestCase from django.test.client import Client from models import Entry class SyndicationFeedTest(TestCase): fixtures = ['feeddata.json'] 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()) 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()) def test_complex_base_url(self): """ Tests that that the base url for a complex feed doesn't raise a 500 exception. """ c = Client() response = c.get('/syndication/feeds/complex/') response = self.client.get('/syndication/feeds/complex/') self.assertEquals(response.status_code, 404)
tests/regressiontests/syndication/urls.py +8 −14 Original line number Diff line number Diff line from feeds import TestRssFeed, TestAtomFeed, ComplexFeed from django.conf.urls.defaults import patterns from django.core.exceptions import ObjectDoesNotExist from django.contrib.syndication import feeds class ComplexFeed(feeds.Feed): def get_object(self, bits): if len(bits) != 1: raise ObjectDoesNotExist return None feed_dict = { 'complex': ComplexFeed, 'rss': TestRssFeed, 'atom': TestAtomFeed, } urlpatterns = patterns('', (r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', { 'feed_dict': dict( complex = ComplexFeed, )}), (r'^feeds/(?P<url>.*)/$', 'django.contrib.syndication.views.feed', {'feed_dict': feed_dict}) )
django/contrib/syndication/feeds.py +1 −1 File changed.Contains only whitespace changes. Show changes