diff options
| author | Alex Brown <alex@alexanderdbrown.com> | 2014-01-07 18:36:41 +0000 |
|---|---|---|
| committer | Alex Brown <alex@alexanderdbrown.com> | 2014-01-07 18:37:33 +0000 |
| commit | 51ee1f5cef10dad0c8f33bd5b67085ff4857faa3 (patch) | |
| tree | 15da1bd37f5fc3516e3a514ba10ca2f68bf1a38f | |
| parent | ecfb8f7221828339ef36c65ab76e1ddc143871c3 (diff) | |
| download | feedgenerator-51ee1f5cef10dad0c8f33bd5b67085ff4857faa3.tar.gz | |
Add test for Atom feed generation.
Also add an example atom file.
| -rw-r--r-- | test.atom | 2 | ||||
| -rw-r--r-- | tests_feedgenerator/test_feedgenerator.py | 46 |
2 files changed, 42 insertions, 6 deletions
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/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) |
