use axum_test::TestResponse;
pub fn assert_hx_redirect(response: &TestResponse, expected_path: &str) {
let header = response
.headers()
.get("HX-Redirect")
.expect("HX-Redirect header not found");
let actual = header.to_str().expect("Invalid HX-Redirect header value");
assert_eq!(
actual, expected_path,
"Expected HX-Redirect to {expected_path}, got {actual}"
);
}
pub fn assert_hx_trigger(response: &TestResponse, expected_event: &str) {
let header = response
.headers()
.get("HX-Trigger")
.expect("HX-Trigger header not found");
let actual = header.to_str().expect("Invalid HX-Trigger header value");
assert!(
actual.contains(expected_event),
"Expected HX-Trigger to contain '{expected_event}', got '{actual}'"
);
}
pub fn assert_hx_reswap(response: &TestResponse, expected_swap: &str) {
let header = response
.headers()
.get("HX-Reswap")
.expect("HX-Reswap header not found");
let actual = header.to_str().expect("Invalid HX-Reswap header value");
assert_eq!(
actual, expected_swap,
"Expected HX-Reswap to be {expected_swap}, got {actual}"
);
}
pub fn assert_hx_retarget(response: &TestResponse, expected_target: &str) {
let header = response
.headers()
.get("HX-Retarget")
.expect("HX-Retarget header not found");
let actual = header.to_str().expect("Invalid HX-Retarget header value");
assert_eq!(
actual, expected_target,
"Expected HX-Retarget to be {expected_target}, got {actual}"
);
}
pub fn assert_hx_push_url(response: &TestResponse, expected_url: Option<&str>) {
let header = response
.headers()
.get("HX-Push-Url")
.expect("HX-Push-Url header not found");
let actual = header.to_str().expect("Invalid HX-Push-Url header value");
if let Some(url) = expected_url {
assert_eq!(
actual, url,
"Expected HX-Push-Url to be {url}, got {actual}"
);
} else {
assert_eq!(
actual, "false",
"Expected HX-Push-Url to be false, got {actual}"
);
}
}