コード例 #1
0
    def test_complex2(self):
        loader = MemLoader({
            "base.html": 
"""
<html>
    <header>
        <title><%block title%><% end %></title>
        <body><%block body%><% end %></body>
    </header>
</html>
""",
            "minibase.html": 
"""
<% extends base.html %>
<% block title %>首页<% end %>
""",
            "index.html": 
"""
<% extends minibase.html %>
<% block body %>主体<% end %>
""",
        })
        r = loader.load('index.html').render(users=self.users)
        self.assertEqual(''.join("""
<html>
  <header>
    <title>首页</title>
    <body>主体</body>
  </header>
</html>
""".split()), ''.join(r.split()))
コード例 #2
0
 def test_should_ignore_not_block_tag_if_template_is_extends(self):
     loader = MemLoader({
         "base.html":
         "<title><% block title %><% end %></title>",
         "index.html":
         "<% extends base.html %><p>文本是要忽略的</p><% block title %><b>标题要保留</b><% end %>",
     })
     self.assertEqual('<title><b>标题要保留</b></title>',
                      loader.load("index.html").render())
コード例 #3
0
 def test_block_cover(self):
     loader = MemLoader({
         "base.html":
         "开始<% block title%>标题<% end %><% block body%>主体<% end %>结束",
         "index.html":
         """  <% extends base.html %><% block title%>真正的标题<% end %><% block body%>真正的主体<% end %>""",
     })
     self.assertEqual('  开始真正的标题真正的主体结束',
                      loader.load("index.html").render())
コード例 #4
0
 def test_error_if_block_not_end(self):
     loader = MemLoader({
         'base.html': '<% block title %>标题文本',
         "index.html": '<% extends base.html %>'
     })
     with self.assertRaises(FormatError) as err:
         loader.load('index.html').render()
     self.assertEqual(
         "Missing '<% end %>' for '<% block title %>' on base.html at line 1",
         str(err.exception))
コード例 #5
0
 def test_include_with_customer_variable(self):
     loader = MemLoader({
         "index.html":
         "<ul><% include _partial.html members=users %></ul>",
         "_partial.html":
         """<% for m in members %><li><%= m.name %>|<%= m.age %></li><% end %>""",
     })
     t = loader.load('index.html')
     r = t.render(users=self.users)
     self.assertEqual("<ul><li>露西|20</li><li>Lily|10</li></ul>", r)
コード例 #6
0
 def test_include(self):
     loader = MemLoader({
         "index.html":
         "<ul><% include _partial.html %></ul>",
         "_partial.html":
         """<% for u in users %><li><%= u.name %>|<%= u.age %></li><% end %>""",
     })
     t = loader.load('index.html')
     r = t.render(users=self.users)
     self.assertEqual("<ul><li>露西|20</li><li>Lily|10</li></ul>", r)
コード例 #7
0
 def test_parse_include_error_if_has_a_not_exist_fname(self):
     loader = MemLoader({
         "index.html":
         "<ul><% include not_exist.html %></ul>",
         "_partial.html":
         """<% for m in members %><li><%= m.name %>|<%= m.age %></li><% end %>""",
     })
     with self.assertRaises(FormatError) as err:
         loader.load('index.html').render(users=self.users)
     self.assertEqual("not_exist.html is not exist on index.html at line 1",
                      str(err.exception))
コード例 #8
0
    def test_parse_extends_error_if_not_has_fname(self):
        loader = MemLoader({
            "base.html":
            "开始<% block title%>标题<% end %><% block body%>主体<% end %>结束",
            "index.html":
            """<% extends %><% block title%>真正的标题<% end %><% block body%>真正的主体<% end %>
""",
        })
        with self.assertRaises(FormatError) as err:
            loader.load('index.html').render()
        self.assertEqual(
            "Missing template file path for '<% extends %>' on index.html at line 1",
            str(err.exception))
コード例 #9
0
    def test_complex3(self):
        loader = MemLoader({
            "base.html": 
"""
<html>
    <header>
        <title><%block title%><% end %></title>
        <body><%block body%><% end %></body>
    </header>
</html>
""",
            "minibase.html": 
"""
<% extends base.html %>
<% block title %>首页<% end %>
""",
            "index.html": 
"""
<% extends minibase.html %>
<% block title %>首页<% end %>
<% block body %><% include user_body.html %><% end %>
""",
            "user_body_base.html": """
<ul>
    <% block users %> <% end %>
</ul>
""",
            "user_body.html": """
<% extends user_body_base.html %>
<% block users %>
  <% for u in users%>
      <% include user.html %>
  <% end %>
<% end %>
""",
            "user.html": """<li><%= u.name %>|<%= u.age %></li>"""
        })
        r = loader.load('index.html').render(users=self.users)
        self.assertEqual(''.join("""
<html>
  <header>
    <title>首页</title>
    <body>
      <ul>
        <li>露西|20</li>
        <li>Lily|10</li>
      </ul>
    </body>
  </header>
</html>
""".split()), ''.join(r.split()))
コード例 #10
0
    def test_parse_extends_error_if_extends_does_not_begin_of_template_content(
            self):
        loader = MemLoader({
            "base.html":
            "开始<% block title%>标题<% end %><% block body%>主体<% end %>结束",
            "index.html":
            """extends前面有内容是要出错的
<% extends base.html%>""",
        })
        with self.assertRaises(FormatError) as err:
            loader.load('index.html').render()
        self.assertEqual(
            "'<% extends base.html %>' must begin of the template content on index.html at line 2",
            str(err.exception))
コード例 #11
0
 def test_mem_load_build_path(self):
     self.assertEqual(
         "parent.html",
         MemLoader({
             "parent.html": "aaaaaa"
         }).build_path("parent.html"))