mirror of
https://github.com/askama-rs/askama.git
synced 2025-10-02 07:20:55 +00:00
79 lines
1.6 KiB
Rust
79 lines
1.6 KiB
Rust
#[macro_use]
|
|
extern crate askama;
|
|
|
|
use askama::Template;
|
|
|
|
#[derive(Template)]
|
|
#[template(path = "base.html")]
|
|
struct BaseTemplate<'a> {
|
|
title: &'a str,
|
|
}
|
|
|
|
#[derive(Template)]
|
|
#[template(path = "child.html")]
|
|
struct ChildTemplate<'a> {
|
|
_parent: BaseTemplate<'a>,
|
|
}
|
|
|
|
#[test]
|
|
fn test_use_base_directly() {
|
|
let t = BaseTemplate { title: "Foo" };
|
|
assert_eq!(t.render().unwrap(), "Foo\n\nFoo\nCopyright 2017");
|
|
}
|
|
|
|
#[test]
|
|
fn test_simple_extends() {
|
|
let t = ChildTemplate { _parent: BaseTemplate { title: "Bar" } };
|
|
assert_eq!(
|
|
t.render().unwrap(),
|
|
"Bar\n(Bar) Content goes here\nFoo\nCopyright 2017"
|
|
);
|
|
}
|
|
|
|
|
|
pub mod parent {
|
|
use askama::Template;
|
|
#[derive(Template)]
|
|
#[template(path = "base.html")]
|
|
pub struct BaseTemplate<'a> {
|
|
pub title: &'a str,
|
|
}
|
|
}
|
|
|
|
pub mod child {
|
|
use askama::Template;
|
|
use super::parent::*;
|
|
#[derive(Template)]
|
|
#[template(path = "child.html")]
|
|
pub struct ChildTemplate<'a> {
|
|
pub _parent: BaseTemplate<'a>,
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn test_different_module() {
|
|
let t = child::ChildTemplate { _parent: parent::BaseTemplate { title: "a" } };
|
|
assert_eq!(
|
|
t.render().unwrap(),
|
|
"a\n(a) Content goes here\nFoo\nCopyright 2017"
|
|
);
|
|
}
|
|
|
|
|
|
|
|
#[derive(Template)]
|
|
#[template(path = "nested-base.html")]
|
|
struct NestedBaseTemplate {}
|
|
|
|
#[derive(Template)]
|
|
#[template(path = "nested-child.html")]
|
|
struct NestedChildTemplate {
|
|
_parent: NestedBaseTemplate,
|
|
}
|
|
|
|
#[test]
|
|
fn test_nested_blocks() {
|
|
let t = NestedChildTemplate { _parent: NestedBaseTemplate {} };
|
|
assert_eq!(t.render().unwrap(), "\ndurpy\n");
|
|
}
|