yatera 0.3.0

Yet another Tera CLI
Documentation
use std::collections::HashMap;

#[test]
fn renders_borrowed_variables_with_extra_filters() {
    let vars = HashMap::from([("name".to_owned(), "Hello World")]);
    let output: String = yatera::render("{{ name | snake_case }}", &vars).unwrap();
    assert_eq!(output, "hello_world");
    assert_eq!(vars["name"], "Hello World");
}

#[test]
fn renders_structured_values_and_preserves_output() {
    let vars = HashMap::from([
        ("user".to_owned(), serde_json::json!({"name": "<Ada>"})),
        ("enabled".to_owned(), serde_json::json!(true)),
        ("numbers".to_owned(), serde_json::json!([1, 2])),
    ]);
    assert_eq!(
        yatera::render(
            "{% if enabled %}{{ user.name }}:{% for n in numbers %}{{ n + 1 }}{% endfor %}{% endif %}\n",
            &vars,
        ).unwrap(),
        "<Ada>:23\n",
    );
    let empty = HashMap::<String, String>::new();
    assert_eq!(yatera::render("", &empty).unwrap(), "");
}

#[test]
fn returns_template_errors() {
    let vars = HashMap::<String, String>::new();
    assert!(yatera::render("{{", &vars).is_err());
    assert!(yatera::render("{{ missing }}", &vars).is_err());
}