use sqlserver_mcp_catalog::data::store::{VERSION_STORE_FILES, open_store, resolve_store_path};
#[test]
#[ignore = "requires `sqlserver-mcp-populate-embeddings --all` to have been run first"]
fn semantic_endpoints_row_count_matches_endpoints_row_count_for_every_version() {
let mut mismatches = Vec::new();
for (label, _file) in VERSION_STORE_FILES {
let path = resolve_store_path(label)
.unwrap_or_else(|err| panic!("failed to resolve store path for '{label}': {err}"));
let conn = open_store(&path)
.unwrap_or_else(|err| panic!("failed to open store for '{label}': {err}"));
let endpoints_count: i64 = conn
.query_row("SELECT count(*) FROM endpoints", [], |row| row.get(0))
.unwrap_or_else(|err| panic!("failed to count 'endpoints' rows for '{label}': {err}"));
let semantic_count: i64 = conn
.query_row("SELECT count(*) FROM semantic_endpoints", [], |row| {
row.get(0)
})
.unwrap_or_else(|err| {
panic!("failed to count 'semantic_endpoints' rows for '{label}': {err}")
});
if endpoints_count != semantic_count {
mismatches.push(format!(
"'{label}': endpoints={endpoints_count} semantic_endpoints={semantic_count}"
));
}
}
assert!(
mismatches.is_empty(),
"embedding population incomplete — semantic_endpoints row count must equal endpoints \
row count for every version, but found mismatch(es): {}",
mismatches.join("; ")
);
}