class IntegerTag(core.Tag): options = core.Options( arguments.IntegerArgument('integer') ) def render_tag(self, context, integer): return integer
def test_integer_variable(self): options = core.Options( arguments.IntegerArgument('integer', resolve=False), ) # test okay with SettingsOverride(DEBUG=False): dummy_tokens = DummyTokens('1') kwargs, blocks = options.parse(dummy_parser, dummy_tokens) dummy_context = {} self.assertEqual(kwargs['integer'].resolve(dummy_context), 1) # test warning dummy_tokens = DummyTokens('one') kwargs, blocks = options.parse(dummy_parser, dummy_tokens) dummy_context = {} one = repr('one') message = arguments.IntegerValue.errors['clean'] % {'value': one} self.assertWarns(exceptions.TemplateSyntaxWarning, message, kwargs['integer'].resolve, dummy_context) self.assertEqual(kwargs['integer'].resolve(dummy_context), values.IntegerValue.value_on_error) # test exception with SettingsOverride(DEBUG=True): dummy_tokens = DummyTokens('one') kwargs, blocks = options.parse(dummy_parser, dummy_tokens) dummy_context = {} message = values.IntegerValue.errors['clean'] % { 'value': repr('one') } self.assertRaises(template.TemplateSyntaxError, kwargs['integer'].resolve, dummy_context) # test the same as above but with resolving class IntegerTag(core.Tag): options = core.Options(arguments.IntegerArgument('integer')) def render_tag(self, context, integer): return integer with TemplateTags(IntegerTag): tpl = template.Template("{% integer_tag i %}") with SettingsOverride(DEBUG=False): # test okay context = template.Context({'i': '1'}) self.assertEqual(tpl.render(context), '1') # test warning context = template.Context({'i': 'one'}) message = values.IntegerValue.errors['clean'] % { 'value': repr('one') } self.assertWarns(exceptions.TemplateSyntaxWarning, message, tpl.render, context) self.assertEqual(int(tpl.render(context)), values.IntegerValue.value_on_error) # test exception with SettingsOverride(DEBUG=True): context = template.Context({'i': 'one'}) message = arguments.IntegerValue.errors['clean'] % {'value': one} self.assertRaises(template.TemplateSyntaxError, tpl.render, context)