use super::tool_entries;
use serde_json::json;
#[test]
fn plan_tools_declare_complete_closed_input_shapes() {
let entries = tool_entries();
assert_eq!(entries[0]["name"], "plan_set");
assert_eq!(
entries[0]["inputSchema"]["required"],
json!(["service", "steps"])
);
assert_eq!(
entries[0]["inputSchema"]["properties"]["steps"]["items"]["required"],
json!(["title"])
);
assert_eq!(entries[1]["name"], "plan_step");
assert_eq!(
entries[1]["inputSchema"]["required"],
json!(["service", "step", "status"])
);
assert_eq!(
entries[1]["inputSchema"]["properties"]["status"]["enum"],
json!(["todo", "doing", "done", "blocked"])
);
assert!(
entries
.iter()
.all(|entry| entry["inputSchema"]["additionalProperties"] == false)
);
}
#[test]
fn construction_tools_keep_contracts_required_and_identity_at_the_server() {
let entries = tool_entries();
assert_eq!(
entries[2]["inputSchema"]["required"],
json!(["name", "purpose", "subjects", "contracts"])
);
assert_eq!(
entries[3]["inputSchema"]["required"],
json!(["service", "agent"])
);
assert!(
entries
.iter()
.all(|entry| entry["inputSchema"]["properties"].get("holder").is_none())
);
}