mirror of https://github.com/django/django.git
171 lines
6.7 KiB
Python
171 lines
6.7 KiB
Python
from django.contrib.auth.models import AnonymousUser, User
|
|
from django.contrib.flatpages.models import FlatPage
|
|
from django.contrib.sites.models import Site
|
|
from django.template import Context, Template, TemplateSyntaxError
|
|
from django.test import TestCase
|
|
|
|
|
|
class FlatpageTemplateTagTests(TestCase):
|
|
@classmethod
|
|
def setUpTestData(cls):
|
|
# don't use the manager because we want to ensure the site exists
|
|
# with pk=1, regardless of whether or not it already exists.
|
|
cls.site1 = Site(pk=1, domain="example.com", name="example.com")
|
|
cls.site1.save()
|
|
cls.fp1 = FlatPage.objects.create(
|
|
url="/flatpage/",
|
|
title="A Flatpage",
|
|
content="Isn't it flat!",
|
|
enable_comments=False,
|
|
template_name="",
|
|
registration_required=False,
|
|
)
|
|
cls.fp2 = FlatPage.objects.create(
|
|
url="/location/flatpage/",
|
|
title="A Nested Flatpage",
|
|
content="Isn't it flat and deep!",
|
|
enable_comments=False,
|
|
template_name="",
|
|
registration_required=False,
|
|
)
|
|
cls.fp3 = FlatPage.objects.create(
|
|
url="/sekrit/",
|
|
title="Sekrit Flatpage",
|
|
content="Isn't it sekrit!",
|
|
enable_comments=False,
|
|
template_name="",
|
|
registration_required=True,
|
|
)
|
|
cls.fp4 = FlatPage.objects.create(
|
|
url="/location/sekrit/",
|
|
title="Sekrit Nested Flatpage",
|
|
content="Isn't it sekrit and deep!",
|
|
enable_comments=False,
|
|
template_name="",
|
|
registration_required=True,
|
|
)
|
|
cls.fp1.sites.add(cls.site1)
|
|
cls.fp2.sites.add(cls.site1)
|
|
cls.fp3.sites.add(cls.site1)
|
|
cls.fp4.sites.add(cls.site1)
|
|
|
|
def test_get_flatpages_tag(self):
|
|
"The flatpage template tag retrieves unregistered prefixed flatpages by default"
|
|
out = Template(
|
|
"{% load flatpages %}"
|
|
"{% get_flatpages as flatpages %}"
|
|
"{% for page in flatpages %}"
|
|
"{{ page.title }},"
|
|
"{% endfor %}"
|
|
).render(Context())
|
|
self.assertEqual(out, "A Flatpage,A Nested Flatpage,")
|
|
|
|
def test_get_flatpages_tag_for_anon_user(self):
|
|
"""
|
|
The flatpage template tag retrieves unregistered flatpages for an
|
|
anonymous user.
|
|
"""
|
|
out = Template(
|
|
"{% load flatpages %}"
|
|
"{% get_flatpages for anonuser as flatpages %}"
|
|
"{% for page in flatpages %}"
|
|
"{{ page.title }},"
|
|
"{% endfor %}"
|
|
).render(Context({"anonuser": AnonymousUser()}))
|
|
self.assertEqual(out, "A Flatpage,A Nested Flatpage,")
|
|
|
|
def test_get_flatpages_tag_for_user(self):
|
|
"The flatpage template tag retrieves all flatpages for an authenticated user"
|
|
me = User.objects.create_user("testuser", "test@example.com", "s3krit")
|
|
out = Template(
|
|
"{% load flatpages %}"
|
|
"{% get_flatpages for me as flatpages %}"
|
|
"{% for page in flatpages %}"
|
|
"{{ page.title }},"
|
|
"{% endfor %}"
|
|
).render(Context({"me": me}))
|
|
self.assertEqual(
|
|
out, "A Flatpage,A Nested Flatpage,Sekrit Nested Flatpage,Sekrit Flatpage,"
|
|
)
|
|
|
|
def test_get_flatpages_with_prefix(self):
|
|
"The flatpage template tag retrieves unregistered prefixed flatpages by default"
|
|
out = Template(
|
|
"{% load flatpages %}"
|
|
"{% get_flatpages '/location/' as location_flatpages %}"
|
|
"{% for page in location_flatpages %}"
|
|
"{{ page.title }},"
|
|
"{% endfor %}"
|
|
).render(Context())
|
|
self.assertEqual(out, "A Nested Flatpage,")
|
|
|
|
def test_get_flatpages_with_prefix_for_anon_user(self):
|
|
"""
|
|
The flatpage template tag retrieves unregistered prefixed flatpages for
|
|
an anonymous user.
|
|
"""
|
|
out = Template(
|
|
"{% load flatpages %}"
|
|
"{% get_flatpages '/location/' for anonuser as location_flatpages %}"
|
|
"{% for page in location_flatpages %}"
|
|
"{{ page.title }},"
|
|
"{% endfor %}"
|
|
).render(Context({"anonuser": AnonymousUser()}))
|
|
self.assertEqual(out, "A Nested Flatpage,")
|
|
|
|
def test_get_flatpages_with_prefix_for_user(self):
|
|
"""
|
|
The flatpage template tag retrieve prefixed flatpages for an
|
|
authenticated user.
|
|
"""
|
|
me = User.objects.create_user("testuser", "test@example.com", "s3krit")
|
|
out = Template(
|
|
"{% load flatpages %}"
|
|
"{% get_flatpages '/location/' for me as location_flatpages %}"
|
|
"{% for page in location_flatpages %}"
|
|
"{{ page.title }},"
|
|
"{% endfor %}"
|
|
).render(Context({"me": me}))
|
|
self.assertEqual(out, "A Nested Flatpage,Sekrit Nested Flatpage,")
|
|
|
|
def test_get_flatpages_with_variable_prefix(self):
|
|
"The prefix for the flatpage template tag can be a template variable"
|
|
out = Template(
|
|
"{% load flatpages %}"
|
|
"{% get_flatpages location_prefix as location_flatpages %}"
|
|
"{% for page in location_flatpages %}"
|
|
"{{ page.title }},"
|
|
"{% endfor %}"
|
|
).render(Context({"location_prefix": "/location/"}))
|
|
self.assertEqual(out, "A Nested Flatpage,")
|
|
|
|
def test_parsing_errors(self):
|
|
"There are various ways that the flatpages template tag won't parse"
|
|
|
|
def render(t):
|
|
return Template(t).render(Context())
|
|
|
|
msg = (
|
|
"get_flatpages expects a syntax of get_flatpages "
|
|
"['url_starts_with'] [for user] as context_name"
|
|
)
|
|
with self.assertRaisesMessage(TemplateSyntaxError, msg):
|
|
render("{% load flatpages %}{% get_flatpages %}")
|
|
with self.assertRaisesMessage(TemplateSyntaxError, msg):
|
|
render("{% load flatpages %}{% get_flatpages as %}")
|
|
with self.assertRaisesMessage(TemplateSyntaxError, msg):
|
|
render("{% load flatpages %}{% get_flatpages cheesecake flatpages %}")
|
|
with self.assertRaisesMessage(TemplateSyntaxError, msg):
|
|
render("{% load flatpages %}{% get_flatpages as flatpages asdf %}")
|
|
with self.assertRaisesMessage(TemplateSyntaxError, msg):
|
|
render(
|
|
"{% load flatpages %}{% get_flatpages cheesecake user as flatpages %}"
|
|
)
|
|
with self.assertRaisesMessage(TemplateSyntaxError, msg):
|
|
render("{% load flatpages %}{% get_flatpages for user as flatpages asdf %}")
|
|
with self.assertRaisesMessage(TemplateSyntaxError, msg):
|
|
render(
|
|
"{% load flatpages %}"
|
|
"{% get_flatpages prefix for user as flatpages asdf %}"
|
|
)
|