use db::Db; use sqlx::PgPool; #[sqlx::test] async fn migrate_is_idempotent_and_creates_audit_log(pool: PgPool) { let db = Db::from_pool(pool); // sqlx::test already applied migrations to this temp DB; re-running must be a // no-op success (idempotent). db.migrate() .await .expect("re-running migrate is idempotent"); let regclass: Option = sqlx::query_scalar("SELECT to_regclass('public.audit_log')::text") .fetch_one(db.pool()) .await .unwrap(); assert_eq!(regclass.as_deref(), Some("audit_log")); } #[sqlx::test] async fn migrate_creates_vocabulary_and_authority_tables(pool: PgPool) { let db = Db::from_pool(pool); for table in [ "vocabulary", "term", "term_label", "authority", "authority_label", ] { let regclass: Option = sqlx::query_scalar(&format!("SELECT to_regclass('public.{table}')::text")) .fetch_one(db.pool()) .await .unwrap(); assert_eq!( regclass.as_deref(), Some(table), "table {table} should exist" ); } }