#![cfg(feature = "web")]
use actix_web::{test::TestRequest, HttpMessage};
use road_runner_common::middleware::RequestId;
use road_runner_common::response::ApiResponse;
use road_runner_common::web::{request_id, ApiResponseActixExt};
#[test]
fn request_id_reads_extension_when_present() {
let req = TestRequest::default().to_http_request();
req.extensions_mut().insert(RequestId("rid-123".to_string()));
let id = request_id(&req);
assert_eq!(id, "rid-123");
}
#[test]
fn request_id_generates_uuid_when_missing() {
let req = TestRequest::default().to_http_request();
let id = request_id(&req);
assert!(uuid::Uuid::parse_str(&id).is_ok());
}
#[test]
fn api_response_actix_ext_uses_request_id_for_ok_and_empty() {
let req = TestRequest::default().to_http_request();
req.extensions_mut().insert(RequestId("rid-ext".to_string()));
let ok = ApiResponse::ok_from_req(&req, 42);
let empty = ApiResponse::empty_ok_from_req(&req);
assert_eq!(ok.data, Some(42));
assert_eq!(ok.meta.request_id, "rid-ext");
assert!(empty.data.is_none());
assert_eq!(empty.meta.request_id, "rid-ext");
}