mirror of
				https://github.com/django/django.git
				synced 2025-10-30 00:56:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			40 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| from django.forms.renderers import DjangoTemplates, Jinja2
 | |
| from django.test import SimpleTestCase
 | |
| 
 | |
| try:
 | |
|     import jinja2
 | |
| except ImportError:
 | |
|     jinja2 = None
 | |
| 
 | |
| 
 | |
| class WidgetTest(SimpleTestCase):
 | |
|     beatles = (("J", "John"), ("P", "Paul"), ("G", "George"), ("R", "Ringo"))
 | |
| 
 | |
|     @classmethod
 | |
|     def setUpClass(cls):
 | |
|         cls.django_renderer = DjangoTemplates()
 | |
|         cls.jinja2_renderer = Jinja2() if jinja2 else None
 | |
|         cls.renderers = [cls.django_renderer] + (
 | |
|             [cls.jinja2_renderer] if cls.jinja2_renderer else []
 | |
|         )
 | |
|         super().setUpClass()
 | |
| 
 | |
|     def check_html(
 | |
|         self, widget, name, value, html="", attrs=None, strict=False, **kwargs
 | |
|     ):
 | |
|         assertEqual = self.assertEqual if strict else self.assertHTMLEqual
 | |
|         if self.jinja2_renderer:
 | |
|             output = widget.render(
 | |
|                 name, value, attrs=attrs, renderer=self.jinja2_renderer, **kwargs
 | |
|             )
 | |
|             # Django escapes quotes with '"' while Jinja2 uses '"'.
 | |
|             output = output.replace(""", """)
 | |
|             # Django escapes single quotes with ''' while Jinja2 uses '''.
 | |
|             output = output.replace("'", "'")
 | |
|             assertEqual(output, html)
 | |
| 
 | |
|         output = widget.render(
 | |
|             name, value, attrs=attrs, renderer=self.django_renderer, **kwargs
 | |
|         )
 | |
|         assertEqual(output, html)
 |