diff --git a/examples/kanban/src/lib.rs b/examples/kanban/src/lib.rs index 7c9d597..8a9923e 100644 --- a/examples/kanban/src/lib.rs +++ b/examples/kanban/src/lib.rs @@ -15,6 +15,14 @@ mod tests { columns: Vec, } + #[allow(dead_code)] + #[derive(Clone, Debug)] + #[slhx::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() { @@ -48,6 +56,20 @@ mod tests { 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() { + #[slhx::handler] + fn create_card(_form: slhx::Form) -> impl IntoEffect { + ui::board::slots::notice.text("queued") + } + + let effect = inspect(create_card(ui::board::forms::create_card.typed::())); + + assert!(effect.has_slot(ui::board::slots::notice)); + assert!(matches!(effect.ops(), [Effect::Put { payload: Payload::Text(_), .. }])); + } + // req: examples/001 req: form/002 req: codegen/003 #[test] fn kanban_template_exports_form_and_card_handles() {