56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
from __future__ import unicode_literals
|
|
|
|
from django.shortcuts import render
|
|
import jinja2
|
|
|
|
from nose.tools import eq_
|
|
try:
|
|
from unittest.mock import Mock, patch, sentinel
|
|
except ImportError:
|
|
from mock import Mock, patch, sentinel
|
|
|
|
import jingo
|
|
|
|
from .utils import render as render_string
|
|
|
|
|
|
@patch('jingo.get_env')
|
|
def test_render(mock_get_env):
|
|
mock_template = Mock()
|
|
mock_env = Mock()
|
|
mock_env.get_template.return_value = mock_template
|
|
mock_get_env.return_value = mock_env
|
|
|
|
response = render(Mock(), sentinel.template, status=32)
|
|
mock_env.get_template.assert_called_with(sentinel.template)
|
|
assert mock_template.render.called
|
|
|
|
eq_(response.status_code, 32)
|
|
|
|
|
|
@patch('jingo.get_env')
|
|
def test_render_to_string(mock_get_env):
|
|
template = jinja2.environment.Template('The answer is {{ answer }}')
|
|
rendered = jingo.render_to_string(Mock(), template, {'answer': 42})
|
|
|
|
eq_(rendered, 'The answer is 42')
|
|
|
|
|
|
def test_inclusion_tag():
|
|
@jingo.register.inclusion_tag('xx.html')
|
|
def tag(x):
|
|
return {'z': x}
|
|
|
|
env = jingo.get_env()
|
|
with patch.object(env, 'get_template') as mock_get_template:
|
|
temp = jinja2.environment.Template('<{{ z }}>')
|
|
mock_get_template.return_value = temp
|
|
t = env.from_string('{{ tag(1) }}')
|
|
eq_('<1>', t.render())
|
|
|
|
|
|
def test_helpers_loaded():
|
|
"""Test that helpers are loaded correctly."""
|
|
s = render_string('{{ "something"|test_filter }}', {})
|
|
eq_('Success!', s)
|