From bce6341e69b318937465b2af9f8ce80f01e0938b Mon Sep 17 00:00:00 2001 From: slhx agent Date: Mon, 25 May 2026 22:01:17 +0200 Subject: [PATCH] refactor(techdemo): render test metric with hemplate Replace the techdemo generated-slot test's inline raw HTML payload with a hemplate partial-rendered view. req: html_safety/002 req: view/001 --- examples/techdemo/src/lib.rs | 18 +++++++++++++++++- .../templates/partials/fast_metric.heml | 1 + 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 examples/techdemo/templates/partials/fast_metric.heml diff --git a/examples/techdemo/src/lib.rs b/examples/techdemo/src/lib.rs index 0e557cb..09710a5 100644 --- a/examples/techdemo/src/lib.rs +++ b/examples/techdemo/src/lib.rs @@ -4,15 +4,22 @@ pub mod ui {} #[cfg(test)] mod tests { use super::ui; + use hemplate::Hemplate; use slhx::{IntoEffect, SafeHtml}; use slhx_test::inspect; + #[derive(Hemplate)] + #[hemplate = "partials"] + struct FastMetric { + label: &'static str, + } + // req: examples/001 req: codegen/002 req: public_api/001 #[test] fn techdemo_uses_generated_slots_for_multi_target_updates() { fn update() -> impl IntoEffect { ( - ui::control_center::slots::hero_metrics.html(SafeHtml::trusted("fast")), + ui::control_center::slots::hero_metrics.html(render_fast_metric("fast")), ui::control_center::slots::notice.text("typed"), ) } @@ -22,6 +29,15 @@ mod tests { assert!(batch.has_slot(ui::control_center::slots::notice)); } + fn render_fast_metric(label: &'static str) -> SafeHtml { + // req: html_safety/002 req: view/001 + SafeHtml::trusted( + FastMetric { label } + .render() + .expect("techdemo fast metric renders"), + ) + } + // req: examples/001 req: form/002 req: codegen/003 #[test] fn techdemo_exports_form_and_interaction_handles() { diff --git a/examples/techdemo/templates/partials/fast_metric.heml b/examples/techdemo/templates/partials/fast_metric.heml new file mode 100644 index 0000000..80bd5f0 --- /dev/null +++ b/examples/techdemo/templates/partials/fast_metric.heml @@ -0,0 +1 @@ +{+ self.label +}