summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Mayer <entroP@gmail.com>2014-01-08 09:38:48 -0800
committerJustin Mayer <entroP@gmail.com>2014-01-08 09:38:48 -0800
commit2b6154ada7ab5775ca7014198dbd47dd0eff2df8 (patch)
tree15da1bd37f5fc3516e3a514ba10ca2f68bf1a38f
parent7df76dc0a18e67ce601af3a2e00bb3c8c821ad46 (diff)
parent51ee1f5cef10dad0c8f33bd5b67085ff4857faa3 (diff)
downloadfeedgenerator-2b6154ada7ab5775ca7014198dbd47dd0eff2df8.tar.gz
Merge pull request #1 from SoftlySplinter/pelican#1089
Remove Atom elements from RSS feed. Add Atom tests.
-rw-r--r--feedgenerator/django/utils/feedgenerator.py9
-rw-r--r--test.atom2
-rw-r--r--test.rss4
-rw-r--r--tests_feedgenerator/test_feedgenerator.py48
4 files changed, 49 insertions, 14 deletions
diff --git a/feedgenerator/django/utils/feedgenerator.py b/feedgenerator/django/utils/feedgenerator.py
index e8e4d87..60e1527 100644
--- a/feedgenerator/django/utils/feedgenerator.py
+++ b/feedgenerator/django/utils/feedgenerator.py
@@ -220,8 +220,7 @@ class RssFeed(SyndicationFeed):
handler.endElement("rss")
def rss_attributes(self):
- return {'xmlns:atom': 'http://www.w3.org/2005/Atom',
- 'version': self._version}
+ return {'version': self._version}
def write_items(self, handler):
for item in self.items:
@@ -230,12 +229,12 @@ class RssFeed(SyndicationFeed):
handler.endElement("item")
def add_root_elements(self, handler):
+ # Required Elements as per the specification
handler.addQuickElement("title", self.feed['title'])
handler.addQuickElement("link", self.feed['link'])
handler.addQuickElement("description", self.feed['description'])
- if self.feed['feed_url'] is not None:
- handler.addQuickElement("atom:link", None,
- {"rel": "self", "href": self.feed['feed_url']})
+
+ # Optional Channel Elements
if self.feed['language'] is not None:
handler.addQuickElement("language", self.feed['language'])
for cat in self.feed['categories']:
diff --git a/test.atom b/test.atom
new file mode 100644
index 0000000..4ff3bc1
--- /dev/null
+++ b/test.atom
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8"?>
+<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Poynter E-Media Tidbits</title><link href="http://www.poynter.org/column.asp?id=31" rel="alternate"></link><id>http://www.poynter.org/column.asp?id=31</id><updated>2014-01-07T18:13:47Z</updated><entry><title>Hello</title><link href="http://www.holovaty.com/test/" rel="alternate"></link><id>tag:www.holovaty.com:/test//</id><summary type="html">Testing.</summary></entry></feed>
diff --git a/test.rss b/test.rss
index 97a310b..c7ad144 100644
--- a/test.rss
+++ b/test.rss
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
-<rss xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title>Poynter E-Media Tidbits</title><link>http://www.poynter.org/column.asp?id=31</link><description>A group Weblog by the sharpest minds in online media/journalism/publishing.
+<rss version="2.0"><channel><title>Poynter E-Media Tidbits</title><link>http://www.poynter.org/column.asp?id=31</link><description>A group Weblog by the sharpest minds in online media/journalism/publishing.
Umlauts: äöüßÄÖÜ
Chinese: 老师是四十四,是不是?
Finnish: Mustan kissan paksut posket. (ah, no special chars) Kärpänen sanoi kärpäselle: tuu kattoon kattoon ku kaveri tapettiin tapettiin.
- </description><language>en</language><lastBuildDate>Sun, 26 Aug 2012 07:44:28 -0000</lastBuildDate><item><title>Hello</title><link>http://www.holovaty.com/test/</link><description>Testing.</description></item></channel></rss> \ No newline at end of file
+ </description><language>en</language><lastBuildDate>Sun, 26 Aug 2012 07:44:28 -0000</lastBuildDate><item><title>Hello</title><link>http://www.holovaty.com/test/</link><description>Testing.</description></item></channel></rss>
diff --git a/tests_feedgenerator/test_feedgenerator.py b/tests_feedgenerator/test_feedgenerator.py
index bce5dd4..66441a5 100644
--- a/tests_feedgenerator/test_feedgenerator.py
+++ b/tests_feedgenerator/test_feedgenerator.py
@@ -28,17 +28,19 @@ FIXT_ITEM = dict(
)
-EXPECTED_RESULT = """<?xml version="1.0" encoding="utf-8"?>
-<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Poynter E-Media Tidbits</title><link>http://www.poynter.org/column.asp?id=31</link><description>A group Weblog by the sharpest minds in online media/journalism/publishing.
+EXPECTED_RESULT_RSS = """<?xml version="1.0" encoding="utf-8"?>
+<rss version="2.0"><channel><title>Poynter E-Media Tidbits</title><link>http://www.poynter.org/column.asp?id=31</link><description>A group Weblog by the sharpest minds in online media/journalism/publishing.
Umlauts: äöüßÄÖÜ
Chinese: 老师是四十四,是不是?
Finnish: Mustan kissan paksut posket. (ah, no special chars) Kärpänen sanoi kärpäselle: tuu kattoon kattoon ku kaveri tapettiin tapettiin.
</description><language>en</language><lastBuildDate>%DATE%</lastBuildDate><item><title>Hello</title><link>http://www.holovaty.com/test/</link><description>Testing.</description></item></channel></rss>"""
+EXPECTED_RESULT_ATOM = """<?xml version="1.0" encoding="utf-8"?>
+<feed xml:lang="en" xmlns="http://www.w3.org/2005/Atom"><title>Poynter E-Media Tidbits</title><link href="http://www.poynter.org/column.asp?id=31" rel="alternate"></link><id>http://www.poynter.org/column.asp?id=31</id><updated>%DATE%</updated><entry><title>Hello</title><link href="http://www.holovaty.com/test/" rel="alternate"></link><id>tag:www.holovaty.com:/test//</id><summary type="html">Testing.</summary></entry></feed>"""
ENCODING = 'utf-8'
-def build_expected_result(feed, expected_result, encoding):
+def build_expected_rss_result(feed, expected_result, encoding):
# Result's date is of course different from the date in the fixture.
# So make them equal!
d = feedgenerator.rfc2822_date(feed.latest_post_date())
@@ -48,6 +50,15 @@ def build_expected_result(feed, expected_result, encoding):
else:
return s
+def build_expected_atom_result(feed, expected_result, encoding):
+ # Result's date is of course different from the date in the fixture.
+ # So make them equal!
+ d = feedgenerator.rfc3339_date(feed.latest_post_date())
+ s = expected_result.replace('%DATE%', d)
+ if encoding:
+ return s.encode(encoding)
+ else:
+ return s
class TestFeedGenerator(unittest.TestCase):
@@ -60,9 +71,9 @@ class TestFeedGenerator(unittest.TestCase):
self.assertEqual(type(v), ty)
for k, v in FIXT_ITEM.items():
self.assertEqual(type(v), ty)
- self.assertEqual(type(EXPECTED_RESULT), ty)
+ self.assertEqual(type(EXPECTED_RESULT_RSS), ty)
- def test_001_string_results(self):
+ def test_001_string_results_rss(self):
#import ipdb; ipdb.set_trace()
feed = feedgenerator.Rss201rev2Feed(**FIXT_FEED)
feed.add_item(**FIXT_ITEM)
@@ -70,11 +81,11 @@ class TestFeedGenerator(unittest.TestCase):
if six.PY3:
# On Python 3, result of feedgenerator is a unicode string!
# So do not encode our expected_result.
- expected_result = build_expected_result(feed, EXPECTED_RESULT, None)
+ expected_result = build_expected_rss_result(feed, EXPECTED_RESULT_RSS, None)
else:
# On Python 2, result of feedgenerator is a str string!
# Expected_result must therefore encoded likewise.
- expected_result = build_expected_result(feed, EXPECTED_RESULT, ENCODING)
+ expected_result = build_expected_rss_result(feed, EXPECTED_RESULT_RSS, ENCODING)
# The different result types of Python 2 (str=bytes) and Python 3
# (str=text=unicode) stems from a different implementation of StringIO.
# As I understand it, getvalue() in Python 2 returns the type you
@@ -92,3 +103,26 @@ class TestFeedGenerator(unittest.TestCase):
# Compare the files, they must be equal!
# XXX Argh -- No, the lastBuildDate will differ.
# But this is allowed.
+
+ def test_003_string_results_atom(self):
+ #import ipdb; ipdb.set_trace()
+ feed = feedgenerator.Atom1Feed(**FIXT_FEED)
+ feed.add_item(**FIXT_ITEM)
+ result = feed.writeString(ENCODING)
+ if six.PY3:
+ # On Python 3, result of feedgenerator is a unicode string!
+ # So do not encode our expected_result.
+ expected_result = build_expected_atom_result(feed, EXPECTED_RESULT_ATOM, None)
+ else:
+ # On Python 2, result of feedgenerator is a str string!
+ # Expected_result must therefore encoded likewise.
+ expected_result = build_expected_atom_result(feed, EXPECTED_RESULT_ATOM, ENCODING)
+ # The different result types of Python 2 (str=bytes) and Python 3
+ # (str=text=unicode) stems from a different implementation of StringIO.
+ # As I understand it, getvalue() in Python 2 returns the type you
+ # originally wrote into the buffer. In Python 3 getvalue() always
+ # returns a str (=text=unicode).
+ # See other test: test_stringio.py
+ #print type(result), type(expected_result)
+ self.assertEqual(type(result), type(expected_result))
+ self.assertEqual(result, expected_result)