|
#!/usr/bin/env python |
|
# -*- coding: utf-8 -*- |
|
|
|
from jinja2 import Template, UndefinedError |
|
import pytest |
|
from attrdict import AttrDict |
|
|
|
|
|
def test_print(): |
|
print "hello" |
|
assert True |
|
|
|
|
|
def test_simple(): |
|
template = Template("Hello {{name}} from:{{sender}}") |
|
|
|
assert "Hello Jack from:Lucy" == template.render(name="Jack", sender="Lucy") |
|
|
|
assert "Hello Jack from:" == template.render(name="Jack") |
|
assert u"Hello Jack from:" == template.render(name="Jack") |
|
assert "Hello Jack from:" == template.render(name=u"Jack") |
|
|
|
assert u"Hello Jack from:Lucy" == template.render(name=u"Jack", sender="Lucy") |
|
|
|
assert type(template.render(name=u"Jack", sender="Lucy")) is unicode |
|
|
|
def test_ch(): |
|
template = Template("Hello {{name}} from:{{sender}}") |
|
with pytest.raises(UnicodeDecodeError): |
|
assert "Hello Jack from:校长" == template.render(name="Jack", sender="校长") |
|
assert u"Hello Jack from:校长" == template.render(name="Jack", sender=u"校长") |
|
assert "Hello Jack from:校长" != template.render(name="Jack", sender=u"校长") |
|
|
|
|
|
common_template = "Hi {{msg}}. My name is {{user.name}}, and {{user.age}} years old. I come from {{user.country}}" |
|
common_render = "Hi everyone. My name is jack, and 18 years old. I come from China" |
|
common_render_none = "Hi . My name is , and years old. I come from " |
|
|
|
def test_dict(): |
|
template = Template(common_template) |
|
user = { |
|
"name": "jack", |
|
"age": 18, |
|
"country": "China", |
|
} |
|
|
|
result = template.render(user=user, msg="everyone") |
|
|
|
assert common_render == result |
|
assert type(result) is unicode |
|
|
|
user = { |
|
'name': u"jack", |
|
u'age': "18", |
|
u'country': u"China", |
|
} |
|
|
|
result = template.render(user=user, msg="everyone") |
|
|
|
assert common_render == result |
|
assert type(result) is unicode |
|
|
|
|
|
def test_None(): |
|
|
|
template = Template("Hello {{name}} from:{{sender}}") |
|
assert "Hello from:" == template.render() |
|
assert "Hello None from:" == template.render(name=None) |
|
|
|
template = Template(common_template) |
|
with pytest.raises(UndefinedError): |
|
result = template.render(msg="world") |
|
|
|
assert common_render_none == template.render(user=None) |
|
assert template.render(user={}) == template.render(user=None) |
|
assert template.render(user=object()) == template.render(user=None) |
|
assert template.render(user=AttrDict({})) == template.render(user=None) |