use musefs_db::Db;
#[test]
fn open_in_memory_runs_migration_to_latest() {
let db = Db::open_in_memory().expect("open");
assert_eq!(db.user_version().expect("user_version"), 2);
}
#[test]
fn migration_is_idempotent_across_reopen() {
let dir = tempfile::tempdir().unwrap();
let path = dir.path().join("musefs.db");
let db = Db::open(&path).unwrap();
assert_eq!(db.user_version().unwrap(), 2);
drop(db);
let db2 = Db::open(&path).unwrap();
assert_eq!(db2.user_version().unwrap(), 2);
}
#[test]
fn opening_a_store_newer_than_the_binary_fails_loudly() {
let dir = tempfile::tempdir().unwrap();
let path = dir.path().join("musefs.db");
Db::open(&path).unwrap();
{
let conn = rusqlite::Connection::open(&path).unwrap();
conn.pragma_update(None, "user_version", 3).unwrap();
}
let err = Db::open(&path).unwrap_err();
assert!(
matches!(
err,
musefs_db::DbError::StoreTooNew {
found: 3,
supported: 2
}
),
"expected StoreTooNew {{ found: 3, supported: 2 }}, got {err:?}"
);
}
#[cfg(feature = "mutants")]
#[test]
fn default_db_is_unmigrated_version_zero() {
let db = Db::default();
assert_eq!(db.user_version().unwrap(), 0);
}