1. from django.template import TemplateSyntaxError
    
  2. from django.test import SimpleTestCase
    
  3. 
    
  4. from ..utils import setup
    
  5. 
    
  6. 
    
  7. class NamedEndblockTests(SimpleTestCase):
    
  8.     @setup(
    
  9.         {
    
  10.             "namedendblocks01": "1{% block first %}_{% block second %}"
    
  11.             "2{% endblock second %}_{% endblock first %}3"
    
  12.         }
    
  13.     )
    
  14.     def test_namedendblocks01(self):
    
  15.         output = self.engine.render_to_string("namedendblocks01")
    
  16.         self.assertEqual(output, "1_2_3")
    
  17. 
    
  18.     # Unbalanced blocks
    
  19.     @setup(
    
  20.         {
    
  21.             "namedendblocks02": "1{% block first %}_{% block second %}"
    
  22.             "2{% endblock first %}_{% endblock second %}3"
    
  23.         }
    
  24.     )
    
  25.     def test_namedendblocks02(self):
    
  26.         with self.assertRaises(TemplateSyntaxError):
    
  27.             self.engine.get_template("namedendblocks02")
    
  28. 
    
  29.     @setup(
    
  30.         {
    
  31.             "namedendblocks03": "1{% block first %}_{% block second %}"
    
  32.             "2{% endblock %}_{% endblock second %}3"
    
  33.         }
    
  34.     )
    
  35.     def test_namedendblocks03(self):
    
  36.         with self.assertRaises(TemplateSyntaxError):
    
  37.             self.engine.get_template("namedendblocks03")
    
  38. 
    
  39.     @setup(
    
  40.         {
    
  41.             "namedendblocks04": "1{% block first %}_{% block second %}"
    
  42.             "2{% endblock second %}_{% endblock third %}3"
    
  43.         }
    
  44.     )
    
  45.     def test_namedendblocks04(self):
    
  46.         with self.assertRaises(TemplateSyntaxError):
    
  47.             self.engine.get_template("namedendblocks04")
    
  48. 
    
  49.     @setup(
    
  50.         {
    
  51.             "namedendblocks05": (
    
  52.                 "1{% block first %}_{% block second %}2{% endblock first %}"
    
  53.             )
    
  54.         }
    
  55.     )
    
  56.     def test_namedendblocks05(self):
    
  57.         with self.assertRaises(TemplateSyntaxError):
    
  58.             self.engine.get_template("namedendblocks05")
    
  59. 
    
  60.     # Mixed named and unnamed endblocks
    
  61.     @setup(
    
  62.         {
    
  63.             "namedendblocks06": "1{% block first %}_{% block second %}"
    
  64.             "2{% endblock %}_{% endblock first %}3"
    
  65.         }
    
  66.     )
    
  67.     def test_namedendblocks06(self):
    
  68.         """
    
  69.         Mixed named and unnamed endblocks
    
  70.         """
    
  71.         output = self.engine.render_to_string("namedendblocks06")
    
  72.         self.assertEqual(output, "1_2_3")
    
  73. 
    
  74.     @setup(
    
  75.         {
    
  76.             "namedendblocks07": "1{% block first %}_{% block second %}"
    
  77.             "2{% endblock second %}_{% endblock %}3"
    
  78.         }
    
  79.     )
    
  80.     def test_namedendblocks07(self):
    
  81.         output = self.engine.render_to_string("namedendblocks07")
    
  82.         self.assertEqual(output, "1_2_3")