class Quails::DBConsoleTest
Attributes
aborted[R]
dbconsole[R]
output[R]
Public Instance Methods
setup()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 9 def setup Quails::DBConsole.const_set("APP_PATH", "quails/all") end
teardown()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 13 def teardown Quails::DBConsole.send(:remove_const, "APP_PATH") %w[PGUSER PGHOST PGPORT PGPASSWORD DATABASE_URL].each { |key| ENV.delete(key) } end
test_config_choose_database_url_if_exists()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 62 def test_config_choose_database_url_if_exists host = "database-url-host.com" ENV["DATABASE_URL"] = "postgresql://foo:bar@#{host}:9000/foo_test?pool=5&timeout=3000" sample_config = { "test" => { "adapter" => "postgresql", "host" => "not-the-#{host}", "port" => 9000, "database" => "foo_test", "username" => "foo", "password" => "bar", "pool" => "5", "timeout" => "3000" } } app_db_config(sample_config) do assert_equal host, Quails::DBConsole.new.config["host"] end end
test_config_with_database_url_only()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 44 def test_config_with_database_url_only ENV["DATABASE_URL"] = "postgresql://foo:bar@localhost:9000/foo_test?pool=5&timeout=3000" expected = { "adapter" => "postgresql", "host" => "localhost", "port" => 9000, "database" => "foo_test", "username" => "foo", "password" => "bar", "pool" => "5", "timeout" => "3000" }.sort app_db_config(nil) do assert_equal expected, Quails::DBConsole.new.config.sort end end
test_config_with_db_config_only()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 18 def test_config_with_db_config_only config_sample = { "test" => { "adapter" => "sqlite3", "host" => "localhost", "port" => "9000", "database" => "foo_test", "user" => "foo", "password" => "bar", "pool" => "5", "timeout" => "3000" } } app_db_config(config_sample) do assert_equal config_sample["test"], Quails::DBConsole.new.config end end
test_config_with_no_db_config()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 36 def test_config_with_no_db_config app_db_config(nil) do assert_raise(ActiveRecord::AdapterNotSpecified) { Quails::DBConsole.new.config } end end
test_env()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 82 def test_env assert_equal "test", Quails::DBConsole.new.environment ENV["RAILS_ENV"] = nil ENV["RACK_ENV"] = nil Quails.stub(:respond_to?, false) do assert_equal "development", Quails::DBConsole.new.environment ENV["RACK_ENV"] = "rack_env" assert_equal "rack_env", Quails::DBConsole.new.environment ENV["RAILS_ENV"] = "quails_env" assert_equal "quails_env", Quails::DBConsole.new.environment end ensure ENV["RAILS_ENV"] = "test" ENV["RACK_ENV"] = nil end
test_mysql()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 124 def test_mysql start(adapter: "mysql2", database: "db") assert !aborted assert_equal [%w[mysql mysql5], "db"], dbconsole.find_cmd_and_exec_args end
test_mysql_full()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 130 def test_mysql_full start(adapter: "mysql2", database: "db", host: "locahost", port: 1234, socket: "socket", username: "user", password: "qwerty", encoding: "UTF-8") assert !aborted assert_equal [%w[mysql mysql5], "--host=locahost", "--port=1234", "--socket=socket", "--user=user", "--default-character-set=UTF-8", "-p", "db"], dbconsole.find_cmd_and_exec_args end
test_mysql_include_password()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 136 def test_mysql_include_password start({ adapter: "mysql2", database: "db", username: "user", password: "qwerty" }, ["-p"]) assert !aborted assert_equal [%w[mysql mysql5], "--user=user", "--password=qwerty", "db"], dbconsole.find_cmd_and_exec_args end
test_oracle()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 197 def test_oracle start(adapter: "oracle", database: "db", username: "user", password: "secret") assert !aborted assert_equal ["sqlplus", "user@db"], dbconsole.find_cmd_and_exec_args end
test_oracle_include_password()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 203 def test_oracle_include_password start({ adapter: "oracle", database: "db", username: "user", password: "secret" }, ["-p"]) assert !aborted assert_equal ["sqlplus", "user/secret@db"], dbconsole.find_cmd_and_exec_args end
test_postgresql()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 142 def test_postgresql start(adapter: "postgresql", database: "db") assert !aborted assert_equal ["psql", "db"], dbconsole.find_cmd_and_exec_args end
test_postgresql_full()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 148 def test_postgresql_full start(adapter: "postgresql", database: "db", username: "user", password: "q1w2e3", host: "host", port: 5432) assert !aborted assert_equal ["psql", "db"], dbconsole.find_cmd_and_exec_args assert_equal "user", ENV["PGUSER"] assert_equal "host", ENV["PGHOST"] assert_equal "5432", ENV["PGPORT"] assert_not_equal "q1w2e3", ENV["PGPASSWORD"] end
test_postgresql_include_password()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 158 def test_postgresql_include_password start({ adapter: "postgresql", database: "db", username: "user", password: "q1w2e3" }, ["-p"]) assert !aborted assert_equal ["psql", "db"], dbconsole.find_cmd_and_exec_args assert_equal "user", ENV["PGUSER"] assert_equal "q1w2e3", ENV["PGPASSWORD"] end
test_primary_is_automatically_picked_with_3_level_configuration()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 221 def test_primary_is_automatically_picked_with_3_level_configuration sample_config = { "test" => { "primary" => { "adapter" => "postgresql" } } } app_db_config(sample_config) do assert_equal "postgresql", Quails::DBConsole.new.config["adapter"] end end
test_print_help_long()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 271 def test_print_help_long stdout = capture(:stdout) do Quails::Command.invoke(:dbconsole, ["--help"]) end assert_match(/bin\/quails dbconsole \[environment\]/, stdout) end
test_print_help_short()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 264 def test_print_help_short stdout = capture(:stdout) do Quails::Command.invoke(:dbconsole, ["-h"]) end assert_match(/bin\/quails dbconsole \[environment\]/, stdout) end
test_quails_env_is_dev_when_argument_is_dev_and_dev_env_is_present()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 116 def test_quails_env_is_dev_when_argument_is_dev_and_dev_env_is_present assert_deprecated do stub_available_environments([ "dev" ]) do assert_match("dev", parse_arguments([ "dev" ])[:environment]) end end end
test_quails_env_is_development_when_argument_is_dev()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 102 def test_quails_env_is_development_when_argument_is_dev assert_deprecated do stub_available_environments([ "development", "test" ]) do assert_match("development", parse_arguments([ "dev" ])[:environment]) end end end
test_quails_env_is_development_when_environment_option_is_dev()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 110 def test_quails_env_is_development_when_environment_option_is_dev stub_available_environments([ "development", "test" ]) do assert_match("development", parse_arguments([ "-e", "dev" ])[:environment]) end end
test_specifying_a_custom_connection_and_environment()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 235 def test_specifying_a_custom_connection_and_environment stub_available_environments(["development"]) do dbconsole = parse_arguments(["-c", "custom", "-e", "development"]) assert_equal "development", dbconsole[:environment] assert_equal "custom", dbconsole.connection end end
test_specifying_a_missing_connection()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 244 def test_specifying_a_missing_connection app_db_config({}) do e = assert_raises(ActiveRecord::AdapterNotSpecified) do Quails::Command.invoke(:dbconsole, ["-c", "i_do_not_exist"]) end assert_includes e.message, "'i_do_not_exist' connection is not configured." end end
test_specifying_a_missing_environment()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 254 def test_specifying_a_missing_environment app_db_config({}) do e = assert_raises(ActiveRecord::AdapterNotSpecified) do Quails::Command.invoke(:dbconsole) end assert_includes e.message, "'test' database is not configured." end end
test_sqlite3()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 166 def test_sqlite3 start(adapter: "sqlite3", database: "db.sqlite3") assert !aborted assert_equal ["sqlite3", Quails.root.join("db.sqlite3").to_s], dbconsole.find_cmd_and_exec_args end
test_sqlite3_db_absolute_path()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 183 def test_sqlite3_db_absolute_path start(adapter: "sqlite3", database: "/tmp/db.sqlite3") assert !aborted assert_equal ["sqlite3", "/tmp/db.sqlite3"], dbconsole.find_cmd_and_exec_args end
test_sqlite3_db_without_defined_quails_root()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 189 def test_sqlite3_db_without_defined_quails_root Quails.stub(:respond_to?, false) do start(adapter: "sqlite3", database: "config/db.sqlite3") assert !aborted assert_equal ["sqlite3", Quails.root.join("../config/db.sqlite3").to_s], dbconsole.find_cmd_and_exec_args end end
test_sqlite3_header()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 178 def test_sqlite3_header start({ adapter: "sqlite3", database: "db.sqlite3" }, ["--header"]) assert_equal ["sqlite3", "-header", Quails.root.join("db.sqlite3").to_s], dbconsole.find_cmd_and_exec_args end
test_sqlite3_mode()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 172 def test_sqlite3_mode start({ adapter: "sqlite3", database: "db.sqlite3" }, ["--mode", "html"]) assert !aborted assert_equal ["sqlite3", "-html", Quails.root.join("db.sqlite3").to_s], dbconsole.find_cmd_and_exec_args end
test_sqlserver()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 209 def test_sqlserver start(adapter: "sqlserver", database: "db", username: "user", password: "secret", host: "localhost", port: 1433) assert_not aborted assert_equal ["sqsh", "-D", "db", "-U", "user", "-P", "secret", "-S", "localhost:1433"], dbconsole.find_cmd_and_exec_args end
test_unknown_command_line_client()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 215 def test_unknown_command_line_client start(adapter: "unknown", database: "db") assert aborted assert_match(/Unknown command-line client for db/, output) end
Private Instance Methods
app_db_config(results) { || ... }
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 283 def app_db_config(results) Quails.application.config.stub(:database_configuration, results || {}) do yield end end
capture_abort() { || ... }
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 308 def capture_abort @aborted = false @output = capture(:stderr) do begin yield rescue SystemExit @aborted = true end end end
find_cmd_and_exec(*args)
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 293 def find_cmd_and_exec(*args) @find_cmd_and_exec_args = args end
make_dbconsole()
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 289 def make_dbconsole Class.new(Quails::DBConsole) do attr_reader :find_cmd_and_exec_args def find_cmd_and_exec(*args) @find_cmd_and_exec_args = args end end end
parse_arguments(args)
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 337 def parse_arguments(args) Quails::Command::DbconsoleCommand.class_eval do alias_method :old_perform, :perform define_method(:perform) do extract_environment_option_from_argument options end end Quails::Command.invoke(:dbconsole, args) ensure Quails::Command::DbconsoleCommand.class_eval do undef_method :perform alias_method :perform, :old_perform undef_method :old_perform end end
start(config = {}, argv = [])
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 301 def start(config = {}, argv = []) @dbconsole = make_dbconsole.new(parse_arguments(argv)) @dbconsole.stub(:config, config.stringify_keys) do capture_abort { @dbconsole.start } end end
stub_available_environments(environments) { || ... }
click to toggle source
# File railties/test/commands/dbconsole_test.rb, line 319 def stub_available_environments(environments) Quails::Command::DbconsoleCommand.class_eval do alias_method :old_environments, :available_environments define_method :available_environments do environments end end yield ensure Quails::Command::DbconsoleCommand.class_eval do undef_method :available_environments alias_method :available_environments, :old_environments undef_method :old_environments end end