class FullStackConsoleTest

Public Instance Methods

setup() click to toggle source
# File railties/test/application/console_test.rb, line 102
  def setup
    skip "PTY unavailable" unless available_pty?

    build_app
    app_file "app/models/post.rb", <<-CODE
      class Post < ActiveRecord::Base
      end
    CODE
    system "#{app_path}/bin/quails runner 'Post.connection.create_table :posts'"

    @master, @slave = PTY.open
  end
spawn_console(options) click to toggle source
# File railties/test/application/console_test.rb, line 126
def spawn_console(options)
  Process.spawn(
    "#{app_path}/bin/quails console #{options}",
    in: @slave, out: @slave, err: @slave
  )

  assert_output "> ", @master, 30
end
teardown() click to toggle source
# File railties/test/application/console_test.rb, line 115
def teardown
  teardown_app
end
test_environment_option_and_irb_option() click to toggle source
# File railties/test/application/console_test.rb, line 151
def test_environment_option_and_irb_option
  spawn_console("test -- --verbose")

  write_prompt "a = 1", "a = 1"
  write_prompt "puts Quails.env", "puts Quails.env\r\ntest"
  @master.puts "quit"
end
test_sandbox() click to toggle source
# File railties/test/application/console_test.rb, line 135
def test_sandbox
  spawn_console("--sandbox")

  write_prompt "Post.count", "=> 0"
  write_prompt "Post.create"
  write_prompt "Post.count", "=> 1"
  @master.puts "quit"

  spawn_console("--sandbox")

  write_prompt "Post.count", "=> 0"
  write_prompt "Post.transaction { Post.create; raise }"
  write_prompt "Post.count", "=> 0"
  @master.puts "quit"
end
write_prompt(command, expected_output = nil) click to toggle source
# File railties/test/application/console_test.rb, line 119
def write_prompt(command, expected_output = nil)
  @master.puts command
  assert_output command, @master
  assert_output expected_output, @master if expected_output
  assert_output "> ", @master
end