#[cfg(feature = "derive")]
mod auto_registration_tests {
use elif_http::{ElifRequest, ElifResponse, HttpResult};
use elif_http::controller::{ElifController, ControllerRoute};
use elif_http::routing::HttpMethod;
use elif_http_derive::{controller, get};
#[derive(Debug)]
pub struct TrueAutoTestController;
impl TrueAutoTestController {
pub fn new() -> Self {
Self
}
}
#[controller("/true-auto")]
impl TrueAutoTestController {
#[get("")]
pub async fn index(&self, _req: ElifRequest) -> HttpResult<ElifResponse> {
Ok(ElifResponse::ok().text("True auto-registration works!"))
}
#[get("/test")]
pub async fn test(&self, _req: ElifRequest) -> HttpResult<ElifResponse> {
Ok(ElifResponse::ok().text("Auto test endpoint"))
}
}
#[test]
fn test_controller_truly_auto_registered() {
let registered_types = elif_http::bootstrap::CONTROLLER_TYPE_REGISTRY.get_registered_types();
println!("All registered controller types: {:?}", registered_types);
assert!(
registered_types.contains(&"TrueAutoTestController".to_string()),
"TrueAutoTestController should be auto-registered by the macro. Found: {:?}",
registered_types
);
let result = elif_http::bootstrap::create_controller("TrueAutoTestController");
assert!(result.is_ok(), "Should be able to create auto-registered controller");
let controller = result.unwrap();
assert_eq!(controller.name(), "TrueAutoTestController");
assert_eq!(controller.base_path(), "/true-auto");
assert_eq!(controller.routes().len(), 2);
}
#[test]
fn test_registry_has_auto_registered_controller() {
assert!(
elif_http::bootstrap::CONTROLLER_TYPE_REGISTRY.is_registered("TrueAutoTestController"),
"Controller should be auto-registered"
);
let count = elif_http::bootstrap::CONTROLLER_TYPE_REGISTRY.count();
assert!(count >= 1, "Registry should contain at least our auto-registered controller");
}
}
#[cfg(not(feature = "derive"))]
mod fallback_tests {
#[test]
fn test_derive_feature_disabled() {
let registry_count = elif_http::bootstrap::CONTROLLER_TYPE_REGISTRY.count();
println!("Registry has {} controllers (derive feature disabled)", registry_count);
}
}