Test template include/extend operations

This commit is contained in:
Ben Darnell 2011-05-29 16:07:20 -07:00
parent 6f7e8850de
commit bced671daa
2 changed files with 40 additions and 1 deletions

View File

@ -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 ()

View File

@ -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")