def test_as_html(): # str case assert format_html('{}', as_html(part='foo', context={})) == 'foo' assert format_html('{}', as_html(part='<foo>bar</foo>', context={})) == '<foo>bar</foo>' assert format_html('{}', as_html(part=mark_safe('<foo>bar</foo>'), context={})) == '<foo>bar</foo>' # Template case request = req('get') assert format_html( '{}', as_html(request=request, part=Template('foo'), context={})) == 'foo' assert format_html( '{}', as_html(request=request, part=Template('<foo>bar</foo>'), context={})) == '<foo>bar</foo>' # __html__ attribute case assert format_html( '{}', as_html(part=Struct(__html__=lambda: 'foo'), context={})) == 'foo' assert format_html( '{}', as_html(part=Struct(__html__=lambda: '<foo>bar</foo>'), context={})) == '<foo>bar</foo>' assert format_html( '{}', as_html(part=Struct(__html__=lambda: mark_safe('<foo>bar</foo>')), context={})) == '<foo>bar</foo>'
def test_render_to_string(): t = Template( '<span id="{{ field.input.attrs.id }}">{{ field.rendered_value }}</span>' ) assert t.render(context=RequestContext( req('get'), dict(field=dict( input=dict(attrs=dict(id=SafeText('<a b c><d><e>'), ), ), rendered_value=SafeText('<a b c><d><e>'), ), ))).strip() == '<span id="<a b c><d><e>"><a b c><d><e></span>'
def test_simple_render_to_string(): t = Template('{{ field }}') assert t.render( context=RequestContext( req('get'), dict( field='foo' ) ) ).strip() == 'foo'
def test_crash_in_templates(): # We should crash in template rendering during tests if we try to render non-existent stuff with pytest.raises(AssertionError) as e: Template('{{ foo }}').render(context=RequestContext(req('get'))) assert str(e.value) == 'Tried to render non-existent variable foo' # ...but inside if it's fine assert Template('{% if foo %}foo{% endif %}').render( context=RequestContext(req('get'))) == ''
def test_format_html4(): form = Form(fields=dict(foo=Field())) form.bind(request=req('get')) actual = render_template(req('get'), Template('{{form}}'), dict(form=form, )) print(actual) assert '<input id="id_foo" name="foo" type="text" value="">' in actual
class Meta: template = Template(""" <style> .full-path { opacity: 0.0; } tr:hover .full-path { opacity: 0.6; } tr { opacity: 0.4; } tr.included { opacity: 1; } </style> {% include "iommi/table/table.html" %} """) sortable = False row__attrs__class__included = (lambda row, **_: row.included) page_size = None
def test_errors_rendering_template(): form = Form(errors__template=Template('foo')).bind(request=req('get')) form.add_error('foo') form.add_error('bar') assert form.errors assert form.errors.__html__() == 'foo'
class MyPage(Page): part1 = Template('Template: {{foo}}\n') part2 = html.div(template=Template('Template2: {{foo}}')) class Meta: context__foo = 'foo'
def test_render_template(): actual = render_template(req('get'), Template('{{foo}}'), dict(foo=1)) print(actual) assert type(actual) == SafeText
def test_format_html3(): assert render_template( req('get'), Template('{{foo}}'), dict(foo=format_html('{}', format_html( '<a href="foo">foo</a>')))) == '<a href="foo">foo</a>'
def test_template(): menu = Menu( template=Template('{{ menu.sub_menu.foo.display_name }}'), sub_menu=dict(foo=MenuItem()) ).bind(request=req('get')) assert menu.__html__() == 'Foo'
def test_template(): assert Action(template=Template('{{action.group}}'), group='foo').bind(request=None).__html__() == 'foo'
def test_errors_rendering_template(): errors = Errors(parent=None, errors={'foo', 'bar'}, template=Template('foo')) assert errors assert errors.__html__() == 'foo'