diff options
author | Gannon McGibbon <gannon.mcgibbon@gmail.com> | 2018-12-31 13:46:30 -0500 |
---|---|---|
committer | Gannon McGibbon <gannon.mcgibbon@gmail.com> | 2019-01-09 14:23:25 -0500 |
commit | 4b1ae57f0f905bd8cb63e435197db5014239d39e (patch) | |
tree | 4153158fa41b6a9c6c6162ed38d20a4b390132b6 /railties/test/commands | |
parent | e3204b9c33cc8a0385f002ce8ca42b4f4192d869 (diff) | |
download | rails-4b1ae57f0f905bd8cb63e435197db5014239d39e.tar.gz rails-4b1ae57f0f905bd8cb63e435197db5014239d39e.tar.bz2 rails-4b1ae57f0f905bd8cb63e435197db5014239d39e.zip |
Add rails db:system:change command
Add `rails db:system:change` command for changing databases.
```
bin/rails db:system:change --to=postgresql
force config/database.yml
gsub Gemfile
```
The change command copies a template `config/database.yml` with
the target database adapter into your app, and replaces your database
gem with the target database gem.
Diffstat (limited to 'railties/test/commands')
-rw-r--r-- | railties/test/commands/db_system_change_test.rb | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/railties/test/commands/db_system_change_test.rb b/railties/test/commands/db_system_change_test.rb new file mode 100644 index 0000000000..bac757f1eb --- /dev/null +++ b/railties/test/commands/db_system_change_test.rb @@ -0,0 +1,62 @@ +# frozen_string_literal: true + +require "isolation/abstract_unit" +require "rails/command" +require "rails/commands/db/system/change/change_command" + +class Rails::Command::Db::System::ChangeCommandTest < ActiveSupport::TestCase + include ActiveSupport::Testing::Isolation + + setup { build_app } + + teardown { teardown_app } + + test "change to existing database" do + change_database(to: "sqlite3") + + output = change_database(to: "sqlite3") + + assert_match "identical config/database.yml", output + assert_match "gsub Gemfile", output + end + + test "change to invalid database" do + output = change_database(to: "invalid-db") + + assert_match <<~MSG.squish, output + Invalid value for --to option. + Supported for preconfiguration are: + mysql, postgresql, sqlite3, oracle, frontbase, + ibm_db, sqlserver, jdbcmysql, jdbcsqlite3, + jdbcpostgresql, jdbc. + MSG + end + + test "change to postgresql" do + output = change_database(to: "postgresql") + + assert_match "force config/database.yml", output + assert_match "gsub Gemfile", output + end + + test "change to mysql" do + output = change_database(to: "mysql") + + assert_match "force config/database.yml", output + assert_match "gsub Gemfile", output + end + + test "change to sqlite3" do + change_database(to: "postgresql") + output = change_database(to: "sqlite3") + + assert_match "force config/database.yml", output + assert_match "gsub Gemfile", output + end + + private + def change_database(to:, **options) + args = ["--to", to] + rails "db:system:change", args, **options + end +end |