use crate::{BuildExt, actions};
#[test]
fn basic() {
#[actions(picoserve)]
mod page {
use crate as html_form_actions;
const PATH: &str = "/basic";
async fn page_handler() -> impl picoserve::response::IntoResponse {
(
("Content-Type", "text/html; charset=utf-8"),
maud::html! {
@let basic_action::Form { action, a_name } = basic_action::FORM;
form action=(action) {
label { "A" input name=(a_name); }
}
}
.into_string(),
)
}
#[action]
async fn basic_action(#[form_input] a: i32) -> String {
std::format!("a = {a}")
}
pub fn route<R: picoserve::routing::PathRouter>(
router: picoserve::Router<R>,
) -> picoserve::Router<impl picoserve::routing::PathRouter> {
router.route(
PATH,
picoserve::routing::get(page_handler).post_service(ActionsHandler),
)
}
}
picoserve::Router::new().with(page::route);
}
#[test]
fn named_form() {
#[actions(picoserve(form = named_form::NamedForm))]
mod page {
use crate as html_form_actions;
mod named_form {
pub use picoserve::extract::Form as NamedForm;
}
const PATH: &str = "/named_form";
async fn page_handler() -> impl picoserve::response::IntoResponse {
(
("Content-Type", "text/html; charset=utf-8"),
maud::html! {
@let named_form_action::Form { action, a_name } = named_form_action::FORM;
form action=(action) {
label { "A" input name=(a_name); }
}
}
.into_string(),
)
}
#[action]
async fn named_form_action(#[form_input] a: i32) -> String {
std::format!("a = {a}")
}
pub fn route<R: picoserve::routing::PathRouter>(
router: picoserve::Router<R>,
) -> picoserve::Router<impl picoserve::routing::PathRouter> {
router.route(
PATH,
picoserve::routing::get(page_handler).post_service(ActionsHandler),
)
}
}
picoserve::Router::new().with(page::route);
}
#[test]
fn named_handler() {
#[actions(picoserve(handler = NamedActionsHandler))]
mod page {
use crate as html_form_actions;
const PATH: &str = "/named_handler";
async fn page_handler() -> impl picoserve::response::IntoResponse {
(
("Content-Type", "text/html; charset=utf-8"),
maud::html! {
@let named_handler_action::Form { action, a_name } = named_handler_action::FORM;
form action=(action) {
label { "A" input name=(a_name); }
}
}
.into_string(),
)
}
#[action]
async fn named_handler_action(#[form_input] a: i32) -> String {
std::format!("a = {a}")
}
pub fn route<R: picoserve::routing::PathRouter>(
router: picoserve::Router<R>,
) -> picoserve::Router<impl picoserve::routing::PathRouter> {
router.route(
PATH,
picoserve::routing::get(page_handler).post_service(NamedActionsHandler),
)
}
}
picoserve::Router::new().with(page::route);
}