from django.template import TemplateSyntaxError from django.test import SimpleTestCase from ..utils import setup class ResetCycleTagTests(SimpleTestCase): @setup({'resetcycle01': "{% resetcycle %}"}) def test_resetcycle01(self): with self.assertRaisesMessage(TemplateSyntaxError, "No cycles in template."): self.engine.get_template('resetcycle01') @setup({'resetcycle02': "{% resetcycle undefinedcycle %}"}) def test_resetcycle02(self): with self.assertRaisesMessage(TemplateSyntaxError, "Named cycle 'undefinedcycle' does not exist."): self.engine.get_template('resetcycle02') @setup({'resetcycle03': "{% cycle 'a' 'b' %}{% resetcycle undefinedcycle %}"}) def test_resetcycle03(self): with self.assertRaisesMessage(TemplateSyntaxError, "Named cycle 'undefinedcycle' does not exist."): self.engine.get_template('resetcycle03') @setup({'resetcycle04': "{% cycle 'a' 'b' as ab %}{% resetcycle undefinedcycle %}"}) def test_resetcycle04(self): with self.assertRaisesMessage(TemplateSyntaxError, "Named cycle 'undefinedcycle' does not exist."): self.engine.get_template('resetcycle04') @setup({'resetcycle05': "{% for i in test %}{% cycle 'a' 'b' %}{% resetcycle %}{% endfor %}"}) def test_resetcycle05(self): output = self.engine.render_to_string('resetcycle05', {'test': list(range(5))}) self.assertEqual(output, 'aaaaa') @setup({'resetcycle06': "{% cycle 'a' 'b' 'c' as abc %}" "{% for i in test %}" "{% cycle abc %}" "{% cycle '-' '+' %}" "{% resetcycle %}" "{% endfor %}"}) def test_resetcycle06(self): output = self.engine.render_to_string('resetcycle06', {'test': list(range(5))}) self.assertEqual(output, 'ab-c-a-b-c-') @setup({'resetcycle07': "{% cycle 'a' 'b' 'c' as abc %}" "{% for i in test %}" "{% resetcycle abc %}" "{% cycle abc %}" "{% cycle '-' '+' %}" "{% endfor %}"}) def test_resetcycle07(self): output = self.engine.render_to_string('resetcycle07', {'test': list(range(5))}) self.assertEqual(output, 'aa-a+a-a+a-') @setup({'resetcycle08': "{% for i in outer %}" "{% for j in inner %}" "{% cycle 'a' 'b' %}" "{% endfor %}" "{% resetcycle %}" "{% endfor %}"}) def test_resetcycle08(self): output = self.engine.render_to_string('resetcycle08', {'outer': list(range(2)), 'inner': list(range(3))}) self.assertEqual(output, 'abaaba') @setup({'resetcycle09': "{% for i in outer %}" "{% cycle 'a' 'b' %}" "{% for j in inner %}" "{% cycle 'X' 'Y' %}" "{% endfor %}" "{% resetcycle %}" "{% endfor %}"}) def test_resetcycle09(self): output = self.engine.render_to_string('resetcycle09', {'outer': list(range(2)), 'inner': list(range(3))}) self.assertEqual(output, 'aXYXbXYX') @setup({'resetcycle10': "{% for i in test %}" "{% cycle 'X' 'Y' 'Z' as XYZ %}" "{% cycle 'a' 'b' 'c' as abc %}" "{% if i == 1 %}" "{% resetcycle abc %}" "{% endif %}" "{% endfor %}"}) def test_resetcycle10(self): output = self.engine.render_to_string('resetcycle10', {'test': list(range(5))}) self.assertEqual(output, 'XaYbZaXbYc') @setup({'resetcycle11': "{% for i in test %}" "{% cycle 'X' 'Y' 'Z' as XYZ %}" "{% cycle 'a' 'b' 'c' as abc %}" "{% if i == 1 %}" "{% resetcycle XYZ %}" "{% endif %}" "{% endfor %}"}) def test_resetcycle11(self): output = self.engine.render_to_string('resetcycle11', {'test': list(range(5))}) self.assertEqual(output, 'XaYbXcYaZb')