aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test/initializable_test.rb
diff options
context:
space:
mode:
authorYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-11-02 17:19:03 -0800
committerYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-11-05 14:44:29 -0800
commit897164ddb70ed6f51b026e5c91f2bf3f7aa46ba6 (patch)
treebc4d889eb2df4bb6e22650abe651f6d9ac2d3e27 /railties/test/initializable_test.rb
parent6c59e5a558922b8f4084533071c3d93e151858ac (diff)
downloadrails-897164ddb70ed6f51b026e5c91f2bf3f7aa46ba6.tar.gz
rails-897164ddb70ed6f51b026e5c91f2bf3f7aa46ba6.tar.bz2
rails-897164ddb70ed6f51b026e5c91f2bf3f7aa46ba6.zip
Conceptually unify instance & global initializers
Diffstat (limited to 'railties/test/initializable_test.rb')
-rw-r--r--railties/test/initializable_test.rb72
1 files changed, 60 insertions, 12 deletions
diff --git a/railties/test/initializable_test.rb b/railties/test/initializable_test.rb
index f7237e69cc..463fdc03c0 100644
--- a/railties/test/initializable_test.rb
+++ b/railties/test/initializable_test.rb
@@ -4,59 +4,59 @@ require 'rails/initializable'
module InitializableTests
class Foo
- extend Rails::Initializable
+ include Rails::Initializable
class << self
attr_accessor :foo, :bar
end
- initializer :omg do
+ initializer :omg, :global => true do
@foo ||= 0
@foo += 1
end
end
class Bar < Foo
- initializer :bar do
+ initializer :bar, :global => true do
@bar ||= 0
@bar += 1
end
end
module Word
- extend Rails::Initializable
+ include Rails::Initializable
- initializer :word do
+ initializer :word, :global => true do
$word = "bird"
end
end
class Parent
- extend Rails::Initializable
+ include Rails::Initializable
- initializer :one do
+ initializer :one, :global => true do
$arr << 1
end
- initializer :two do
+ initializer :two, :global => true do
$arr << 2
end
end
class Child < Parent
- extend Rails::Initializable
+ include Rails::Initializable
- initializer :three, :before => :one do
+ initializer :three, :before => :one, :global => true do
$arr << 3
end
- initializer :four, :after => :one do
+ initializer :four, :after => :one, :global => true do
$arr << 4
end
end
class Parent
- initializer :five, :before => :one do
+ initializer :five, :before => :one, :global => true do
$arr << 5
end
end
@@ -81,6 +81,38 @@ module InitializableTests
end
end
+ class WithArgs
+ include Rails::Initializable
+
+ initializer :foo do |arg|
+ $with_arg = arg
+ end
+ end
+
+ class OverriddenInitializer
+ class MoreInitializers
+ include Rails::Initializable
+
+ initializer :startup, :before => :last do
+ $arr << 2
+ end
+ end
+
+ include Rails::Initializable
+
+ initializer :first do
+ $arr << 1
+ end
+
+ initializer :last do
+ $arr << 3
+ end
+
+ def self.initializers
+ super + MoreInitializers.initializers
+ end
+ end
+
class Basic < ActiveSupport::TestCase
include ActiveSupport::Testing::Isolation
@@ -140,4 +172,20 @@ module InitializableTests
assert_equal [3, 4], $arr
end
end
+
+ class WithArgsTest < ActiveSupport::TestCase
+ test "running initializers with args" do
+ $with_arg = nil
+ WithArgs.new.run_initializers('foo')
+ assert_equal 'foo', $with_arg
+ end
+ end
+
+ class OverriddenInitializerTest < ActiveSupport::TestCase
+ test "merges in the initializers from the parent in the right order" do
+ $arr = []
+ OverriddenInitializer.new.run_initializers
+ assert_equal [1, 2, 3], $arr
+ end
+ end
end \ No newline at end of file