diff options
Diffstat (limited to 'railties/test/commands/console_test.rb')
-rw-r--r-- | railties/test/commands/console_test.rb | 106 |
1 files changed, 106 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..9aa1d68675 --- /dev/null +++ b/railties/test/commands/console_test.rb @@ -0,0 +1,106 @@ +require 'abstract_unit' +require 'rails/commands/console' + +class Rails::ConsoleTest < ActiveSupport::TestCase + class FakeConsole + end + + def setup + 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 \w+ 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 \w+ environment in sandbox \(Rails/, output + end + + def test_console_with_environment + app.expects(:sandbox=).with(nil) + FakeConsole.expects(:start) + + start ["-e production"] + + assert_match /production/, output + end + + def test_console_with_rails_environment + app.expects(:sandbox=).with(nil) + FakeConsole.expects(:start) + + start ["RAILS_ENV=production"] + + assert_match /production/, 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 |