mod support;
use anyhow::Result;
use rmcp::{model::CallToolRequestParam, service::ServiceExt, transport::TokioChildProcess};
use serde_json::json;
use std::process::Stdio;
use tokio::process::Command;
#[tokio::test]
async fn test_kg_bug_reporting_terms_available() -> Result<()> {
println!("🔍 Testing knowledge graph bug reporting terms availability");
let mut cmd = Command::new(support::mcp_server_binary()?);
cmd.stdin(Stdio::piped())
.stdout(Stdio::piped())
.stderr(Stdio::piped())
.arg("--profile")
.arg("desktop");
let transport = TokioChildProcess::new(cmd)?;
let service = ().serve(transport).await?;
let _build_result = service
.call_tool(CallToolRequestParam {
name: "build_autocomplete_index".into(),
arguments: json!({
"role": "Terraphim Engineer"
})
.as_object()
.cloned(),
})
.await?;
println!("🔧 Testing autocomplete for 'steps to reproduce' terms...");
let steps_autocomplete = service
.call_tool(CallToolRequestParam {
name: "autocomplete_terms".into(),
arguments: json!({
"query": "steps to reproduce",
"limit": 10,
"role": "Terraphim Engineer"
})
.as_object()
.cloned(),
})
.await?;
println!("✅ Steps autocomplete: {:?}", steps_autocomplete.content);
println!("🎯 Testing autocomplete for 'expected behavior' terms...");
let expected_autocomplete = service
.call_tool(CallToolRequestParam {
name: "autocomplete_terms".into(),
arguments: json!({
"query": "expected behavior",
"limit": 10,
"role": "Terraphim Engineer"
})
.as_object()
.cloned(),
})
.await?;
println!(
"✅ Expected behavior autocomplete: {:?}",
expected_autocomplete.content
);
println!("💰 Testing autocomplete for 'payroll system' terms...");
let payroll_autocomplete = service
.call_tool(CallToolRequestParam {
name: "autocomplete_terms".into(),
arguments: json!({
"query": "payroll",
"limit": 10,
"role": "Terraphim Engineer"
})
.as_object()
.cloned(),
})
.await?;
println!(
"✅ Payroll autocomplete: {:?}",
payroll_autocomplete.content
);
println!("🔄 Testing autocomplete for 'data consistency' terms...");
let data_autocomplete = service
.call_tool(CallToolRequestParam {
name: "autocomplete_terms".into(),
arguments: json!({
"query": "data consistency",
"limit": 10,
"role": "Terraphim Engineer"
})
.as_object()
.cloned(),
})
.await?;
println!(
"✅ Data consistency autocomplete: {:?}",
data_autocomplete.content
);
println!("🛡️ Testing autocomplete for 'quality assurance' terms...");
let qa_autocomplete = service
.call_tool(CallToolRequestParam {
name: "autocomplete_terms".into(),
arguments: json!({
"query": "quality assurance",
"limit": 10,
"role": "Terraphim Engineer"
})
.as_object()
.cloned(),
})
.await?;
println!(
"✅ Quality assurance autocomplete: {:?}",
qa_autocomplete.content
);
println!("🎉 All knowledge graph term verification tests completed!");
Ok(())
}