use super::{build_query, index_id_or_default, DEEP_ANALYSIS_MCP_TIMEOUT_SECS};
#[test]
fn index_id_or_default_prefers_index_then_alias_then_default() {
let with_index = serde_json::json!({ "index": "primary" });
assert_eq!(index_id_or_default(&with_index), "primary");
let with_alias = serde_json::json!({ "index_id": "alias" });
assert_eq!(index_id_or_default(&with_alias), "alias");
let empty = serde_json::json!({});
assert_eq!(index_id_or_default(&empty), "default");
}
#[test]
fn build_query_skips_missing_keys() {
let args = serde_json::json!({ "subject": "fn auth", "object": "JWT" });
let q = build_query(&args, &["subject", "predicate", "object"]);
assert!(q.starts_with('?'), "expected leading '?', got {q}");
assert!(q.contains("subject=fn%20auth"), "got {q}");
assert!(q.contains("object=JWT"), "got {q}");
assert!(!q.contains("predicate"), "got {q}");
}
#[test]
fn build_query_handles_numeric_and_bool() {
let args = serde_json::json!({
"limit": 100u64,
"offset": 50u64,
"omit_content": false,
});
let q = build_query(&args, &["limit", "offset", "omit_content"]);
assert!(q.starts_with('?'), "expected leading '?', got {q}");
assert!(q.contains("limit=100"), "got {q}");
assert!(q.contains("offset=50"), "got {q}");
assert!(q.contains("omit_content=false"), "got {q}");
}
#[test]
fn build_query_integer_limit_parses_correctly() {
let args = serde_json::json!({ "limit": 200u64 });
let q = build_query(&args, &["limit"]);
assert_eq!(
q, "?limit=200",
"integer limit must serialise as plain decimal"
);
}
#[test]
fn mcp_client_timeout_exceeds_openrouter_ceiling() {
const OPENROUTER_CEILING_SECS: u64 = 120;
const _: () = assert!(
DEEP_ANALYSIS_MCP_TIMEOUT_SECS > OPENROUTER_CEILING_SECS,
"DEEP_ANALYSIS_MCP_TIMEOUT_SECS must be > OpenRouter ceiling (120 s)"
);
}