| 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")); |
| } |