def test_non_required_multikwarg(self): options = core.Options( arguments.MultiKeywordArgument('multi', required=False), ) dummy_tokens = DummyTokens() kwargs, blocks = options.parse(dummy_parser, dummy_tokens) self.assertTrue('multi' in kwargs) self.assertEqual(kwargs['multi'], {}) options = core.Options( arguments.MultiKeywordArgument('multi', required=False, default={'hello': 'world'}), ) dummy_tokens = DummyTokens() kwargs, blocks = options.parse(dummy_parser, dummy_tokens) self.assertTrue('multi' in kwargs) self.assertEqual(kwargs['multi'].resolve({}), {'hello': 'world'})
def test_multikwarg_no_key(self): options = core.Options(arguments.MultiKeywordArgument('multi'), ) with SettingsOverride(DEBUG=True): dummy_tokens = DummyTokens('value') self.assertRaises(template.TemplateSyntaxError, options.parse, dummy_parser, dummy_tokens) with SettingsOverride(DEBUG=False): dummy_tokens = DummyTokens('value') self.assertRaises(template.TemplateSyntaxError, options.parse, dummy_parser, dummy_tokens)
def test_multi_keyword_argument(self): opts = core.Options( arguments.MultiKeywordArgument('multi', max_values=2), ) class MultiKeywordArgumentTag(core.Tag): name = 'multi_kwarg_tag' options = opts def render_tag(self, context, multi): items = sorted(multi.items()) return ','.join(['%s:%s' % item for item in items]) ctx = {'key': 'thekey', 'value': 'thevalue'} templates = [ ("{% multi_kwarg_tag key='value' key2='value2' %}", 'key:value,key2:value2', ctx), ("{% multi_kwarg_tag key=value %}", 'key:thevalue', ctx), ] self._tag_tester(MultiKeywordArgumentTag, templates) dummy_tokens = DummyTokens('key="value"', 'key2="value2"', 'key3="value3"') self.assertRaises(exceptions.TooManyArguments, opts.parse, dummy_parser, dummy_tokens)