From 241fe59b74bb6031fa644f3ad55e6ad6a9187510 Mon Sep 17 00:00:00 2001
From: Marcelo Galigniana <marcelogaligniana@gmail.com>
Date: Sun, 22 May 2022 18:15:11 -0300
Subject: [PATCH] Refs #22078 -- Added syndication test for feeds with callable
 objects.

---
 tests/syndication_tests/feeds.py | 8 ++++++++
 tests/syndication_tests/tests.py | 6 ++++++
 tests/syndication_tests/urls.py  | 3 +++
 3 files changed, 17 insertions(+)

diff --git a/tests/syndication_tests/feeds.py b/tests/syndication_tests/feeds.py
index 17d807f302..f8c0a27832 100644
--- a/tests/syndication_tests/feeds.py
+++ b/tests/syndication_tests/feeds.py
@@ -39,6 +39,14 @@ class TestRss2Feed(views.Feed):
     item_copyright = "Copyright (c) 2007, Sally Smith"
 
 
+class TestRss2FeedWithCallableObject(TestRss2Feed):
+    class TimeToLive:
+        def __call__(self):
+            return 700
+
+    ttl = TimeToLive()
+
+
 class TestRss2FeedWithGuidIsPermaLinkTrue(TestRss2Feed):
     def item_guid_is_permalink(self, item):
         return True
diff --git a/tests/syndication_tests/tests.py b/tests/syndication_tests/tests.py
index 464ca76d54..207ffb7bc8 100644
--- a/tests/syndication_tests/tests.py
+++ b/tests/syndication_tests/tests.py
@@ -196,6 +196,12 @@ class SyndicationFeedTest(FeedTestCase):
                 item.getElementsByTagName("guid")[0].attributes.get("isPermaLink")
             )
 
+    def test_rss2_feed_with_callable_object(self):
+        response = self.client.get("/syndication/rss2/with-callable-object/")
+        doc = minidom.parseString(response.content)
+        chan = doc.getElementsByTagName("rss")[0].getElementsByTagName("channel")[0]
+        self.assertChildNodeContent(chan, {"ttl": "700"})
+
     def test_rss2_feed_guid_permalink_false(self):
         """
         Test if the 'isPermaLink' attribute of <guid> element of an item
diff --git a/tests/syndication_tests/urls.py b/tests/syndication_tests/urls.py
index 511f977ebc..7ebcbf0e5b 100644
--- a/tests/syndication_tests/urls.py
+++ b/tests/syndication_tests/urls.py
@@ -4,6 +4,9 @@ from . import feeds
 
 urlpatterns = [
     path("syndication/rss2/", feeds.TestRss2Feed()),
+    path(
+        "syndication/rss2/with-callable-object/", feeds.TestRss2FeedWithCallableObject()
+    ),
     path("syndication/rss2/articles/<int:entry_id>/", feeds.TestGetObjectFeed()),
     path(
         "syndication/rss2/guid_ispermalink_true/",