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]
|
||||
|
||||
|
||||
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):
|
||||
def each_child(self):
|
||||
return ()
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
from tornado.template import Template
|
||||
from tornado.template import Template, DictLoader
|
||||
from tornado.testing import LogTrapTestCase
|
||||
|
||||
class TemplateTest(LogTrapTestCase):
|
||||
|
@ -6,3 +6,26 @@ class TemplateTest(LogTrapTestCase):
|
|||
template = Template("Hello {{ name }}!")
|
||||
self.assertEqual(template.generate(name="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