aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test
diff options
context:
space:
mode:
Diffstat (limited to 'railties/test')
-rw-r--r--railties/test/abstract_unit.rb2
-rw-r--r--railties/test/application/initializers/frameworks_test.rb10
-rw-r--r--railties/test/application/middleware_test.rb11
-rw-r--r--railties/test/application/runner_test.rb49
-rw-r--r--railties/test/generators/actions_test.rb6
-rw-r--r--railties/test/generators/resource_generator_test.rb8
-rw-r--r--railties/test/generators/scaffold_controller_generator_test.rb14
-rw-r--r--railties/test/generators/scaffold_generator_test.rb106
-rw-r--r--railties/test/initializable_test.rb39
-rw-r--r--railties/test/log_subscriber_test.rb123
-rw-r--r--railties/test/railties/engine_test.rb2
-rw-r--r--railties/test/railties/railtie_test.rb9
12 files changed, 190 insertions, 189 deletions
diff --git a/railties/test/abstract_unit.rb b/railties/test/abstract_unit.rb
index d04a2aa1f3..a05bae5dcc 100644
--- a/railties/test/abstract_unit.rb
+++ b/railties/test/abstract_unit.rb
@@ -1,5 +1,3 @@
-ORIG_ARGV = ARGV.dup
-
require File.expand_path("../../../load_paths", __FILE__)
require 'stringio'
diff --git a/railties/test/application/initializers/frameworks_test.rb b/railties/test/application/initializers/frameworks_test.rb
index 35ea2729d3..7269a7c5a8 100644
--- a/railties/test/application/initializers/frameworks_test.rb
+++ b/railties/test/application/initializers/frameworks_test.rb
@@ -28,8 +28,10 @@ module ApplicationTests
RUBY
require "#{app_path}/config/environment"
- ActionController::Base.view_paths.include?(File.expand_path("app/views", app_path))
- ActionMailer::Base.view_paths.include?(File.expand_path("app/views", app_path))
+
+ expanded_path = File.expand_path("app/views", app_path)
+ assert_equal ActionController::Base.view_paths[0].to_s, expanded_path
+ assert_equal ActionMailer::Base.view_paths[0].to_s, expanded_path
end
test "allows me to configure default url options for ActionMailer" do
@@ -40,7 +42,7 @@ module ApplicationTests
RUBY
require "#{app_path}/config/environment"
- assert "test.rails", ActionMailer::Base.default_url_options[:host]
+ assert_equal "test.rails", ActionMailer::Base.default_url_options[:host]
end
# AS
@@ -57,7 +59,7 @@ module ApplicationTests
Dir.chdir("#{app_path}/app") do
require "#{app_path}/config/environment"
- assert_raises(NoMethodError) { [1,2,3].sample }
+ assert_raises(NoMethodError) { [1,2,3].forty_two }
end
end
diff --git a/railties/test/application/middleware_test.rb b/railties/test/application/middleware_test.rb
index 999f666a64..e66e81ea2c 100644
--- a/railties/test/application/middleware_test.rb
+++ b/railties/test/application/middleware_test.rb
@@ -83,6 +83,17 @@ module ApplicationTests
assert_equal "Rack::Config", middleware.second
end
+ test "RAILS_CACHE does not respond to middleware" do
+ add_to_config "config.cache_store = :memory_store"
+ boot!
+ assert_equal "Rack::Runtime", middleware.third
+ end
+
+ test "RAILS_CACHE does respond to middleware" do
+ boot!
+ assert_equal "Rack::Runtime", middleware.fourth
+ end
+
test "insert middleware before" do
add_to_config "config.middleware.insert_before ActionDispatch::Static, Rack::Config"
boot!
diff --git a/railties/test/application/runner_test.rb b/railties/test/application/runner_test.rb
new file mode 100644
index 0000000000..d37b7649e2
--- /dev/null
+++ b/railties/test/application/runner_test.rb
@@ -0,0 +1,49 @@
+require 'isolation/abstract_unit'
+
+module ApplicationTests
+ class RunnerTest < Test::Unit::TestCase
+ include ActiveSupport::Testing::Isolation
+
+ def setup
+ build_app
+ boot_rails
+
+ # Lets create a model so we have something to play with
+ app_file "app/models/user.rb", <<-MODEL
+ class User
+ def self.count
+ 42
+ end
+ end
+ MODEL
+ end
+
+ def test_should_run_ruby_statement
+ assert_match "42", Dir.chdir(app_path) { `bundle exec rails runner "puts User.count"` }
+ end
+
+ def test_should_run_file
+ app_file "script/count_users.rb", <<-SCRIPT
+ puts User.count
+ SCRIPT
+
+ assert_match "42", Dir.chdir(app_path) { `bundle exec rails runner "script/count_users.rb"` }
+ end
+
+ def test_should_set_dollar_0_to_file
+ app_file "script/dollar0.rb", <<-SCRIPT
+ puts $0
+ SCRIPT
+
+ assert_match "script/dollar0.rb", Dir.chdir(app_path) { `bundle exec rails runner "script/dollar0.rb"` }
+ end
+
+ def test_should_set_dollar_program_name_to_file
+ app_file "script/program_name.rb", <<-SCRIPT
+ puts $PROGRAM_NAME
+ SCRIPT
+
+ assert_match "script/program_name.rb", Dir.chdir(app_path) { `bundle exec rails runner "script/program_name.rb"` }
+ end
+ end
+end
diff --git a/railties/test/generators/actions_test.rb b/railties/test/generators/actions_test.rb
index 65fbf61902..0472ca73a8 100644
--- a/railties/test/generators/actions_test.rb
+++ b/railties/test/generators/actions_test.rb
@@ -130,9 +130,9 @@ class ActionsTest < Rails::Generators::TestCase
def test_environment_should_include_data_in_environment_initializer_block
run_generator
- load_paths = 'config.load_paths += %w["#{Rails.root}/app/extras"]'
- action :environment, load_paths
- assert_file 'config/application.rb', /#{Regexp.escape(load_paths)}/
+ autoload_paths = 'config.autoload_paths += %w["#{Rails.root}/app/extras"]'
+ action :environment, autoload_paths
+ assert_file 'config/application.rb', /#{Regexp.escape(autoload_paths)}/
end
def test_environment_with_block_should_include_block_contents_in_environment_initializer_block
diff --git a/railties/test/generators/resource_generator_test.rb b/railties/test/generators/resource_generator_test.rb
index 96fd7a0a72..55d5bd6f83 100644
--- a/railties/test/generators/resource_generator_test.rb
+++ b/railties/test/generators/resource_generator_test.rb
@@ -59,14 +59,6 @@ class ResourceGeneratorTest < Rails::Generators::TestCase
end
end
- def test_singleton_resource
- run_generator ["account", "--singleton"]
-
- assert_file "config/routes.rb" do |route|
- assert_match /resource :account$/, route
- end
- end
-
def test_plural_names_are_singularized
content = run_generator ["accounts".freeze]
assert_file "app/models/account.rb", /class Account < ActiveRecord::Base/
diff --git a/railties/test/generators/scaffold_controller_generator_test.rb b/railties/test/generators/scaffold_controller_generator_test.rb
index 8040b22fe6..d55ed22975 100644
--- a/railties/test/generators/scaffold_controller_generator_test.rb
+++ b/railties/test/generators/scaffold_controller_generator_test.rb
@@ -78,20 +78,6 @@ class ScaffoldControllerGeneratorTest < Rails::Generators::TestCase
end
end
- def test_generates_singleton_controller
- run_generator ["User", "name:string", "age:integer", "--singleton"]
-
- assert_file "app/controllers/users_controller.rb" do |content|
- assert_no_match /def index/, content
- end
-
- assert_file "test/functional/users_controller_test.rb" do |content|
- assert_no_match /test "should get index"/, content
- end
-
- assert_no_file "app/views/users/index.html.erb"
- end
-
def test_skip_helper_if_required
run_generator ["User", "name:string", "age:integer", "--no-helper"]
assert_no_file "app/helpers/users_helper.rb"
diff --git a/railties/test/generators/scaffold_generator_test.rb b/railties/test/generators/scaffold_generator_test.rb
index e8e622fe5c..ea469cb3c8 100644
--- a/railties/test/generators/scaffold_generator_test.rb
+++ b/railties/test/generators/scaffold_generator_test.rb
@@ -110,4 +110,110 @@ class ScaffoldGeneratorTest < Rails::Generators::TestCase
# Stylesheets (should not be removed)
assert_file "public/stylesheets/scaffold.css"
end
+
+ def test_scaffold_with_namespace_on_invoke
+ run_generator [ "admin/role", "name:string", "description:string" ]
+
+ # Model
+ assert_file "app/models/admin.rb", /module Admin/
+ assert_file "app/models/admin/role.rb", /class Admin::Role < ActiveRecord::Base/
+ assert_file "test/unit/admin/role_test.rb", /class Admin::RoleTest < ActiveSupport::TestCase/
+ assert_file "test/fixtures/admin/roles.yml"
+ assert_migration "db/migrate/create_admin_roles.rb"
+
+ # Route
+ assert_file "config/routes.rb" do |route|
+ assert_match /namespace :admin do resources :roles end$/, route
+ end
+
+ # Controller
+ assert_file "app/controllers/admin/roles_controller.rb" do |content|
+ assert_match /class Admin::RolesController < ApplicationController/, content
+
+ assert_instance_method :index, content do |m|
+ assert_match /@admin_roles = Admin::Role\.all/, m
+ end
+
+ assert_instance_method :show, content do |m|
+ assert_match /@admin_role = Admin::Role\.find\(params\[:id\]\)/, m
+ end
+
+ assert_instance_method :new, content do |m|
+ assert_match /@admin_role = Admin::Role\.new/, m
+ end
+
+ assert_instance_method :edit, content do |m|
+ assert_match /@admin_role = Admin::Role\.find\(params\[:id\]\)/, m
+ end
+
+ assert_instance_method :create, content do |m|
+ assert_match /@admin_role = Admin::Role\.new\(params\[:admin_role\]\)/, m
+ assert_match /@admin_role\.save/, m
+ assert_match /@admin_role\.errors/, m
+ end
+
+ assert_instance_method :update, content do |m|
+ assert_match /@admin_role = Admin::Role\.find\(params\[:id\]\)/, m
+ assert_match /@admin_role\.update_attributes\(params\[:admin_role\]\)/, m
+ assert_match /@admin_role\.errors/, m
+ end
+
+ assert_instance_method :destroy, content do |m|
+ assert_match /@admin_role = Admin::Role\.find\(params\[:id\]\)/, m
+ assert_match /@admin_role\.destroy/, m
+ end
+ end
+
+ assert_file "test/functional/admin/roles_controller_test.rb",
+ /class Admin::RolesControllerTest < ActionController::TestCase/
+
+ # Views
+ %w(
+ index
+ edit
+ new
+ show
+ _form
+ ).each { |view| assert_file "app/views/admin/roles/#{view}.html.erb" }
+ assert_no_file "app/views/layouts/admin/roles.html.erb"
+
+ # Helpers
+ assert_file "app/helpers/admin/roles_helper.rb"
+ assert_file "test/unit/helpers/admin/roles_helper_test.rb"
+
+ # Stylesheets
+ assert_file "public/stylesheets/scaffold.css"
+ end
+
+ def test_scaffold_with_namespace_on_revoke
+ run_generator [ "admin/role", "name:string", "description:string" ]
+ run_generator [ "admin/role" ], :behavior => :revoke
+
+ # Model
+ assert_file "app/models/admin.rb" # ( should not be remove )
+ assert_no_file "app/models/admin/role.rb"
+ assert_no_file "test/unit/admin/role_test.rb"
+ assert_no_file "test/fixtures/admin/roles.yml"
+ assert_no_migration "db/migrate/create_admin_roles.rb"
+
+ # Route
+ assert_file "config/routes.rb" do |route|
+ assert_no_match /namespace :admin do resources :roles end$/, route
+ end
+
+ # Controller
+ assert_no_file "app/controllers/admin/roles_controller.rb"
+ assert_no_file "test/functional/admin/roles_controller_test.rb"
+
+ # Views
+ assert_no_file "app/views/admin/roles"
+ assert_no_file "app/views/layouts/admin/roles.html.erb"
+
+ # Helpers
+ assert_no_file "app/helpers/admin/roles_helper.rb"
+ assert_no_file "test/unit/helpers/admin/roles_helper_test.rb"
+
+ # Stylesheets (should not be removed)
+ assert_file "public/stylesheets/scaffold.css"
+ end
end
diff --git a/railties/test/initializable_test.rb b/railties/test/initializable_test.rb
index 74301a5dc5..72c35879c5 100644
--- a/railties/test/initializable_test.rb
+++ b/railties/test/initializable_test.rb
@@ -5,10 +5,7 @@ module InitializableTests
class Foo
include Rails::Initializable
-
- class << self
- attr_accessor :foo, :bar
- end
+ attr_accessor :foo, :bar
initializer :start do
@foo ||= 0
@@ -158,30 +155,22 @@ module InitializableTests
include ActiveSupport::Testing::Isolation
test "initializers run" do
- Foo.run_initializers
- assert_equal 1, Foo.foo
+ foo = Foo.new
+ foo.run_initializers
+ assert_equal 1, foo.foo
end
test "initializers are inherited" do
- Bar.run_initializers
- assert_equal [1, 1], [Bar.foo, Bar.bar]
+ bar = Bar.new
+ bar.run_initializers
+ assert_equal [1, 1], [bar.foo, bar.bar]
end
test "initializers only get run once" do
- Foo.run_initializers
- Foo.run_initializers
- assert_equal 1, Foo.foo
- end
-
- test "running initializers on children does not effect the parent" do
- Bar.run_initializers
- assert_nil Foo.foo
- assert_nil Foo.bar
- end
-
- test "initializing with modules" do
- Word.run_initializers
- assert_equal "bird", $word
+ foo = Foo.new
+ foo.run_initializers
+ foo.run_initializers
+ assert_equal 1, foo.foo
end
test "creating initializer without a block raises an error" do
@@ -198,19 +187,19 @@ module InitializableTests
class BeforeAfter < ActiveSupport::TestCase
test "running on parent" do
$arr = []
- Parent.run_initializers
+ Parent.new.run_initializers
assert_equal [5, 1, 2], $arr
end
test "running on child" do
$arr = []
- Child.run_initializers
+ Child.new.run_initializers
assert_equal [5, 3, 1, 4, 2], $arr
end
test "handles dependencies introduced before all initializers are loaded" do
$arr = []
- Interdependent::Application.run_initializers
+ Interdependent::Application.new.run_initializers
assert_equal [1, 2, 3, 4], $arr
end
end
diff --git a/railties/test/log_subscriber_test.rb b/railties/test/log_subscriber_test.rb
deleted file mode 100644
index a3a755ae62..0000000000
--- a/railties/test/log_subscriber_test.rb
+++ /dev/null
@@ -1,123 +0,0 @@
-require 'abstract_unit'
-require 'rails/log_subscriber/test_helper'
-
-class MyLogSubscriber < Rails::LogSubscriber
- attr_reader :event
-
- def some_event(event)
- @event = event
- info event.name
- end
-
- def foo(event)
- debug "debug"
- info "info"
- warn "warn"
- end
-
- def bar(event)
- info "#{color("cool", :red)}, #{color("isn't it?", :blue, true)}"
- end
-
- def puke(event)
- raise "puke"
- end
-end
-
-class SyncLogSubscriberTest < ActiveSupport::TestCase
- include Rails::LogSubscriber::TestHelper
-
- def setup
- super
- @log_subscriber = MyLogSubscriber.new
- end
-
- def teardown
- super
- Rails::LogSubscriber.log_subscribers.clear
- end
-
- def instrument(*args, &block)
- ActiveSupport::Notifications.instrument(*args, &block)
- end
-
- def test_proxies_method_to_rails_logger
- @log_subscriber.foo(nil)
- assert_equal %w(debug), @logger.logged(:debug)
- assert_equal %w(info), @logger.logged(:info)
- assert_equal %w(warn), @logger.logged(:warn)
- end
-
- def test_set_color_for_messages
- Rails::LogSubscriber.colorize_logging = true
- @log_subscriber.bar(nil)
- assert_equal "\e[31mcool\e[0m, \e[1m\e[34misn't it?\e[0m", @logger.logged(:info).last
- end
-
- def test_does_not_set_color_if_colorize_logging_is_set_to_false
- @log_subscriber.bar(nil)
- assert_equal "cool, isn't it?", @logger.logged(:info).last
- end
-
- def test_event_is_sent_to_the_registered_class
- Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber
- instrument "some_event.my_log_subscriber"
- wait
- assert_equal %w(some_event.my_log_subscriber), @logger.logged(:info)
- end
-
- def test_event_is_an_active_support_notifications_event
- Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber
- instrument "some_event.my_log_subscriber"
- wait
- assert_kind_of ActiveSupport::Notifications::Event, @log_subscriber.event
- end
-
- def test_does_not_send_the_event_if_it_doesnt_match_the_class
- Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber
- instrument "unknown_event.my_log_subscriber"
- wait
- # If we get here, it means that NoMethodError was not raised.
- end
-
- def test_does_not_send_the_event_if_logger_is_nil
- Rails.logger = nil
- @log_subscriber.expects(:some_event).never
- Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber
- instrument "some_event.my_log_subscriber"
- wait
- end
-
- def test_does_not_fail_with_non_namespaced_events
- Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber
- instrument "whatever"
- wait
- end
-
- def test_flushes_loggers
- Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber
- Rails::LogSubscriber.flush_all!
- assert_equal 1, @logger.flush_count
- end
-
- def test_flushes_the_same_logger_just_once
- Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber
- Rails::LogSubscriber.add :another, @log_subscriber
- Rails::LogSubscriber.flush_all!
- wait
- assert_equal 1, @logger.flush_count
- end
-
- def test_logging_does_not_die_on_failures
- Rails::LogSubscriber.add :my_log_subscriber, @log_subscriber
- instrument "puke.my_log_subscriber"
- instrument "some_event.my_log_subscriber"
- wait
-
- assert_equal 1, @logger.logged(:info).size
- assert_equal 'some_event.my_log_subscriber', @logger.logged(:info).last
-
- assert_equal 1, @logger.logged(:error).size
- assert_equal 'Could not log "puke.my_log_subscriber" event. RuntimeError: puke', @logger.logged(:error).last
- end
-end \ No newline at end of file
diff --git a/railties/test/railties/engine_test.rb b/railties/test/railties/engine_test.rb
index b3f65fd00d..3fe01e543c 100644
--- a/railties/test/railties/engine_test.rb
+++ b/railties/test/railties/engine_test.rb
@@ -41,7 +41,7 @@ module RailtiesTest
boot_rails
- initializers = Rails.application.initializers
+ initializers = Rails.application.initializers.tsort
index = initializers.index { |i| i.name == "dummy_initializer" }
selection = initializers[(index-3)..(index)].map(&:name).map(&:to_s)
diff --git a/railties/test/railties/railtie_test.rb b/railties/test/railties/railtie_test.rb
index 2accaca855..c74cc01dc1 100644
--- a/railties/test/railties/railtie_test.rb
+++ b/railties/test/railties/railtie_test.rb
@@ -48,15 +48,6 @@ module RailtiesTest
assert_equal "hello", AppTemplate::Application.config.foo.greetings
end
- test "railtie can add log subscribers" do
- begin
- class Foo < Rails::Railtie ; log_subscriber(:foo, Rails::LogSubscriber.new) ; end
- assert_kind_of Rails::LogSubscriber, Rails::LogSubscriber.log_subscribers[0]
- ensure
- Rails::LogSubscriber.log_subscribers.clear
- end
- end
-
test "railtie can add to_prepare callbacks" do
$to_prepare = false
class Foo < Rails::Railtie ; config.to_prepare { $to_prepare = true } ; end