diff options
author | Bastian Venthur <venthur@debian.org> | 2021-09-27 21:04:49 +0200 |
---|---|---|
committer | Justin Mayer <entroP@gmail.com> | 2021-09-28 12:53:48 +0200 |
commit | bfe94997048d72d289835c9df236387e9a48fd5f (patch) | |
tree | d1fac367c129255fbc784f9fc1d8410954ecb9d4 | |
parent | f438a4b6eab6714d1738c16e1c19a027768d3b16 (diff) | |
download | feedgenerator-bfe94997048d72d289835c9df236387e9a48fd5f.tar.gz |
Fix double subtitles if description & subtitle are provided
Tests all four possible combinations against the expected result.
-rw-r--r-- | feedgenerator/django/utils/feedgenerator.py | 4 | ||||
-rw-r--r-- | tests_feedgenerator/test_feedgenerator.py | 49 |
2 files changed, 51 insertions, 2 deletions
diff --git a/feedgenerator/django/utils/feedgenerator.py b/feedgenerator/django/utils/feedgenerator.py index b5d858c..6631788 100644 --- a/feedgenerator/django/utils/feedgenerator.py +++ b/feedgenerator/django/utils/feedgenerator.py @@ -325,10 +325,10 @@ class Atom1Feed(SyndicationFeed): handler.endElement("author") # try to use description or subtitle if provided, subtitle has # precedence above description - if self.feed['description'] is not None: - handler.addQuickElement("subtitle", self.feed['description']) if self.feed['subtitle'] is not None: handler.addQuickElement("subtitle", self.feed['subtitle']) + elif self.feed['description'] is not None: + handler.addQuickElement("subtitle", self.feed['description']) for cat in self.feed['categories']: handler.addQuickElement("category", "", {"term": cat}) if self.feed['feed_copyright'] is not None: diff --git a/tests_feedgenerator/test_feedgenerator.py b/tests_feedgenerator/test_feedgenerator.py index 6ec28aa..7370954 100644 --- a/tests_feedgenerator/test_feedgenerator.py +++ b/tests_feedgenerator/test_feedgenerator.py @@ -96,3 +96,52 @@ class TestFeedGenerator(unittest.TestCase): expected_result = build_expected_atom_result(feed, EXPECTED_RESULT_ATOM, None) self.assertEqual(type(result), type(expected_result)) self.assertEqual(result, expected_result) + + def test_subtitle(self): + """Test regression for https://github.com/getpelican/feedgenerator/issues/30. + + """ + # case 1: neither should be in + FIXT_FEED = dict( + title="title", + link="https://example.com", + description=None, + subtitle=None, + ) + feed = feedgenerator.Atom1Feed(**FIXT_FEED) + result = feed.writeString(ENCODING) + assert "<desciption></description>" not in result + + # case 2: only description should be in + FIXT_FEED = dict( + title="title", + link="https://example.com", + description="description", + subtitle=None, + ) + feed = feedgenerator.Atom1Feed(**FIXT_FEED) + result = feed.writeString(ENCODING) + assert "<subtitle>description</subtitle>" in result + + # case 3: only subtitle should be in + FIXT_FEED = dict( + title="title", + link="https://example.com", + description=None, + subtitle="subtitle", + ) + feed = feedgenerator.Atom1Feed(**FIXT_FEED) + result = feed.writeString(ENCODING) + assert "<subtitle>subtitle</subtitle>" in result + + # case 4: both are in, only subtitle should be in + FIXT_FEED = dict( + title="title", + link="https://example.com", + description="description", + subtitle="subtitle", + ) + feed = feedgenerator.Atom1Feed(**FIXT_FEED) + result = feed.writeString(ENCODING) + assert "<subtitle>subtitle</subtitle>" in result + assert "<subtitle>description</subtitle>" not in result |