summaryrefslogtreecommitdiff
path: root/tests_feedgenerator
diff options
context:
space:
mode:
authorAlex Brown <alex@alexanderdbrown.com>2014-01-07 18:36:41 +0000
committerAlex Brown <alex@alexanderdbrown.com>2014-01-07 18:37:33 +0000
commit51ee1f5cef10dad0c8f33bd5b67085ff4857faa3 (patch)
tree15da1bd37f5fc3516e3a514ba10ca2f68bf1a38f /tests_feedgenerator
parentecfb8f7221828339ef36c65ab76e1ddc143871c3 (diff)
downloadfeedgenerator-51ee1f5cef10dad0c8f33bd5b67085ff4857faa3.tar.gz
Add test for Atom feed generation.
Also add an example atom file.
Diffstat (limited to 'tests_feedgenerator')
-rw-r--r--tests_feedgenerator/test_feedgenerator.py46
1 files changed, 40 insertions, 6 deletions
diff --git a/tests_feedgenerator/test_feedgenerator.py b/tests_feedgenerator/test_feedgenerator.py
index 7e73337..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"?>
+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)