diff options
author | Piotr Sarnacki <drogus@gmail.com> | 2012-02-01 13:36:47 +0100 |
---|---|---|
committer | Piotr Sarnacki <drogus@gmail.com> | 2012-02-16 20:41:35 +0100 |
commit | dd655d88d660da8c094d20948ee721d29852f723 (patch) | |
tree | e227fd6a6ba69a76ea61858a9ffeafcf1e997344 /railties/test/commands | |
parent | 951b58206255791587e2491435a80cf0ab3b797b (diff) | |
download | rails-dd655d88d660da8c094d20948ee721d29852f723.tar.gz rails-dd655d88d660da8c094d20948ee721d29852f723.tar.bz2 rails-dd655d88d660da8c094d20948ee721d29852f723.zip |
Refactor Rails::Console to make it easier to test and add tests for it
Diffstat (limited to 'railties/test/commands')
-rw-r--r-- | railties/test/commands/console_test.rb | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/railties/test/commands/console_test.rb b/railties/test/commands/console_test.rb new file mode 100644 index 0000000000..eb0a29d84a --- /dev/null +++ b/railties/test/commands/console_test.rb @@ -0,0 +1,84 @@ +require 'abstract_unit' +require 'rails/commands/console' + +class Rails::ConsoleTest < ActiveSupport::TestCase + class FakeConsole + end + + def test_sandbox_option + console = Rails::Console.new(app, ["--sandbox"]) + assert console.sandbox? + end + + def test_short_version_of_sandbox_option + console = Rails::Console.new(app, ["-s"]) + assert console.sandbox? + end + + def test_debugger_option + console = Rails::Console.new(app, ["--debugger"]) + assert console.debugger? + end + + def test_no_options + console = Rails::Console.new(app, []) + assert !console.debugger? + assert !console.sandbox? + end + + def test_start + app.expects(:sandbox=).with(nil) + FakeConsole.expects(:start) + + start + + assert_match /Loading development environment \(Rails/, output + end + + def test_start_with_debugger + app.expects(:sandbox=).with(nil) + rails_console.expects(:require_debugger).returns(nil) + FakeConsole.expects(:start) + + start ["--debugger"] + end + + def test_start_with_sandbox + app.expects(:sandbox=).with(true) + FakeConsole.expects(:start) + + start ["--sandbox"] + + assert_match /Loading development environment in sandbox \(Rails/, output + end + + def test_console_defaults_to_IRB + config = mock("config", :console => nil) + app = mock("app", :config => config) + app.expects(:load_console).returns(nil) + + assert_equal IRB, Rails::Console.new(app).console + end + + private + + attr_reader :output + + def rails_console + @rails_console ||= Rails::Console.new(app) + end + + def start(argv = []) + rails_console.stubs(:arguments => argv) + @output = output = capture(:stdout) { rails_console.start } + end + + def app + @app ||= begin + config = mock("config", :console => FakeConsole) + app = mock("app", :config => config) + app.expects(:load_console) + app + end + end +end |