Skip to content

Commit 115d144

Browse files
committed
test(migrate): add latest_version check in reversible migration tests
1 parent 7945676 commit 115d144

File tree

4 files changed

+27
-0
lines changed

4 files changed

+27
-0
lines changed

sqlx-core/src/migrate/migrator.rs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,6 +110,24 @@ impl Migrator {
110110
self.iter().any(|m| m.version == version)
111111
}
112112

113+
/// Get the latest version of the applied migrations.
114+
pub async fn latest_version<'a, A>(&self, migrator: A) -> Result<Option<i64>, MigrateError>
115+
where
116+
A: Acquire<'a>,
117+
<A::Connection as Deref>::Target: Migrate,
118+
{
119+
let mut conn = migrator.acquire().await?;
120+
121+
conn.ensure_migrations_table().await?;
122+
let applied_migrations = conn.list_applied_migrations().await?;
123+
let latest_version = applied_migrations
124+
.iter()
125+
.max_by(|x, y| x.version.cmp(&y.version))
126+
.map(|migration| migration.version);
127+
128+
Ok(latest_version)
129+
}
130+
113131
/// Run any pending migrations against the database; and, validate previously applied migrations
114132
/// against the current migration source to detect accidental changes in previously-applied migrations.
115133
///

tests/mysql/migrate.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ async fn reversible(mut conn: PoolConnection<MySql>) -> anyhow::Result<()> {
4848
.get(0);
4949
assert_eq!(res, 101);
5050

51+
let latest_version = migrator.latest_version(&mut conn).await?.unwrap();
52+
assert_eq!(latest_version, 20220721125033);
53+
5154
// roll back nothing (last version)
5255
migrator.undo(&mut conn, 20220721125033).await?;
5356

tests/postgres/migrate.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ async fn reversible(mut conn: PoolConnection<Postgres>) -> anyhow::Result<()> {
5050
.get(0);
5151
assert_eq!(res, 101);
5252

53+
let latest_version = migrator.latest_version(&mut conn).await?.unwrap();
54+
assert_eq!(latest_version, 20220721125033);
55+
5356
// roll back nothing (last version)
5457
migrator.undo(&mut conn, 20220721125033).await?;
5558

tests/sqlite/migrate.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ async fn reversible(mut conn: PoolConnection<Sqlite>) -> anyhow::Result<()> {
4848
.get(0);
4949
assert_eq!(res, 101);
5050

51+
let latest_version = migrator.latest_version(&mut conn).await?.unwrap();
52+
assert_eq!(latest_version, 20220721125033);
53+
5154
// roll back nothing (last version)
5255
migrator.undo(&mut conn, 20220721125033).await?;
5356

0 commit comments

Comments
 (0)