diff options
| author | 2019-03-05 22:47:17 +0100 | |
|---|---|---|
| committer | 2019-03-18 10:19:48 +0100 | |
| commit | 5b2e9cf99274827079f70f10966f6284d075e624 (patch) | |
| tree | 0ad69e32d5aa59defb1dfbdc1e684ca2de8d608d /testing/tests | |
| parent | 84d81e101bc706cfe85320df39c1f32828225153 (diff) | |
| download | askama-5b2e9cf99274827079f70f10966f6284d075e624.tar.gz askama-5b2e9cf99274827079f70f10966f6284d075e624.tar.bz2 askama-5b2e9cf99274827079f70f10966f6284d075e624.zip | |
Documenting feature render in template
Diffstat (limited to '')
| -rw-r--r-- | testing/tests/render_in_place.rs | 39 | ||||
| -rw-r--r-- | testing/tests/render_with_enums.rs | 80 | 
2 files changed, 119 insertions, 0 deletions
| diff --git a/testing/tests/render_in_place.rs b/testing/tests/render_in_place.rs new file mode 100644 index 0000000..3d1b91e --- /dev/null +++ b/testing/tests/render_in_place.rs @@ -0,0 +1,39 @@ +use askama::Template; +#[derive(Template)] +#[template(path = "render_in_place.html")] +struct RenderInPlace<'a> { +    s1: SectionOne<'a>, +    s2: SectionTwo<'a>, +    s3: &'a Vec<SectionOne<'a>>, +} + +#[derive(Template)] +#[template(path = "render_in_place_sec1.html")] +struct SectionOne<'a> { +    a: &'a str, +    b: &'a str, +} + +#[derive(Template)] +#[template(path = "render_in_place_sec2.html")] +struct SectionTwo<'a> { +    c: &'a str, +    d: &'a str, +} + +#[test] +fn test_render_in_place() { +    let t = RenderInPlace { +        s1: SectionOne { a: "A", b: "B" }, +        s2: SectionTwo { c: "C", d: "D" }, +        s3: &vec![ +            SectionOne { a: "1", b: "2" }, +            SectionOne { a: "A", b: "B" }, +            SectionOne { a: "a", b: "b" }, +        ], +    }; +    assert_eq!( +        t.render().unwrap(), +       "Section 1: A=A\nB=B\nSection 2: C=C\nD=D\nSection 3 for:\n* A=1\nB=2\n* A=A\nB=B\n* A=a\nB=b\n" +    ); +} diff --git a/testing/tests/render_with_enums.rs b/testing/tests/render_with_enums.rs new file mode 100644 index 0000000..fb97e54 --- /dev/null +++ b/testing/tests/render_with_enums.rs @@ -0,0 +1,80 @@ +use askama::Template; + +enum SectionOneType<'a>{ +    Empty(TEmpty), +    Simple(TSecOneSimple<'a>), +    Full(TSecOneFull<'a>) +} +impl<'a> SectionOneType<'a> { +    pub fn render(&self) -> askama::Result<String>{ +        match self { +            SectionOneType::Empty(v) => v.render(), +            SectionOneType::Simple(v) => v.render(), +            SectionOneType::Full(v) => v.render(), +        } +    } +} +enum SectionTwoFormat<'a>{ +    Html(TSecTwoHtml<'a>), +    Text(TSecTwoText<'a>), +} +impl<'a> SectionTwoFormat<'a> { +    pub fn render(&self) -> askama::Result<String>{ +        match self { +            SectionTwoFormat::Html(v) => v.render(), +            SectionTwoFormat::Text(v) => v.render(), +        } +    } +} +#[derive(Template)] +#[template(path = "render_in_place.html")] +struct RenderInPlace<'a> { +    s1: SectionOneType<'a>, +    s2: SectionTwoFormat<'a>, +    s3: &'a Vec<SectionOneType<'a>> +} + +#[derive(Template)] +#[template(source = "", ext = "txt")] +struct TEmpty { +} +#[derive(Template)] +#[template(source = "{{ a }}", ext = "txt")] +struct TSecOneSimple<'a> { +    a: &'a str +} +#[derive(Template)] +#[template(source = "{{ a }}, {{ b }}", ext = "txt")] +struct TSecOneFull<'a> { +    a: &'a str, +    b: &'a str +} + +#[derive(Template)] +#[template(source = "<span>{{ c }}</span><p>{{ d }}</p>", ext = "html")] +struct TSecTwoHtml<'a> { +    c: &'a str, +    d: &'a str, +} +#[derive(Template)] +#[template(source = "{{ c }}, {{ d }}", ext = "txt")] +struct TSecTwoText<'a> { +    c: &'a str, +    d: &'a str, +} + +#[test] +fn test_render_with_enums() { +    let t = RenderInPlace { +        s1: SectionOneType::Empty(TEmpty {}), +        s2: SectionTwoFormat::Html(TSecTwoHtml { c: "C", d: "D" }), +        s3: &vec![SectionOneType::Empty(TEmpty {}), +                  SectionOneType::Simple(TSecOneSimple { a: "A" }), +                  SectionOneType::Full(TSecOneFull { a: "A", b: "B" }), +        ] +    }; +    assert_eq!( +        t.render().unwrap(), +       "Section 1: \nSection 2: <span>C</span><p>D</p>\nSection 3 for:\n* \n* A\n* A, B\n" +    ); +} | 
