blob: 1554c0a1c174244b9b76b8572a9ef1416c6f4a1c [file] [log] [blame]
use crate::support::project;
#[test]
fn migration_redo_runs_the_last_migration_down_and_up() {
let p = project("migration_redo").folder("migrations").build();
p.create_migration(
"12345_create_users_table",
"CREATE TABLE users (id INTEGER PRIMARY KEY);",
"DROP TABLE users;",
);
// Make sure the project is setup
p.command("setup").run();
let result = p.command("migration").arg("redo").run();
let expected_stdout = "\
Rolling back migration 12345_create_users_table
Running migration 12345_create_users_table
";
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(
result.stdout().contains(expected_stdout),
"Unexpected stdout {}",
result.stdout()
);
}
#[test]
fn migration_redo_respects_migration_dir_var() {
let p = project("migration_redo_var").folder("foo").build();
p.create_migration_in_directory(
"foo",
"12345_create_users_table",
"CREATE TABLE users (id INTEGER PRIMARY KEY);",
"DROP TABLE users;",
);
// Make sure the project is setup
p.command("setup").arg("--migration-dir=foo").run();
let result = p
.command("migration")
.arg("redo")
.arg("--migration-dir=foo")
.run();
let expected_stdout = "\
Rolling back migration 12345_create_users_table
Running migration 12345_create_users_table
";
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(
result.stdout().contains(expected_stdout),
"Unexpected stdout {}",
result.stdout()
);
}
#[test]
fn migration_redo_respects_migration_dir_env() {
let p = project("migration_redo_env").folder("bar").build();
p.create_migration_in_directory(
"bar",
"12345_create_users_table",
"CREATE TABLE users (id INTEGER PRIMARY KEY);",
"DROP TABLE users;",
);
// Make sure the project is setup
p.command("setup").arg("--migration-dir=bar").run();
let result = p
.command("migration")
.arg("redo")
.env("MIGRATION_DIRECTORY", "bar")
.run();
let expected_stdout = "\
Rolling back migration 12345_create_users_table
Running migration 12345_create_users_table
";
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(
result.stdout().contains(expected_stdout),
"Unexpected stdout {}",
result.stdout()
);
}
#[test]
fn output_contains_path_to_migration_script() {
let p = project("output_contains_path_to_migration_script")
.folder("migrations")
.build();
p.create_migration(
"output_contains_path_to_migration_script",
"CREATE TABLE users (id INTEGER PRIMARY KEY);",
"DROP TABLE users};",
);
// Make sure the project is setup
p.command("setup").run();
let result = p.command("migration").arg("redo").run();
assert!(!result.is_success(), "Result was successful {:?}", result);
assert!(
result.stdout().contains("down.sql"),
"Unexpected stdout {}",
result.stdout()
);
}
#[test]
fn error_migrations_fails() {
let p = project("redo_error_migrations_fails")
.folder("migrations")
.build();
p.create_migration(
"redo_error_migrations_fails",
"CREATE TABLE users (id INTEGER PRIMARY KEY);",
"DROP TABLE users};",
);
// Make sure the project is setup
p.command("setup").run();
let result = p.command("migration").arg("redo").run();
assert!(!result.is_success());
assert!(result.stderr().contains("Failed with: "));
}
#[test]
fn migration_redo_respects_migrations_dir_from_diesel_toml() {
let p = project("migration_redo_respects_migrations_dir_from_diesel_toml")
.folder("custom_migrations")
.file(
"diesel.toml",
r#"
[migrations_directory]
dir = "custom_migrations"
"#,
)
.build();
p.create_migration_in_directory(
"custom_migrations",
"12345_create_users_table",
"CREATE TABLE users (id INTEGER PRIMARY KEY);",
"DROP TABLE users;",
);
// Make sure the project is setup
p.command("setup").run();
let result = p.command("migration").arg("redo").run();
let expected_stdout = "\
Rolling back migration 12345_create_users_table
Running migration 12345_create_users_table
";
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(
result.stdout().contains(expected_stdout),
"Unexpected stdout {}",
result.stdout()
);
}