use std::path::PathBuf;
use tidepool_version_manager::{
go::GoManager, ListInstalledRequest, StatusRequest, VersionManager,
};
#[tokio::test]
async fn test_version_manager_interface() {
let manager = GoManager::new();
let base_dir = PathBuf::from("test_versions");
let status_request = StatusRequest { base_dir: Some(base_dir.clone()) };
match manager.status(status_request) {
Ok(status) => {
assert!(status.environment_vars.contains_key("GOROOT"));
assert!(status.environment_vars.contains_key("GOPATH"));
println!("✅ Status query returns structured data");
}
Err(e) => println!("ℹ️ Status query failed (expected): {e}"),
}
let list_request = ListInstalledRequest { base_dir: base_dir.clone() };
match manager.list_installed(list_request) {
Ok(version_list) => {
assert_eq!(version_list.versions.len(), version_list.total_count);
println!(
"✅ List installed returns VersionList with {} versions",
version_list.total_count
);
}
Err(e) => println!("ℹ️ List installed failed (expected for non-existent dir): {e}"),
}
println!("✅ Request structures can be created successfully");
println!(" - StatusRequest with base_dir: {base_dir:?}");
println!(" - ListInstalledRequest with base_dir: {base_dir:?}");
}