Add test for deep inheritance

This commit is contained in:
Dirkjan Ochtman 2018-06-22 16:03:53 +02:00
parent 21edd48917
commit 3d75bcfe78
4 changed files with 135 additions and 0 deletions

View File

@ -0,0 +1,14 @@
{% import "macro.html" as libb %}
<html>
<head>
{% block head %}
<style></style>
{% endblock %}
</head>
<body>
{% block body %}
{% call libb::thrice("nav") %}
Copyright {{ year }}
{% endblock %}
</body>
</html>

View File

@ -0,0 +1,10 @@
{% extends "deep-mid.html" %}
{% import "macro.html" as libk %}
{% block head %}
<script></script>
{% endblock %}
{% block content %}
{% call libk::thrice(item) %}
{% endblock %}

View File

@ -0,0 +1,19 @@
{% extends "deep-base.html" %}
{% import "macro.html" as libm %}
{% block head %}
{{ title }}
{% endblock %}
{% block body %}
<div id="wrap">
<section id="content">
{% block content %}
No content found
{% endblock %}
</section>
<section id="nav">
{% call libm::thrice("nav") %}
</section>
</div>
{% endblock %}

View File

@ -79,3 +79,95 @@ fn test_nested_blocks() {
};
assert_eq!(t.render().unwrap(), "\ndurpy\n");
}
#[derive(Template)]
#[template(path = "deep-base.html")]
struct DeepBaseTemplate {
year: u16,
}
#[derive(Template)]
#[template(path = "deep-mid.html")]
struct DeepMidTemplate {
_parent: DeepBaseTemplate,
title: String,
}
#[derive(Template)]
#[template(path = "deep-kid.html")]
struct DeepKidTemplate {
_parent: DeepMidTemplate,
item: String,
}
#[test]
fn test_deep() {
let t = DeepKidTemplate {
_parent: DeepMidTemplate {
_parent: DeepBaseTemplate {
year: 2018,
},
title: "Test".into(),
},
item: "Foo".into(),
};
assert_eq!(t.render().unwrap(), "
<html>
<head>
<script></script>
</head>
<body>
<div id=\"wrap\">
<section id=\"content\">
Foo Foo Foo
</section>
<section id=\"nav\">
nav nav nav
</section>
</div>
</body>
</html>");
assert_eq!(t._parent.render().unwrap(), "
<html>
<head>
Test
</head>
<body>
<div id=\"wrap\">
<section id=\"content\">
No content found
</section>
<section id=\"nav\">
nav nav nav
</section>
</div>
</body>
</html>");
assert_eq!(t._parent._parent.render().unwrap(), "
<html>
<head>
<style></style>
</head>
<body>
nav nav nav
Copyright 2018
</body>
</html>");
}