1
0
mirror of https://github.com/django/django.git synced 2024-12-28 12:06:22 +00:00
django/tests/template_tests/syntax_tests/test_static.py

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

123 lines
4.3 KiB
Python
Raw Normal View History

from urllib.parse import urljoin
from django.conf import settings
from django.template import TemplateSyntaxError
from django.templatetags.static import StaticNode
from django.test import SimpleTestCase, override_settings
from ..utils import setup
@override_settings(INSTALLED_APPS=[], MEDIA_URL="media/", STATIC_URL="static/")
class StaticTagTests(SimpleTestCase):
libraries = {"static": "django.templatetags.static"}
@setup({"static-prefixtag01": "{% load static %}{% get_static_prefix %}"})
def test_static_prefixtag01(self):
output = self.engine.render_to_string("static-prefixtag01")
self.assertEqual(output, settings.STATIC_URL)
@setup(
{
"static-prefixtag02": "{% load static %}"
"{% get_static_prefix as static_prefix %}{{ static_prefix }}"
}
)
def test_static_prefixtag02(self):
output = self.engine.render_to_string("static-prefixtag02")
self.assertEqual(output, settings.STATIC_URL)
@setup({"static-prefixtag03": "{% load static %}{% get_media_prefix %}"})
def test_static_prefixtag03(self):
output = self.engine.render_to_string("static-prefixtag03")
self.assertEqual(output, settings.MEDIA_URL)
@setup(
{
"static-prefixtag04": "{% load static %}"
"{% get_media_prefix as media_prefix %}{{ media_prefix }}"
}
)
def test_static_prefixtag04(self):
output = self.engine.render_to_string("static-prefixtag04")
self.assertEqual(output, settings.MEDIA_URL)
@setup(
{
"t": (
"{% load static %}{% get_media_prefix ad media_prefix %}"
"{{ media_prefix }}"
)
}
)
def test_static_prefixtag_without_as(self):
msg = "First argument in 'get_media_prefix' must be 'as'"
with self.assertRaisesMessage(TemplateSyntaxError, msg):
self.engine.render_to_string("t")
@setup({"static-statictag01": '{% load static %}{% static "admin/base.css" %}'})
def test_static_statictag01(self):
output = self.engine.render_to_string("static-statictag01")
self.assertEqual(output, urljoin(settings.STATIC_URL, "admin/base.css"))
@setup({"static-statictag02": "{% load static %}{% static base_css %}"})
def test_static_statictag02(self):
output = self.engine.render_to_string(
"static-statictag02", {"base_css": "admin/base.css"}
)
self.assertEqual(output, urljoin(settings.STATIC_URL, "admin/base.css"))
@setup(
{
"static-statictag03": (
'{% load static %}{% static "admin/base.css" as foo %}{{ foo }}'
)
}
)
def test_static_statictag03(self):
output = self.engine.render_to_string("static-statictag03")
self.assertEqual(output, urljoin(settings.STATIC_URL, "admin/base.css"))
@setup(
{"static-statictag04": "{% load static %}{% static base_css as foo %}{{ foo }}"}
)
def test_static_statictag04(self):
output = self.engine.render_to_string(
"static-statictag04", {"base_css": "admin/base.css"}
)
self.assertEqual(output, urljoin(settings.STATIC_URL, "admin/base.css"))
@setup(
{
"static-statictag05": (
'{% load static %}{% static "special?chars&quoted.html" %}'
)
}
)
def test_static_quotes_urls(self):
output = self.engine.render_to_string("static-statictag05")
self.assertEqual(
output,
urljoin(settings.STATIC_URL, "/static/special%3Fchars%26quoted.html"),
)
@setup({"t": "{% load static %}{% static %}"})
def test_static_statictag_without_path(self):
msg = "'static' takes at least one argument (path to file)"
with self.assertRaisesMessage(TemplateSyntaxError, msg):
self.engine.render_to_string("t")
class StaticNodeTests(SimpleTestCase):
def test_repr(self):
static_node = StaticNode(varname="named-var", path="named-path")
self.assertEqual(
repr(static_node),
"StaticNode(varname='named-var', path='named-path')",
)
static_node = StaticNode(path="named-path")
self.assertEqual(
repr(static_node),
"StaticNode(varname=None, path='named-path')",
)