test_generic.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. from datetime import datetime
  2. from django.contrib.sitemaps import GenericSitemap
  3. from django.test import override_settings
  4. from .base import SitemapTestsBase
  5. from .models import TestModel
  6. @override_settings(ABSOLUTE_URL_OVERRIDES={})
  7. class GenericViewsSitemapTests(SitemapTestsBase):
  8. def test_generic_sitemap_attributes(self):
  9. datetime_value = datetime.now()
  10. queryset = TestModel.objects.all()
  11. generic_sitemap = GenericSitemap(
  12. info_dict={
  13. 'queryset': queryset,
  14. 'date_field': datetime_value,
  15. },
  16. priority=0.6,
  17. changefreq='monthly',
  18. protocol='https',
  19. )
  20. attr_values = (
  21. ('date_field', datetime_value),
  22. ('priority', 0.6),
  23. ('changefreq', 'monthly'),
  24. ('protocol', 'https'),
  25. )
  26. for attr_name, expected_value in attr_values:
  27. with self.subTest(attr_name=attr_name):
  28. self.assertEqual(getattr(generic_sitemap, attr_name), expected_value)
  29. self.assertCountEqual(generic_sitemap.queryset, queryset)
  30. def test_generic_sitemap(self):
  31. "A minimal generic sitemap can be rendered"
  32. response = self.client.get('/generic/sitemap.xml')
  33. expected = ''
  34. for pk in TestModel.objects.values_list("id", flat=True):
  35. expected += "<url><loc>%s/testmodel/%s/</loc></url>" % (self.base_url, pk)
  36. expected_content = """<?xml version="1.0" encoding="UTF-8"?>
  37. <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
  38. %s
  39. </urlset>
  40. """ % expected
  41. self.assertXMLEqual(response.content.decode(), expected_content)