mirror of
				https://github.com/django/django.git
				synced 2025-10-31 09:41:08 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			123 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 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"ed.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')",
 | |
|         )
 |