Test template include/extend operations
This commit is contained in:
parent
6f7e8850de
commit
bced671daa
|
@ -195,6 +195,22 @@ class Loader(object):
|
||||||
return self.templates[name]
|
return self.templates[name]
|
||||||
|
|
||||||
|
|
||||||
|
class DictLoader(object):
|
||||||
|
"""A template loader that loads from a dictionary."""
|
||||||
|
def __init__(self, dict):
|
||||||
|
self.dict = dict
|
||||||
|
self.templates = {}
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
self.templates = {}
|
||||||
|
|
||||||
|
def load(self, name, parent_path=None):
|
||||||
|
if name not in self.templates:
|
||||||
|
self.templates[name] = Template(self.dict[name], name=name,
|
||||||
|
loader=self)
|
||||||
|
return self.templates[name]
|
||||||
|
|
||||||
|
|
||||||
class _Node(object):
|
class _Node(object):
|
||||||
def each_child(self):
|
def each_child(self):
|
||||||
return ()
|
return ()
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from tornado.template import Template
|
from tornado.template import Template, DictLoader
|
||||||
from tornado.testing import LogTrapTestCase
|
from tornado.testing import LogTrapTestCase
|
||||||
|
|
||||||
class TemplateTest(LogTrapTestCase):
|
class TemplateTest(LogTrapTestCase):
|
||||||
|
@ -6,3 +6,26 @@ class TemplateTest(LogTrapTestCase):
|
||||||
template = Template("Hello {{ name }}!")
|
template = Template("Hello {{ name }}!")
|
||||||
self.assertEqual(template.generate(name="Ben"),
|
self.assertEqual(template.generate(name="Ben"),
|
||||||
"Hello Ben!")
|
"Hello Ben!")
|
||||||
|
|
||||||
|
def test_include(self):
|
||||||
|
loader = DictLoader({
|
||||||
|
"index.html": '{% include "header.html" %}\nbody text',
|
||||||
|
"header.html": "header text",
|
||||||
|
})
|
||||||
|
self.assertEqual(loader.load("index.html").generate(),
|
||||||
|
"header text\nbody text")
|
||||||
|
|
||||||
|
def test_extends(self):
|
||||||
|
loader = DictLoader({
|
||||||
|
"base.html": """\
|
||||||
|
<title>{% block title %}default title{% end %}</title>
|
||||||
|
<body>{% block body %}default body{% end %}</body>
|
||||||
|
""",
|
||||||
|
"page.html": """\
|
||||||
|
{% extends "base.html" %}
|
||||||
|
{% block title %}page title{% end %}
|
||||||
|
{% block body %}page body{% end %}
|
||||||
|
""",
|
||||||
|
})
|
||||||
|
self.assertEqual(loader.load("page.html").generate(),
|
||||||
|
"<title>page title</title>\n<body>page body</body>\n")
|
||||||
|
|
Loading…
Reference in New Issue