#[cfg(test)]
mod tests {
use crate::test_helpers::*;
#[test]
fn test_bif_var() {
let mut template = match crate::Template::new() {
Ok(tpl) => tpl,
Err(error) => {
println!("Error creating Template: {}", error);
assert!(false);
return;
}
};
template.merge_schema_str(SCHEMA).unwrap();
template.set_src_str("<div>{:;__test-nts:}</div>");
let result = template.render();
assert!(!template.has_error());
assert_eq!(result, "<div>nts</div>");
}
#[test]
fn test_bif_var_arr() {
let mut template = match crate::Template::new() {
Ok(tpl) => tpl,
Err(error) => {
println!("Error creating Template: {}", error);
assert!(false);
return;
}
};
template.merge_schema_str(SCHEMA).unwrap();
template
.set_src_str("<div>{:;__test-obj-nts->level1-obj->level2-obj->level3-arr->0:}</div>");
let result = template.render();
assert!(!template.has_error());
assert_eq!(result, "<div>one</div>");
}
#[test]
fn test_bif_var_dynamic_evaluation() {
let mut template = match crate::Template::new() {
Ok(tpl) => tpl,
Err(error) => {
println!("Error creating Template: {}", error);
assert!(false);
return;
}
};
template.merge_schema_str(SCHEMA).unwrap();
template.set_src_str("<div>{:;__hello-{:;__test-nts:}:}</div>");
let result = template.render();
assert!(!template.has_error());
assert_eq!(result, "<div>Hello nts</div>");
}
#[test]
fn test_bif_var_error_dynamic_evaluation() {
let mut template = match crate::Template::new() {
Ok(tpl) => tpl,
Err(error) => {
println!("Error creating Template: {}", error);
assert!(false);
return;
}
};
template.merge_schema_str(SCHEMA).unwrap();
template.set_src_str("<div>{:;{:;__ref-hello-nts:}:}</div>");
let result = template.render();
assert!(template.has_error());
assert_eq!(result, "<div></div>");
}
#[test]
fn test_bif_var_undefined() {
let mut template = match crate::Template::new() {
Ok(tpl) => tpl,
Err(error) => {
println!("Error creating Template: {}", error);
assert!(false);
return;
}
};
template.merge_schema_str(SCHEMA).unwrap();
template.set_src_str("<div>{:;__dfhs76tfwq65dhtw563hjknv__:}</div>");
let result = template.render();
assert!(!template.has_error());
assert_eq!(result, "<div></div>");
}
#[test]
fn test_bif_var_upline() {
let mut template = match crate::Template::new() {
Ok(tpl) => tpl,
Err(error) => {
println!("Error creating Template: {}", error);
assert!(false);
return;
}
};
template.merge_schema_str(SCHEMA).unwrap();
template.set_src_str("| \n {:^;__test-nts:}<div></div>");
let result = template.render();
assert!(!template.has_error());
assert_eq!(result, "|nts<div></div>");
}
#[test]
fn test_bif_var_filter() {
let mut template = match crate::Template::new() {
Ok(tpl) => tpl,
Err(error) => {
println!("Error creating Template: {}", error);
assert!(false);
return;
}
};
template.merge_schema_str(SCHEMA).unwrap();
template.set_src_str("<div>{:&;escape:}</div>");
let result = template.render();
assert!(!template.has_error());
assert_eq!(
result,
"<div><>&"'/{}</div>"
);
}
#[test]
fn test_bif_var_filter_double() {
let mut template = match crate::Template::new() {
Ok(tpl) => tpl,
Err(error) => {
println!("Error creating Template: {}", error);
assert!(false);
return;
}
};
template.merge_schema_str(SCHEMA).unwrap();
template.set_src_str("<div>{:&;double_escape:}</div>");
let result = template.render();
assert!(!template.has_error());
assert_eq!(
result,
"<div><>&"'/{}</div>"
);
}
#[test]
fn test_bif_var_filter_context() {
let mut template = match crate::Template::new() {
Ok(tpl) => tpl,
Err(error) => {
println!("Error creating Template: {}", error);
assert!(false);
return;
}
};
template.merge_schema_str(SCHEMA).unwrap();
template.set_src_str("<div>{:;CONTEXT->GET->escape:}</div>");
let result = template.render();
assert!(!template.has_error());
assert_eq!(
result,
"<div><>&"'/{}</div>"
);
}
#[test]
fn test_bif_var_filter_negate() {
let mut template = match crate::Template::new() {
Ok(tpl) => tpl,
Err(error) => {
println!("Error creating Template: {}", error);
assert!(false);
return;
}
};
template.merge_schema_str(SCHEMA).unwrap();
template.set_src_str("<div>{:&!;escape:}</div>");
let result = template.render();
assert!(!template.has_error());
assert_eq!(result, "<div><>&\"'/{}</div>");
}
#[test]
fn test_bif_var_filter_all() {
let schema = r#"
{
"config": {
"filter_all": true
}
}
"#
.trim();
let mut template = match crate::Template::new() {
Ok(tpl) => tpl,
Err(error) => {
println!("Error creating Template: {}", error);
assert!(false);
return;
}
};
template.merge_schema_str(SCHEMA).unwrap();
template.merge_schema_str(schema).unwrap();
template.set_src_str("<div>{:;escape:}</div>");
let result = template.render();
assert!(!template.has_error());
assert_eq!(
result,
"<div><>&"'/{}</div>"
);
}
#[test]
fn test_bif_var_filter_all_negate() {
let schema = r#"
{
"config": {
"filter_all": true
}
}
"#
.trim();
let mut template = match crate::Template::new() {
Ok(tpl) => tpl,
Err(error) => {
println!("Error creating Template: {}", error);
assert!(false);
return;
}
};
template.merge_schema_str(SCHEMA).unwrap();
template.merge_schema_str(schema).unwrap();
template.set_src_str("<div>{:!;escape:}</div>");
let result = template.render();
assert!(!template.has_error());
assert_eq!(result, "<div><>&\"'/{}</div>");
}
#[test]
fn test_bif_var_error_scope() {
let mut template = match crate::Template::new() {
Ok(tpl) => tpl,
Err(error) => {
println!("Error creating Template: {}", error);
assert!(false);
return;
}
};
template.merge_schema_str(SCHEMA).unwrap();
template.set_src_str("<div>{:+;__test-nts:}</div>");
let result = template.render();
assert!(template.has_error());
assert_eq!(result, "<div></div>");
}
}