chore: add test for make command
This commit is contained in:
parent
6b352c31a2
commit
afb1c8a4e3
1 changed files with 50 additions and 0 deletions
|
@ -287,3 +287,53 @@ Pending migrations:
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mod make {
|
||||||
|
use super::*;
|
||||||
|
use std::fs;
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn make_migration_directory() -> TestResult {
|
||||||
|
Command::cargo_bin("migra")?
|
||||||
|
.arg("-c")
|
||||||
|
.arg(path_to_file("Migra_url.toml"))
|
||||||
|
.arg("make")
|
||||||
|
.arg("test")
|
||||||
|
.assert()
|
||||||
|
.success()
|
||||||
|
.stdout(contains("Structure for migration has been created in"));
|
||||||
|
|
||||||
|
let entries = fs::read_dir(path_to_file("migrations"))?
|
||||||
|
.map(|entry| entry.map(|e| e.path()))
|
||||||
|
.collect::<Result<Vec<_>, std::io::Error>>()?;
|
||||||
|
|
||||||
|
let dir_paths = entries
|
||||||
|
.iter()
|
||||||
|
.filter_map(|path| {
|
||||||
|
path.to_str().and_then(|path| {
|
||||||
|
if path.ends_with("_test") {
|
||||||
|
Some(path)
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
.collect::<Vec<_>>();
|
||||||
|
|
||||||
|
for dir_path in dir_paths.iter() {
|
||||||
|
let upgrade_content = fs::read_to_string(format!("{}/up.sql", dir_path))?;
|
||||||
|
let downgrade_content = fs::read_to_string(format!("{}/down.sql", dir_path))?;
|
||||||
|
|
||||||
|
assert_eq!(upgrade_content, "-- Your SQL goes here\n\n");
|
||||||
|
|
||||||
|
assert_eq!(
|
||||||
|
downgrade_content,
|
||||||
|
"-- This file should undo anything in `up.sql`\n\n"
|
||||||
|
);
|
||||||
|
|
||||||
|
fs::remove_dir_all(dir_path)?;
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
Reference in a new issue