c33500440e
Rename the tracked product identity, crate/package names, Rust paths/macros, generated artifacts, runtime files, public attributes, examples, docs, requirements, and tests from slhx to hemx without compatibility shims. Verified with cargo run -p hemx-xtask -- test, cargo test -p hemx-derive --test compile_fail, cargo test -p hemx-js, cargo test -p hemx-axum, cargo test -p hemx-v0-examples, cargo check --workspace, redgate list, redgate refs, redgate health --strict, git diff --check, and git grep/ls-files legacy-name audits. req: misc/001 req: codegen/001 req: component/004 req: runtime/001
74 lines
2.0 KiB
Rust
74 lines
2.0 KiB
Rust
#[hemx::surface]
|
|
pub mod ui {}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use super::ui::control_center::{hero_metrics, launch_work, launch_work_form, notice};
|
|
use super::ui::issue_card::advance_work;
|
|
use super::ui::issue_lane::events as lane_events;
|
|
use hemplate::Hemplate;
|
|
use hemx::IntoEffect;
|
|
use hemx_test::inspect;
|
|
|
|
#[derive(Hemplate)]
|
|
#[hemplate = "partials"]
|
|
struct FastMetric {
|
|
label: &'static str,
|
|
}
|
|
|
|
#[allow(dead_code)]
|
|
#[derive(Clone, Debug)]
|
|
#[hemx::form("launch_work")]
|
|
struct LaunchWork {
|
|
title: String,
|
|
lane: String,
|
|
impact: Option<u8>,
|
|
}
|
|
|
|
// req: examples/001 req: codegen/002 req: public_api/001
|
|
#[test]
|
|
fn techdemo_uses_generated_slots_for_multi_target_updates() {
|
|
fn update() -> impl IntoEffect {
|
|
(
|
|
hero_metrics.put(&FastMetric { label: "fast" }),
|
|
notice.text("typed"),
|
|
)
|
|
}
|
|
|
|
let batch = inspect(update());
|
|
assert!(batch.has_target(hero_metrics));
|
|
assert!(batch.has_target(notice));
|
|
}
|
|
|
|
// req: examples/001 req: form/001 req: form/004 req: form/006 req: derive_handler/003
|
|
#[test]
|
|
fn techdemo_form_handler_is_checked_against_hemplate_form() {
|
|
#[hemx::handler]
|
|
fn launch_work(_form: hemx::Form<LaunchWork>) -> impl IntoEffect {
|
|
notice.text("queued")
|
|
}
|
|
|
|
let batch = inspect(launch_work(LaunchWork::FORM));
|
|
|
|
assert!(batch.updates_text(notice));
|
|
}
|
|
|
|
// req: examples/001 req: form/002 req: codegen/003
|
|
#[test]
|
|
fn techdemo_exports_form_and_interaction_handles() {
|
|
assert_ne!(launch_work.id(), advance_work.id());
|
|
assert_eq!(
|
|
launch_work_form.field("title").resource,
|
|
launch_work_form.id()
|
|
);
|
|
}
|
|
|
|
// req: codegen/006
|
|
#[test]
|
|
fn techdemo_exports_generated_event_constants() {
|
|
assert_eq!(lane_events::drop.as_str(), "drop");
|
|
let event = inspect(lane_events::drop.emit("card-1"));
|
|
assert!(event.emits("drop", "card-1"));
|
|
}
|
|
}
|