use sqlx::PgPool; #[tokio::test] async fn db_smoke_tenants_users_roundtrip() -> Result<(), Box> { let database_url = match std::env::var("DATABASE_URL") { Ok(v) if !v.trim().is_empty() => v, _ => return Ok(()), }; let pool = PgPool::connect(&database_url).await?; let mut tx = pool.begin().await?; let tenant_id: uuid::Uuid = sqlx::query_scalar( r#" INSERT INTO tenants (name, status, config) VALUES ($1, 'active', '{}'::jsonb) RETURNING id "#, ) .bind(format!("smoke-{}", uuid::Uuid::new_v4())) .fetch_one(&mut *tx) .await?; let user_id: uuid::Uuid = sqlx::query_scalar( r#" INSERT INTO users (tenant_id, email, password_hash) VALUES ($1, $2, $3) RETURNING id "#, ) .bind(tenant_id) .bind(format!("smoke-{}@example.com", uuid::Uuid::new_v4())) .bind("hash") .fetch_one(&mut *tx) .await?; let found: i64 = sqlx::query_scalar("SELECT COUNT(1) FROM users WHERE tenant_id = $1 AND id = $2") .bind(tenant_id) .bind(user_id) .fetch_one(&mut *tx) .await?; assert_eq!(found, 1); tx.rollback().await?; Ok(()) }