#[tokio::test]
#[ignore]
async fn test_kg_search_with_running_server() {
let client = reqwest::Client::new();
let server_url = "http://127.0.0.1:8000";
let test_queries = vec!["graph embeddings", "terraphim-graph", "knowledge graph"];
for query in &test_queries {
println!("🔍 Testing query: '{}'", query);
let search_request = serde_json::json!({
"search_term": query,
"role": "Terraphim Engineer"
});
let response = client
.post(format!("{}/documents/search", server_url))
.header("Content-Type", "application/json")
.json(&search_request)
.send()
.await
.expect("Failed to send search request");
assert!(
response.status().is_success(),
"Search request failed for query: '{}'",
query
);
let search_response: serde_json::Value = response
.json()
.await
.expect("Failed to parse search response");
assert_eq!(
search_response["status"], "success",
"Search returned error status"
);
let results = search_response["results"]
.as_array()
.expect("Search results should be an array");
assert!(
!results.is_empty(),
"No search results found for query: '{}'",
query
);
println!("📋 Found {} search results for '{}'", results.len(), query);
let mut found_kg_source_link = false;
let mut found_kg_links_in_content = false;
let kg_source_files = vec![
"docs/src/kg/terraphim-graph.md",
"docs/src/kg/knowledge-graph.md",
"docs/src/kg/knowledge-graph-system.md",
];
for (i, result) in results.iter().enumerate() {
let title = result["title"].as_str().unwrap_or("unknown");
let url = result["url"].as_str().unwrap_or("unknown");
let body = result["body"].as_str().unwrap_or("");
println!("📄 Result #{}: '{}' (URL: {})", i + 1, title, url);
for kg_file in &kg_source_files {
if url.contains(kg_file) {
found_kg_source_link = true;
println!(" ✅ Found link to KG source file: {}", kg_file);
break;
}
}
if body.contains("](kg:") {
found_kg_links_in_content = true;
let kg_links: Vec<&str> = body
.split("[")
.filter_map(|s| s.find("](kg:").map(|closing| &s[..closing]))
.take(3) .collect();
if !kg_links.is_empty() {
println!(
" 🔗 Document contains KG links: [{}](kg:...)",
kg_links.join("], [")
);
}
}
}
assert!(
found_kg_source_link,
"Query '{}' should return documents that link back to KG source files like @docs/src/kg/terraphim-graph.md",
query
);
assert!(
found_kg_links_in_content,
"Query '{}' should return documents with KG links in content like [term](kg:concept)",
query
);
println!(
"✅ Query '{}' successfully returned both KG source documents and KG-linked content\n",
query
);
}
println!("🎉 All KG document linking tests passed! KG search successfully returns:");
println!(" 1. Original KG source documents (e.g., @docs/src/kg/terraphim-graph.md)");
println!(" 2. Documents with KG links in content (e.g., [graph](kg:terraphim-graph))");
}