code: tests should be 100% in my mind, but tarpaulin says 94. good enough.

This commit is contained in:
Gabor Körber 2025-01-14 18:54:55 +01:00
parent f6a2c892cd
commit 5205c8f38f
4 changed files with 57 additions and 3 deletions

3
tests/test_1.html Normal file
View File

@ -0,0 +1,3 @@
{% block world %}
Hello World!
{% endblock world %}

3
tests/test_2.html Normal file
View File

@ -0,0 +1,3 @@
{% for i in context %}
<li>{{i}}<li>
{% endfor %}

3
tests/test_3.html Normal file
View File

@ -0,0 +1,3 @@
{% block garbage %}
{% if this works then minijinja renders garbage %}
{{ should fail }}

View File

@ -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<u8>,
}
#[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", ""),
"<li>1<li><li>2<li><li>3<li>"
);
}
#[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);
}
}