use std::path::PathBuf;
use mnemo_core::storage::duckdb::DuckDbStorage;
use mnemo_core::storage::migrations::{CURRENT_PERSISTENCE_VERSION, read_persistence_version};
fn fixture_path(name: &str) -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR"))
.join("tests")
.join("golden")
.join(name)
}
#[tokio::test]
async fn v0_3_4_fixture_opens_with_current_persistence_stamp() {
use mnemo_core::storage::MemoryFilter;
use mnemo_core::storage::StorageBackend;
let path = fixture_path("v0_3_4.mnemo.db");
assert!(
path.exists(),
"missing fixture {} — regenerate with `cargo run --example gen_golden_fixture -- {}`",
path.display(),
path.display()
);
let tmp = tempfile::NamedTempFile::new().unwrap();
std::fs::copy(&path, tmp.path()).unwrap();
let storage = DuckDbStorage::open(tmp.path()).expect("open fixture");
let conn = duckdb::Connection::open(tmp.path()).expect("reopen for stamp check");
let stamp = read_persistence_version(&conn).expect("read stamp");
assert_eq!(
stamp,
Some(CURRENT_PERSISTENCE_VERSION),
"fixture must be stamped to the current persistence version after open"
);
drop(conn);
let filter = MemoryFilter {
agent_id: Some("agent-fixture".to_string()),
..Default::default()
};
let records = storage.list_memories(&filter, 100, 0).await.expect("list");
assert_eq!(
records.len(),
5,
"v0_3_4 fixture must round-trip exactly 5 records (saw {})",
records.len()
);
}