Files
hemx/examples/kanban/src/lib.rs
T
slhx agent c33500440e refactor!: rename slhx to hemx
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
2026-06-05 06:52:37 +02:00

79 lines
2.1 KiB
Rust

#[hemx::surface]
pub mod ui {}
#[cfg(test)]
mod tests {
use super::ui::{board, board_card};
use hemplate::Hemplate;
use scraper::{Html, Selector};
use hemx::IntoEffect;
use hemx_test::inspect;
#[derive(Hemplate)]
#[hemplate = "partials"]
struct BoardColumns {
columns: Vec<String>,
}
#[allow(dead_code)]
#[derive(Clone, Debug)]
#[hemx::form("create_card")]
struct CreateCard {
title: String,
column: String,
}
// req: examples/001 req: codegen/002 req: list/003
#[test]
fn kanban_board_updates_generated_slot() {
fn render_board() -> impl IntoEffect {
board::board.put(&empty_board())
}
let effect = inspect(render_board());
assert!(effect.updates_html(board::board));
}
// req: html_safety/002 req: view/001 req: test/005
#[test]
fn kanban_board_test_payload_is_rendered_by_a_hemplate_view() {
let html = super::ui::render(&empty_board());
let document = Html::parse_fragment(html.as_str());
assert_eq!(document.select(&selector(".columns")).count(), 1);
}
fn empty_board() -> BoardColumns {
// req: html_safety/002 req: view/001
BoardColumns {
columns: Vec::new(),
}
}
fn selector(value: &str) -> Selector {
Selector::parse(value).expect("test selector parses")
}
// req: examples/001 req: form/001 req: form/004 req: form/006 req: derive_handler/003
#[test]
fn kanban_form_handler_is_checked_against_hemplate_form() {
#[hemx::handler]
fn create_card(_form: hemx::Form<CreateCard>) -> impl IntoEffect {
board::notice.text("queued")
}
let effect = inspect(create_card(CreateCard::FORM));
assert!(effect.updates_text(board::notice));
}
// req: examples/001 req: form/002 req: codegen/003
#[test]
fn kanban_template_exports_form_and_card_handles() {
assert_ne!(board::create_card.id(), board_card::move_right.id());
assert_eq!(
board::create_card_form.field("title").resource,
board::create_card_form.id()
);
}
}