lepros_reactive_axum/tests/test.rs
2024-06-15 11:22:26 +02:00

64 lines
1.5 KiB
Rust

use axum::{
http::{HeaderMap, HeaderValue},
response::IntoResponse,
routing::get,
Json, Router,
};
use axum_test::TestServer;
use http::HeaderName;
use serde_json::json;
async fn demo_expanded_handler(
__parts: ::http::request::Parts,
Json(payload): Json<serde_json::Value>,
) -> impl IntoResponse {
let __runtime = leptos_reactive::create_runtime();
scopeguard::defer!(__runtime.dispose());
{
leptos_reactive::provide_context(__parts);
}
let headers: HeaderMap = ::leptos_reactive_axum::extract().await.unwrap();
assert_eq!(
headers.get("macrosareawesome"),
Some(&HeaderValue::from_static("YehTheyAre"))
);
assert_eq!(payload.as_str(), Some("hello there"));
""
}
#[leptos_reactive_axum::reactive(true)]
async fn handler(headers: HeaderMap, Json(payload): Json<serde_json::Value>) -> impl IntoResponse {
assert_eq!(
headers.get("macrosareawesome"),
Some(&HeaderValue::from_static("YehTheyAre"))
);
assert_eq!(payload.as_str(), Some("hello there"));
""
}
#[tokio::test]
async fn test_handlers() {
let router = Router::new()
.route("/demo", get(demo_expanded_handler))
.route("/", get(handler));
let server = TestServer::new(router).unwrap();
let _ = server
.get("/")
.add_header(
HeaderName::from_static("macrosareawesome"),
HeaderValue::from_static("YehTheyAre"),
)
.json(&json!("hello there"));
let _ = server
.get("/demo")
.add_header(
HeaderName::from_static("macrosareawesome"),
HeaderValue::from_static("YehTheyAre"),
)
.json(&json!("hello there"));
}