diff --git a/examples/v0/src/main.rs b/examples/v0/src/main.rs
index f86205f..8cb0450 100644
--- a/examples/v0/src/main.rs
+++ b/examples/v0/src/main.rs
@@ -248,7 +248,10 @@ mod tests {
);
assert_eq!(document.select(&selector("script[src=\"/slhx.js\"]")).count(), 1);
assert_eq!(document.select(&selector("main[data-slhx-root=\"docs\"]")).count(), 1);
- assert!(!html.contains("{+="));
+ assert!(
+ document.root_element().text().all(|text| !text.contains("{+=")),
+ "hemplate insertion markers must not leak into rendered text"
+ );
}
// req: html_safety/002 req: view/001 req: test/005
diff --git a/slhx-build/src/lib.rs b/slhx-build/src/lib.rs
index ff886c0..0e1657a 100644
--- a/slhx-build/src/lib.rs
+++ b/slhx-build/src/lib.rs
@@ -1127,22 +1127,32 @@ fn main() {{
#[test]
fn rejects_slhx_resources_inside_unkeyed_for() {
- let base = test_dir("slhx-build-unkeyed-for-test");
- let templates = base.join("templates");
- let out = base.join("out");
- let _ = std::fs::remove_dir_all(&base);
- std::fs::create_dir_all(&templates).unwrap();
- std::fs::write(
- templates.join("todo.heml"),
- r#"{+ todo.title +}"#,
- )
- .unwrap();
+ // req: scope/001
+ for (case, template, resource) in [
+ (
+ "slot",
+ r#"{+ todo.title +}"#,
+ "data-slhx-slot=\"todo_row\"",
+ ),
+ (
+ "handle",
+ r#""#,
+ "data-slhx-handle=\"delete\"",
+ ),
+ ] {
+ let base = test_dir(&format!("slhx-build-unkeyed-for-{case}-test"));
+ let templates = base.join("templates");
+ let out = base.join("out");
+ let _ = std::fs::remove_dir_all(&base);
+ std::fs::create_dir_all(&templates).unwrap();
+ std::fs::write(templates.join("todo.heml"), template).unwrap();
- let err = app().template_dir(&templates).out_dir(&out).run().unwrap_err();
- assert!(err.to_string().contains("inside an h-for without h-key"));
- assert!(err.to_string().contains("data-slhx-slot=\"todo_row\""));
+ let err = app().template_dir(&templates).out_dir(&out).run().unwrap_err();
+ assert!(err.to_string().contains("inside an h-for without h-key"));
+ assert!(err.to_string().contains(resource));
- let _ = std::fs::remove_dir_all(&base);
+ let _ = std::fs::remove_dir_all(&base);
+ }
}
#[test]