test_flatpages.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from __future__ import unicode_literals
  2. from unittest import skipUnless
  3. from django.apps import apps
  4. from django.conf import settings
  5. from .base import SitemapTestsBase
  6. class FlatpagesSitemapTests(SitemapTestsBase):
  7. @skipUnless(apps.is_installed('django.contrib.flatpages'),
  8. "django.contrib.flatpages app not installed.")
  9. def test_flatpage_sitemap(self):
  10. "Basic FlatPage sitemap test"
  11. # Import FlatPage inside the test so that when django.contrib.flatpages
  12. # is not installed we don't get problems trying to delete Site
  13. # objects (FlatPage has an M2M to Site, Site.delete() tries to
  14. # delete related objects, but the M2M table doesn't exist.
  15. from django.contrib.flatpages.models import FlatPage
  16. public = FlatPage.objects.create(
  17. url='/public/',
  18. title='Public Page',
  19. enable_comments=True,
  20. registration_required=False,
  21. )
  22. public.sites.add(settings.SITE_ID)
  23. private = FlatPage.objects.create(
  24. url='/private/',
  25. title='Private Page',
  26. enable_comments=True,
  27. registration_required=True
  28. )
  29. private.sites.add(settings.SITE_ID)
  30. response = self.client.get('/flatpages/sitemap.xml')
  31. # Public flatpage should be in the sitemap
  32. self.assertContains(response, '<loc>%s%s</loc>' % (self.base_url, public.url))
  33. # Private flatpage should not be in the sitemap
  34. self.assertNotContains(response, '<loc>%s%s</loc>' % (self.base_url, private.url))