use crank_registry::PostgresRegistry; use sqlx::Row; #[tokio::test] async fn core_migration_is_versioned_and_safe_under_concurrent_startup() { let database_url = crank_test_support::postgres_schema_url("test_core_migration").await; let (first, second) = tokio::join!( PostgresRegistry::connect(&database_url), PostgresRegistry::connect(&database_url), ); let first = first.expect("first service startup must apply the migration"); second.expect("second service startup must observe the applied migration"); let rows = sqlx::query( "select version, description, checksum from __crank_core_migrations order by version", ) .fetch_all(first.pool()) .await .expect("migration ledger must be readable"); assert_eq!(rows.len(), 1); assert_eq!(rows[0].get::("version"), 1); assert_eq!( rows[0].get::("description"), "community baseline" ); assert_eq!( rows[0].get::("checksum"), "crank-community-baseline-v1" ); let approval_columns = sqlx::query( "select column_name from information_schema.columns where table_schema = current_schema() and table_name = 'approval_requests' and column_name in ('execution_started_at', 'execution_attempts', 'request_fingerprint')", ) .fetch_all(first.pool()) .await .expect("approval schema must be readable"); assert_eq!(approval_columns.len(), 3); }