diff --git a/django/contrib/sitemaps/tests/basic.py b/django/contrib/sitemaps/tests/basic.py
index b2de75f098..70e28c2f74 100644
--- a/django/contrib/sitemaps/tests/basic.py
+++ b/django/contrib/sitemaps/tests/basic.py
@@ -1,7 +1,6 @@
from datetime import date
from django.conf import settings
from django.contrib.auth.models import User
-from django.contrib.flatpages.models import FlatPage
from django.contrib.sitemaps import Sitemap
from django.contrib.sites.models import Site
from django.core.exceptions import ImproperlyConfigured
@@ -52,40 +51,51 @@ class SitemapTests(TestCase):
"A minimal generic sitemap can be rendered"
# Retrieve the sitemap.
response = self.client.get('/generic/sitemap.xml')
+
+ expected = ''
+ for username in User.objects.values_list("username", flat=True):
+ expected += "http://example.com/users/%s/" %username
# Check for all the important bits:
self.assertEquals(response.content, """
-http://example.com/users/testuser/
+%s
-""")
+""" %expected)
- def test_flatpage_sitemap(self):
- "Basic FlatPage sitemap test"
- public = FlatPage.objects.create(
- url=u'/public/',
- title=u'Public Page',
- enable_comments=True,
- registration_required=False,
- )
- public.sites.add(settings.SITE_ID)
- private = FlatPage.objects.create(
- url=u'/private/',
- title=u'Private Page',
- enable_comments=True,
- registration_required=True
- )
- private.sites.add(settings.SITE_ID)
- response = self.client.get('/flatpages/sitemap.xml')
- # Public flatpage should be in the sitemap
- self.assertContains(response, 'http://example.com%s' % public.url)
- # Private flatpage should not be in the sitemap
- self.assertNotContains(response, 'http://example.com%s' % private.url)
+ if "django.contrib.flatpages" in settings.INSTALLED_APPS:
+ def test_flatpage_sitemap(self):
+ "Basic FlatPage sitemap test"
+
+ # Import FlatPage inside the test so that when django.contrib.flatpages
+ # is not installed we don't get problems trying to delete Site
+ # objects (FlatPage has an M2M to Site, Site.delete() tries to
+ # delete related objects, but the M2M table doesn't exist.
+ from django.contrib.flatpages.models import FlatPage
+
+ public = FlatPage.objects.create(
+ url=u'/public/',
+ title=u'Public Page',
+ enable_comments=True,
+ registration_required=False,
+ )
+ public.sites.add(settings.SITE_ID)
+ private = FlatPage.objects.create(
+ url=u'/private/',
+ title=u'Private Page',
+ enable_comments=True,
+ registration_required=True
+ )
+ private.sites.add(settings.SITE_ID)
+ response = self.client.get('/flatpages/sitemap.xml')
+ # Public flatpage should be in the sitemap
+ self.assertContains(response, 'http://example.com%s' % public.url)
+ # Private flatpage should not be in the sitemap
+ self.assertNotContains(response, 'http://example.com%s' % private.url)
def test_requestsite_sitemap(self):
# Make sure hitting the flatpages sitemap without the sites framework
# installed doesn't raise an exception
Site._meta.installed = False
- response = self.client.get('/flatpages/sitemap.xml')
# Retrieve the sitemap.
response = self.client.get('/simple/sitemap.xml')
# Check for all the important bits: