aboutsummaryrefslogtreecommitdiffstats
path: root/testing/tests
diff options
context:
space:
mode:
Diffstat (limited to 'testing/tests')
-rw-r--r--testing/tests/render_in_place.rs39
-rw-r--r--testing/tests/render_with_enums.rs80
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"
+ );
+}