test(v0): check auth and wizard form handlers

Annotate the v0 auth and wizard form models with #[slhx::form], make their templates expose checked form fields, and add handler smoke tests over the generated form resources.

req: form/001

req: form/004

req: form/006

req: derive_handler/003
This commit is contained in:
slhx agent
2026-05-25 23:59:24 +02:00
parent d67478fe36
commit 1b255e593d
3 changed files with 33 additions and 2 deletions
+30
View File
@@ -21,11 +21,13 @@ mod tests {
}
#[derive(Clone, Debug)]
#[slhx::form("wizard_input")]
struct WizardInput {
step: u8,
}
#[derive(Clone, Debug)]
#[slhx::form("credentials")]
struct Credentials {
email: String,
password: String,
@@ -93,6 +95,20 @@ mod tests {
)
}
// req: examples/001 req: form/001 req: form/004 req: form/006 req: derive_handler/003
#[test]
fn wizard_form_handler_is_checked_against_hemplate_form() {
#[slhx::handler]
fn next_step(_form: slhx::Form<WizardInput>) -> impl IntoEffect {
ui::slots::wizard_step.text("queued")
}
let effect = inspect(next_step(ui::forms::wizard_input.typed::<WizardInput>()));
assert!(effect.has_slot(ui::slots::wizard_step));
assert!(matches!(effect.ops(), [Effect::Put { payload: Payload::Text(_), .. }]));
}
// req: examples/001 req: progressive_disclosure/001 req: build/001 req: build/005 req: codegen/004
#[test]
fn wizard_form_swaps_the_current_step() {
@@ -134,6 +150,20 @@ mod tests {
)
}
// req: examples/001 req: form/001 req: form/004 req: form/006 req: derive_handler/003
#[test]
fn auth_form_handler_is_checked_against_hemplate_form() {
#[slhx::handler]
fn login(_form: slhx::Form<Credentials>) -> impl IntoEffect {
ui::slots::login_status.text("queued")
}
let effect = inspect(login(ui::forms::credentials.typed::<Credentials>()));
assert!(effect.has_slot(ui::slots::login_status));
assert!(matches!(effect.ops(), [Effect::Put { payload: Payload::Text(_), .. }]));
}
// req: examples/001 req: progressive_disclosure/001 req: build/001 req: build/005 req: codegen/004
#[test]
fn auth_flow_reads_typed_input_and_updates_status() {