diff --git a/tests/test_1.html b/tests/test_1.html
new file mode 100644
index 0000000..1e1d08d
--- /dev/null
+++ b/tests/test_1.html
@@ -0,0 +1,3 @@
+{% block world %}
+Hello World!
+{% endblock world %}
\ No newline at end of file
diff --git a/tests/test_2.html b/tests/test_2.html
new file mode 100644
index 0000000..e043eb3
--- /dev/null
+++ b/tests/test_2.html
@@ -0,0 +1,3 @@
+{% for i in context %}
+
{{i}}
+{% endfor %}
\ No newline at end of file
diff --git a/tests/test_3.html b/tests/test_3.html
new file mode 100644
index 0000000..fd06d9c
--- /dev/null
+++ b/tests/test_3.html
@@ -0,0 +1,3 @@
+{% block garbage %}
+{% if this works then minijinja renders garbage %}
+{{ should fail }}
\ No newline at end of file
diff --git a/tests/test_route_init.rs b/tests/test_route_init.rs
index 0ddb21b..425e3d9 100644
--- a/tests/test_route_init.rs
+++ b/tests/test_route_init.rs
@@ -8,15 +8,18 @@ mod tests {
use loco_rs::app::Initializer;
use loco_rs::controller::views::ViewRenderer;
use loco_rs::tests_cfg;
+ use minijinja::Environment;
+ use serde::Serialize;
use serde_json::Value;
#[tokio::test]
async fn test_after_routes_configured() {
let router = Router::new().route("/", get(|| async { "Hello, World!" }));
let ctx = tests_cfg::app::get_app_context().await;
+ let env: Environment = Environment::new();
let initializer =
- MinijinjaViewEngineConfigurableInitializer::new("tests".to_string(), None);
+ MinijinjaViewEngineConfigurableInitializer::new("tests".to_string(), Some(env));
// Call the after_routes function
let result = initializer.after_routes(router, &ctx).await;
@@ -24,6 +27,16 @@ mod tests {
assert!(result.is_ok(), "result was NOT OK: {:?}", result);
}
+ #[tokio::test]
+ async fn test_after_routes_configured_fails() {
+ let router = Router::new().route("/", get(|| async { "Hello, World!" }));
+ let ctx = tests_cfg::app::get_app_context().await;
+ let initializer =
+ MinijinjaViewEngineConfigurableInitializer::new("does_not_exist".to_string(), None);
+ let result = initializer.after_routes(router, &ctx).await;
+ assert!(result.is_err(), "result was unexpectedly OK: {:?}", result);
+ }
+
#[tokio::test]
async fn test_after_routes_std() {
let router = Router::new().route("/", get(|| async { "Hello, World!" }));
@@ -38,8 +51,40 @@ mod tests {
#[test]
fn test_rendering() {
let jinja: MinijinjaView = MinijinjaView::build().unwrap();
- let result = jinja.render("test.html", Value::default());
+ let result = jinja.render("test_1.html", Value::default());
assert!(result.is_ok(), "result was NOT OK: {:?}", result);
- assert_eq!(result.unwrap(), "\r\nHello World!\r\n");
+ assert_eq!(
+ result.unwrap().replace("\r", "").replace("\n", ""),
+ "Hello World!"
+ );
+ }
+
+ #[derive(Serialize)]
+ struct ReturnContext {
+ context: Vec,
+ }
+
+ #[test]
+ fn test_rendering_html() {
+ let jinja: MinijinjaView = MinijinjaView::build().unwrap();
+ let result = jinja.render_html(
+ "test_2.html",
+ ReturnContext {
+ context: vec![1, 2, 3],
+ },
+ );
+ assert!(result.is_ok(), "result was NOT OK: {:?}", result);
+ let content: String = result.expect("Should never fail").0;
+ assert_eq!(
+ content.replace("\r", "").replace("\n", ""),
+ "123"
+ );
+ }
+
+ #[test]
+ fn test_rendering_garbage() {
+ let jinja: MinijinjaView = MinijinjaView::build().unwrap();
+ let result = jinja.render("test_3.html", Value::default());
+ assert!(result.is_err(), "result was unexpectedly OK: {:?}", result);
}
}