blob: eefee8d47e1f46ae17e32e8a732084111e0dc58f [file] [log] [blame]
use crate::support::{database, project};
#[test]
fn database_setup_creates_database() {
let p = project("database_setup_creates_database")
.folder("migrations")
.build();
let db = database(&p.database_url());
// sanity check
assert!(!db.exists());
let result = p.command("database").arg("setup").run();
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(
result.stdout().contains("Creating database:"),
"Unexpected stdout {}",
result.stdout()
);
assert!(db.exists());
}
#[test]
fn database_setup_creates_schema_table() {
let p = project("database_setup_creates_schema_table")
.folder("migrations")
.build();
let db = database(&p.database_url());
// sanity check
assert!(!db.exists());
let result = p.command("database").arg("setup").run();
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(db.table_exists("__diesel_schema_migrations"));
}
#[test]
fn database_setup_runs_migrations_if_no_schema_table() {
let p = project("database_setup_runs_migrations_if_no_schema_table")
.folder("migrations")
.build();
let db = database(&p.database_url());
p.create_migration(
"12345_create_users_table",
"CREATE TABLE users ( id INTEGER )",
"DROP TABLE users",
);
// sanity check
assert!(!db.exists());
let result = p.command("database").arg("setup").run();
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(
result.stdout().contains("Running migration 12345"),
"Unexpected stdout {}",
result.stdout()
);
assert!(db.table_exists("users"));
}
#[test]
fn database_abbreviated_as_db() {
let p = project("database_abbreviated_as_db")
.folder("migrations")
.build();
let db = database(&p.database_url());
let result = p.command("db").arg("setup").run();
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(
result.stdout().contains("Creating database:"),
"Unexpected stdout {}",
result.stdout()
);
assert!(db.exists());
}
#[test]
fn database_setup_respects_migration_dir_by_arg_to_database() {
let p = project("database_setup_respects_migration_dir_by_arg_to_database")
.folder("foo")
.build();
let db = database(&p.database_url());
p.create_migration_in_directory(
"foo",
"12345_create_users_table",
"CREATE TABLE users ( id INTEGER )",
"DROP TABLE users",
);
// sanity check
assert!(!db.exists());
let result = p
.command("database")
.arg("--migration-dir=foo")
.arg("setup")
.run();
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(
result.stdout().contains("Running migration 12345"),
"Unexpected stdout {}",
result.stdout()
);
assert!(db.table_exists("users"));
}
#[test]
fn database_setup_respects_migration_dir_by_arg() {
let p = project("database_setup_respects_migration_dir_by_arg")
.folder("foo")
.build();
let db = database(&p.database_url());
p.create_migration_in_directory(
"foo",
"12345_create_users_table",
"CREATE TABLE users ( id INTEGER )",
"DROP TABLE users",
);
// sanity check
assert!(!db.exists());
let result = p
.command("database")
.arg("setup")
.arg("--migration-dir=foo")
.run();
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(
result.stdout().contains("Running migration 12345"),
"Unexpected stdout {}",
result.stdout()
);
assert!(db.table_exists("users"));
}
#[test]
fn database_setup_respects_migration_dir_by_env() {
let p = project("database_setup_respects_migration_dir_by_env")
.folder("bar")
.build();
let db = database(&p.database_url());
p.create_migration_in_directory(
"bar",
"12345_create_users_table",
"CREATE TABLE users ( id INTEGER )",
"DROP TABLE users",
);
// sanity check
assert!(!db.exists());
let result = p
.command("database")
.arg("setup")
.env("MIGRATION_DIRECTORY", "bar")
.run();
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(
result.stdout().contains("Running migration 12345"),
"Unexpected stdout {}",
result.stdout()
);
assert!(db.table_exists("users"));
}
#[test]
fn database_setup_respects_migrations_dir_from_diesel_toml() {
let p = project("database_setup_respects_migrations_dir_by_diesel_toml")
.folder("custom_migrations")
.file(
"diesel.toml",
r#"
[migrations_directory]
dir = "custom_migrations"
"#,
)
.build();
let db = database(&p.database_url());
p.create_migration_in_directory(
"custom_migrations",
"12345_create_users_table",
"CREATE TABLE users ( id INTEGER )",
"DROP TABLE users",
);
// sanity check
assert!(!db.exists());
let result = p.command("database").arg("setup").run();
assert!(result.is_success(), "Result was unsuccessful {:?}", result);
assert!(
result.stdout().contains("Running migration 12345"),
"Unexpected stdout {}",
result.stdout()
);
assert!(db.table_exists("users"));
}