Refs #25916 -- Added tests for a callable lastmod on Sitemaps.
This commit is contained in:
parent
94beb679a6
commit
f345c9fb3e
|
@ -352,3 +352,48 @@ class HTTPSitemapTests(SitemapTestsBase):
|
||||||
|
|
||||||
</urlset>"""
|
</urlset>"""
|
||||||
self.assertXMLEqual(response.content.decode(), expected_content)
|
self.assertXMLEqual(response.content.decode(), expected_content)
|
||||||
|
|
||||||
|
def test_callable_sitemod_partial(self):
|
||||||
|
"""
|
||||||
|
Not all items have `lastmod`. Therefore the `Last-Modified` header
|
||||||
|
is not set by the detail sitemap view.
|
||||||
|
"""
|
||||||
|
index_response = self.client.get('/callable-lastmod-partial/index.xml')
|
||||||
|
sitemap_response = self.client.get('/callable-lastmod-partial/sitemap.xml')
|
||||||
|
self.assertNotIn('Last-Modified', index_response)
|
||||||
|
self.assertNotIn('Last-Modified', sitemap_response)
|
||||||
|
expected_content_index = """<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
|
<sitemap><loc>http://example.com/simple/sitemap-callable-lastmod.xml</loc></sitemap>
|
||||||
|
</sitemapindex>
|
||||||
|
"""
|
||||||
|
expected_content_sitemap = """<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||||
|
<url><loc>http://example.com/location/</loc><lastmod>2013-03-13</lastmod></url><url><loc>http://example.com/location/</loc></url>
|
||||||
|
</urlset>
|
||||||
|
"""
|
||||||
|
self.assertXMLEqual(index_response.content.decode(), expected_content_index)
|
||||||
|
self.assertXMLEqual(sitemap_response.content.decode(), expected_content_sitemap)
|
||||||
|
|
||||||
|
def test_callable_sitemod_full(self):
|
||||||
|
"""
|
||||||
|
All items in the sitemap have `lastmod`. The `Last-Modified` header
|
||||||
|
is set for the detail sitemap view. The index view does not (currently)
|
||||||
|
set the `Last-Modified` header.
|
||||||
|
"""
|
||||||
|
index_response = self.client.get('/callable-lastmod-full/index.xml')
|
||||||
|
sitemap_response = self.client.get('/callable-lastmod-full/sitemap.xml')
|
||||||
|
self.assertNotIn('Last-Modified', index_response)
|
||||||
|
self.assertEqual(sitemap_response.headers['Last-Modified'], 'Thu, 13 Mar 2014 10:00:00 GMT')
|
||||||
|
expected_content_index = """<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||||
|
<sitemap><loc>http://example.com/simple/sitemap-callable-lastmod.xml</loc></sitemap>
|
||||||
|
</sitemapindex>
|
||||||
|
"""
|
||||||
|
expected_content_sitemap = """<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
||||||
|
<url><loc>http://example.com/location/</loc><lastmod>2013-03-13</lastmod></url><url><loc>http://example.com/location/</loc><lastmod>2014-03-13</lastmod></url>
|
||||||
|
</urlset>
|
||||||
|
"""
|
||||||
|
self.assertXMLEqual(index_response.content.decode(), expected_content_index)
|
||||||
|
self.assertXMLEqual(sitemap_response.content.decode(), expected_content_sitemap)
|
||||||
|
|
|
@ -81,6 +81,35 @@ class TimezoneSiteMap(SimpleSitemap):
|
||||||
lastmod = datetime(2013, 3, 13, 10, 0, 0, tzinfo=timezone.get_fixed_timezone(-300))
|
lastmod = datetime(2013, 3, 13, 10, 0, 0, tzinfo=timezone.get_fixed_timezone(-300))
|
||||||
|
|
||||||
|
|
||||||
|
class CallableLastmodPartialSitemap(Sitemap):
|
||||||
|
"""Not all items have `lastmod`."""
|
||||||
|
location = '/location/'
|
||||||
|
|
||||||
|
def items(self):
|
||||||
|
o1 = TestModel()
|
||||||
|
o1.lastmod = datetime(2013, 3, 13, 10, 0, 0)
|
||||||
|
o2 = TestModel()
|
||||||
|
return [o1, o2]
|
||||||
|
|
||||||
|
def lastmod(self, obj):
|
||||||
|
return obj.lastmod
|
||||||
|
|
||||||
|
|
||||||
|
class CallableLastmodFullSitemap(Sitemap):
|
||||||
|
"""All items have `lastmod`."""
|
||||||
|
location = '/location/'
|
||||||
|
|
||||||
|
def items(self):
|
||||||
|
o1 = TestModel()
|
||||||
|
o1.lastmod = datetime(2013, 3, 13, 10, 0, 0)
|
||||||
|
o2 = TestModel()
|
||||||
|
o2.lastmod = datetime(2014, 3, 13, 10, 0, 0)
|
||||||
|
return [o1, o2]
|
||||||
|
|
||||||
|
def lastmod(self, obj):
|
||||||
|
return obj.lastmod
|
||||||
|
|
||||||
|
|
||||||
def testmodelview(request, id):
|
def testmodelview(request, id):
|
||||||
return HttpResponse()
|
return HttpResponse()
|
||||||
|
|
||||||
|
@ -158,6 +187,14 @@ generic_sitemaps_lastmod = {
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
callable_lastmod_partial_sitemap = {
|
||||||
|
'callable-lastmod': CallableLastmodPartialSitemap,
|
||||||
|
}
|
||||||
|
|
||||||
|
callable_lastmod_full_sitemap = {
|
||||||
|
'callable-lastmod': CallableLastmodFullSitemap,
|
||||||
|
}
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('simple/index.xml', views.index, {'sitemaps': simple_sitemaps}),
|
path('simple/index.xml', views.index, {'sitemaps': simple_sitemaps}),
|
||||||
path('simple-paged/index.xml', views.index, {'sitemaps': simple_sitemaps_paged}),
|
path('simple-paged/index.xml', views.index, {'sitemaps': simple_sitemaps_paged}),
|
||||||
|
@ -246,6 +283,10 @@ urlpatterns = [
|
||||||
path(
|
path(
|
||||||
'sitemap-without-entries/sitemap.xml', views.sitemap,
|
'sitemap-without-entries/sitemap.xml', views.sitemap,
|
||||||
{'sitemaps': {}}, name='django.contrib.sitemaps.views.sitemap'),
|
{'sitemaps': {}}, name='django.contrib.sitemaps.views.sitemap'),
|
||||||
|
path('callable-lastmod-partial/index.xml', views.index, {'sitemaps': callable_lastmod_partial_sitemap}),
|
||||||
|
path('callable-lastmod-partial/sitemap.xml', views.sitemap, {'sitemaps': callable_lastmod_partial_sitemap}),
|
||||||
|
path('callable-lastmod-full/index.xml', views.index, {'sitemaps': callable_lastmod_full_sitemap}),
|
||||||
|
path('callable-lastmod-full/sitemap.xml', views.sitemap, {'sitemaps': callable_lastmod_full_sitemap}),
|
||||||
]
|
]
|
||||||
|
|
||||||
urlpatterns += i18n_patterns(
|
urlpatterns += i18n_patterns(
|
||||||
|
|
Loading…
Reference in New Issue