use anyhow::Result;
use uni_db::Uni;
#[tokio::test]
async fn test_admin_features() -> Result<()> {
let db = Uni::in_memory().build().await?;
let result = db.session().query("SHOW DATABASE").await?;
assert_eq!(result.len(), 1);
assert_eq!(result.rows()[0].get::<String>("name")?, "uni");
let result = db.session().query("SHOW CONFIG").await?;
assert_eq!(result.len(), 0);
let tx = db.session().tx().await?;
tx.execute("CREATE LABEL User (name STRING)").await?;
tx.execute("CREATE (:User {name: 'Alice'})").await?;
tx.commit().await?;
db.flush().await?;
let result = db.session().query("SHOW STATISTICS").await?;
assert!(!result.is_empty());
let user_stat = result
.rows()
.iter()
.find(|r| {
if let Ok(name) = r.get::<String>("name") {
name == "User"
} else {
false
}
})
.expect("User statistics not found");
assert_eq!(user_stat.get::<i64>("count")?, 1);
let tx = db.session().tx().await?;
tx.execute("VACUUM").await?;
tx.commit().await?;
Ok(())
}