use std::{fs, path::PathBuf};
use db_rs::{Config, Db, LookupTable};
use db_rs_derive::Schema;
#[derive(Schema)]
struct MigrationTest {
table: LookupTable<u8, String>,
}
#[test]
fn migration_test() {
let orig = PathBuf::from("tests/test_data/v1_log_format/MigrationTest.original");
let v1 = PathBuf::from("tests/test_data/v1_log_format/MigrationTest");
let v2 = PathBuf::from("tests/test_data/v1_log_format/MigrationTest.db");
assert!(orig.exists());
let _ = fs::remove_file(&v1);
let _ = fs::remove_file(&v2);
fs::copy(orig, &v1).unwrap();
let db = MigrationTest::init(Config::in_folder("tests/test_data/v1_log_format")).unwrap();
assert!(v2.exists());
assert!(!v1.exists());
assert_eq!(db.table.get().len(), 4);
assert_eq!(db.table.get().get(&0).unwrap(), "zero");
assert_eq!(db.table.get().get(&1).unwrap(), "one");
assert_eq!(db.table.get().get(&2).unwrap(), "two");
assert_eq!(db.table.get().get(&3).unwrap(), "three");
drop(db);
let db = MigrationTest::init(Config::in_folder("tests/test_data/v1_log_format")).unwrap();
assert!(v2.exists());
assert!(!v1.exists());
assert_eq!(db.table.get().len(), 4);
assert_eq!(db.table.get().get(&0).unwrap(), "zero");
assert_eq!(db.table.get().get(&1).unwrap(), "one");
assert_eq!(db.table.get().get(&2).unwrap(), "two");
assert_eq!(db.table.get().get(&3).unwrap(), "three");
}
#[test]
#[ignore]
fn generate_data() {
let dir = "tests/test_data/v1_log_format";
let mut db = MigrationTest::init(Config::in_folder(dir)).unwrap();
db.table.insert(0, "zero".into()).unwrap();
db.table.insert(1, "one".into()).unwrap();
db.table.insert(2, "two".into()).unwrap();
db.table.insert(3, "three".into()).unwrap();
}