test(pg-from): generate sql matches to expected sql
This commit is contained in:
62
package/postgres/pg-from/test/generate_sql.rs
Normal file
62
package/postgres/pg-from/test/generate_sql.rs
Normal file
@@ -0,0 +1,62 @@
|
||||
use std::process::Command;
|
||||
use std::fs;
|
||||
use std::path::Path;
|
||||
|
||||
#[test]
|
||||
fn generated_sql_matches_expected() {
|
||||
// Adjust this path if your fixture folder is located somewhere else.
|
||||
let fixture_dir = "test/fixture";
|
||||
let input_db = format!("{}/test.db", fixture_dir);
|
||||
let expected_sql_path = format!("{}/expected.sql", fixture_dir);
|
||||
let output_sql_path = format!("{}/generated.sql", fixture_dir);
|
||||
|
||||
// Remove any previously generated file.
|
||||
let _ = fs::remove_file(&output_sql_path);
|
||||
|
||||
// Check that fixture files exist.
|
||||
assert!(
|
||||
Path::new(&input_db).exists(),
|
||||
"Input DB does not exist: {}",
|
||||
input_db
|
||||
);
|
||||
assert!(
|
||||
Path::new(&expected_sql_path).exists(),
|
||||
"Expected SQL does not exist: {}",
|
||||
expected_sql_path
|
||||
);
|
||||
|
||||
// The following env var is set automatically by Cargo when building binaries.
|
||||
// It points to the location of the built binary (assuming your binary is named "pg-from").
|
||||
let exe = env!("CARGO_BIN_EXE_pg-from");
|
||||
|
||||
// Run your binary with the required arguments.
|
||||
let status = Command::new(exe)
|
||||
.args(&[
|
||||
&input_db,
|
||||
&output_sql_path,
|
||||
"legacy",
|
||||
"--inherit=created_at",
|
||||
"--inherit=updated_at",
|
||||
])
|
||||
.status()
|
||||
.expect("Failed to execute pg-from binary");
|
||||
|
||||
assert!(
|
||||
status.success(),
|
||||
"pg-from did not run successfully (exit status: {:?})",
|
||||
status.code()
|
||||
);
|
||||
|
||||
// Read the generated output and the expected output.
|
||||
let generated = fs::read_to_string(&output_sql_path)
|
||||
.expect("Failed to read generated SQL file");
|
||||
let expected = fs::read_to_string(&expected_sql_path)
|
||||
.expect("Failed to read expected SQL file");
|
||||
|
||||
// Compare the two strings.
|
||||
assert_eq!(
|
||||
generated, expected,
|
||||
"Generated SQL does not match expected SQL"
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user