use crate::plugins::{
PluginLoadReport, PluginOrigin, PluginReportEntry, PluginScope, PluginStatus,
};
use super::{print_inspect, PluginsListDocument};
fn sample_report() -> PluginLoadReport {
PluginLoadReport {
plugins: vec![PluginReportEntry {
name: "demo".into(),
version: None,
description: Some("demo plugin".into()),
root: "/home/rho/.agents/plugins/demo".into(),
scope: PluginScope::User,
origin: PluginOrigin::Install,
enabled: true,
status: PluginStatus::Loaded,
problems: Vec::new(),
skill_count: 1,
mcp_server_count: 0,
skill_names: vec!["hello".into()],
mcp_server_names: Vec::new(),
}],
}
}
#[test]
fn list_json_includes_inventory_fields() {
let report = sample_report();
let document = PluginsListDocument {
plugins: &report.plugins,
};
let value = serde_json::to_value(&document).unwrap();
let expected = serde_json::json!({
"plugins": [{
"name": "demo",
"description": "demo plugin",
"root": "/home/rho/.agents/plugins/demo",
"scope": "user",
"origin": "install",
"enabled": true,
"status": "loaded",
"problems": [],
"skill_count": 1,
"mcp_server_count": 0,
"skill_names": ["hello"],
"mcp_server_names": []
}]
});
pretty_assertions::assert_eq!(value, expected);
}
#[test]
fn inspect_known_and_unknown_names() {
let report = sample_report();
print_inspect(&report, "demo", true).unwrap();
assert!(print_inspect(&report, "missing", false).is_err());
}