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