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", ""), + "
  • 1
  • 2
  • 3
  • " + ); + } + + #[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); } }