aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test/application/initializers/hooks_test.rb
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2010-05-16 00:34:54 +0200
committerJosé Valim <jose.valim@gmail.com>2010-05-16 00:36:46 +0200
commit3afdfc35e8aec7e6379e093dd1278cb3de54f21b (patch)
tree851d7463d9626f852c6ef863110b381e0d10618f /railties/test/application/initializers/hooks_test.rb
parent351816fab6dbe564b7bddbd877648edb06a2bfb1 (diff)
downloadrails-3afdfc35e8aec7e6379e093dd1278cb3de54f21b.tar.gz
rails-3afdfc35e8aec7e6379e093dd1278cb3de54f21b.tar.bz2
rails-3afdfc35e8aec7e6379e093dd1278cb3de54f21b.zip
Expose remaining hooks to minimize the need for a Railtie based on feedback from plugin developers.
Diffstat (limited to 'railties/test/application/initializers/hooks_test.rb')
-rw-r--r--railties/test/application/initializers/hooks_test.rb86
1 files changed, 86 insertions, 0 deletions
diff --git a/railties/test/application/initializers/hooks_test.rb b/railties/test/application/initializers/hooks_test.rb
new file mode 100644
index 0000000000..1316bf6ee2
--- /dev/null
+++ b/railties/test/application/initializers/hooks_test.rb
@@ -0,0 +1,86 @@
+require "isolation/abstract_unit"
+
+module ApplicationTests
+ class InitializersTest < Test::Unit::TestCase
+ include ActiveSupport::Testing::Isolation
+
+ def setup
+ build_app
+ boot_rails
+ FileUtils.rm_rf "#{app_path}/config/environments"
+ end
+
+ test "load initializers" do
+ app_file "config/initializers/foo.rb", "$foo = true"
+ require "#{app_path}/config/environment"
+ assert $foo
+ end
+
+ test "hooks block works correctly without cache classes (before_eager_load is not called)" do
+ add_to_config <<-RUBY
+ $initialization_callbacks = []
+ config.root = "#{app_path}"
+ config.cache_classes = false
+ config.before_configuration { $initialization_callbacks << 1 }
+ config.before_initialize { $initialization_callbacks << 2 }
+ config.before_eager_load { Boom }
+ config.after_initialize { $initialization_callbacks << 3 }
+ RUBY
+
+ require "#{app_path}/config/environment"
+ assert_equal [1,2,3], $initialization_callbacks
+ end
+
+ test "hooks block works correctly with cache classes" do
+ add_to_config <<-RUBY
+ $initialization_callbacks = []
+ config.root = "#{app_path}"
+ config.cache_classes = true
+ config.before_configuration { $initialization_callbacks << 1 }
+ config.before_initialize { $initialization_callbacks << 2 }
+ config.before_eager_load { $initialization_callbacks << 3 }
+ config.after_initialize { $initialization_callbacks << 4 }
+ RUBY
+
+ require "#{app_path}/config/environment"
+ assert_equal [1,2,3,4], $initialization_callbacks
+ end
+
+ test "after_initialize runs after frameworks have been initialized" do
+ $activerecord_configurations = nil
+ add_to_config <<-RUBY
+ config.after_initialize { $activerecord_configurations = ActiveRecord::Base.configurations }
+ RUBY
+
+ require "#{app_path}/config/environment"
+ assert $activerecord_configurations
+ assert $activerecord_configurations['development']
+ end
+
+ test "after_initialize happens after to_prepare in development" do
+ $order = []
+ add_to_config <<-RUBY
+ config.cache_classes = false
+ config.after_initialize { $order << :after_initialize }
+ config.to_prepare { $order << :to_prepare }
+ RUBY
+
+ require "#{app_path}/config/environment"
+ assert [:to_prepare, :after_initialize], $order
+ end
+
+ test "after_initialize happens after to_prepare in production" do
+ $order = []
+ add_to_config <<-RUBY
+ config.cache_classes = true
+ config.after_initialize { $order << :after_initialize }
+ config.to_prepare { $order << :to_prepare }
+ RUBY
+
+ require "#{app_path}/config/application"
+ Rails.env.replace "production"
+ require "#{app_path}/config/environment"
+ assert [:to_prepare, :after_initialize], $order
+ end
+ end
+end