Skip to content

Commit

Permalink
add tests for template tags
Browse files Browse the repository at this point in the history
  • Loading branch information
joke2k committed Jun 23, 2014
1 parent 5d0d7c5 commit f236dde
Show file tree
Hide file tree
Showing 4 changed files with 40 additions and 86 deletions.
79 changes: 0 additions & 79 deletions idioticon/config.py

This file was deleted.

13 changes: 6 additions & 7 deletions idioticon/templatetags/idioticon.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,10 @@ def do_term_tag(term_key, **kwargs):

theme = kwargs.pop('theme', settings.IDIOTICON_THEME)

context = Context()
context.update(kwargs)
context = Context(kwargs)

try:
context['term'] = shortcuts.get_term(term_key)
context['term'] = shortcuts.get_term(term_key, soft_error=False)
template_name = 'idioticon/term_%s.html' % theme
template = get_template(template_name)
return template.render(context)
Expand All @@ -46,7 +45,7 @@ def do_load_terms(parser, token):
Usage::
{% load_terms 'my-term' 'other-term' as my_term other_term %}
{{ my_term.get_title }}: {{ my_term.get_definition }}
{{ my_term.get_name }}: {{ my_term.get_definition }}
"""
# token.split_contents() isn't useful here because this tag doesn't accept variable as arguments
Expand All @@ -55,10 +54,10 @@ def do_load_terms(parser, token):
try:
as_index = args.index('as')
except ValueError:
raise TemplateSyntaxError("'load_terms' requires '*terms as *variable' (got %r)" % args)
raise TemplateSyntaxError("'load_terms' requires '*terms as *variables' (got %r)" % args)

names, terms = args[as_index+1:], args[1:as_index]
names, terms = args[as_index+1:], map(lambda t: t.strip('\'').strip('"'), args[1:as_index])

if len(names) != len(terms):
raise TemplateSyntaxError("'load_terms' requires '*terms as *variable' (got %r)" % args)
raise TemplateSyntaxError("'load_terms' requires '*terms as *variables' (got %r)" % args)
return LoadTermsNode(names, terms)
1 change: 1 addition & 0 deletions tests/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -167,6 +167,7 @@ def test_conf_textfield(self):
@override_settings(IDIOTICON_THEME='abbr')
def test_conf_theme(self):
from idioticon.conf import settings
shortcuts.add_term('key', 'My Term')
self.assertEqual(settings.IDIOTICON_THEME, 'abbr')
from idioticon.templatetags.idioticon import do_term_tag
self.assertIn('<abbr', do_term_tag('key'))
33 changes: 33 additions & 0 deletions tests/test_templatetags.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
from django.template import Template, Context
from django.test import TestCase
import idioticon
from idioticon.templatetags.idioticon import do_term_tag, do_load_terms


class TestIdioticonTemplateTags(TestCase):

TEMPLATE = Template("""
{% load idioticon %}
{% load_terms 'foo' 'bar' as foo bar %}
FOO={{ foo.get_name }}
BAR={{ bar.get_name }}""")

def test_term_tag(self):
title = 'MyTerm'
definition = 'My definition'
idioticon.add_term('my-term', 'MyTerm', 'My definition')

self.assertIn(title, do_term_tag('my-term'))
self.assertIn(definition, do_term_tag('my-term'))

def test_term_tag_for_not_existing_key(self):
self.assertEqual('', do_term_tag('not-existing-term'))

def test_load_terms(self):
self.assertTrue(idioticon.add_term('foo', 'Foo'))
self.assertTrue(idioticon.add_term('bar', 'Bar'))

rendered = self.TEMPLATE.render(Context({}))

self.assertIn('FOO=Foo', rendered)
self.assertIn('BAR=Bar', rendered)

0 comments on commit f236dde

Please sign in to comment.