aboutsummaryrefslogtreecommitdiffstats
path: root/railties/test/metal_test.rb
diff options
context:
space:
mode:
authorSimon Jefford <simon.jefford@gmail.com>2009-03-03 12:39:19 -0600
committerJoshua Peek <josh@joshpeek.com>2009-03-03 12:39:19 -0600
commit4d4d2c3896ed5a5d74da833c5c3132f406f4eab7 (patch)
tree82245e9e41fb058e4d9a581a37631c3affcb2520 /railties/test/metal_test.rb
parent818556ec4f237b19f28fdecdfe6037718cceba37 (diff)
downloadrails-4d4d2c3896ed5a5d74da833c5c3132f406f4eab7.tar.gz
rails-4d4d2c3896ed5a5d74da833c5c3132f406f4eab7.tar.bz2
rails-4d4d2c3896ed5a5d74da833c5c3132f406f4eab7.zip
Enhanced Rails Metal - the load order of metals can now be configured [#2057 state:resolved]
Signed-off-by: Joshua Peek <josh@joshpeek.com>
Diffstat (limited to 'railties/test/metal_test.rb')
-rw-r--r--railties/test/metal_test.rb57
1 files changed, 57 insertions, 0 deletions
diff --git a/railties/test/metal_test.rb b/railties/test/metal_test.rb
new file mode 100644
index 0000000000..cff231ed00
--- /dev/null
+++ b/railties/test/metal_test.rb
@@ -0,0 +1,57 @@
+require 'abstract_unit'
+require 'initializer'
+
+class MetalTest < Test::Unit::TestCase
+ def test_metals_should_return_list_of_found_metal_apps
+ use_appdir("singlemetal") do
+ assert_equal(["FooMetal"], found_metals_as_string_array)
+ end
+ end
+
+ def test_metals_should_return_alphabetical_list_of_found_metal_apps
+ use_appdir("multiplemetals") do
+ assert_equal(["MetalA", "MetalB"], found_metals_as_string_array)
+ end
+ end
+
+ def test_metals_load_order_should_be_overriden_by_requested_metals
+ use_appdir("multiplemetals") do
+ Rails::Rack::Metal.requested_metals = ["MetalB", "MetalA"]
+ assert_equal(["MetalB", "MetalA"], found_metals_as_string_array)
+ end
+ end
+
+ def test_metals_not_listed_should_not_load
+ use_appdir("multiplemetals") do
+ Rails::Rack::Metal.requested_metals = ["MetalB"]
+ assert_equal(["MetalB"], found_metals_as_string_array)
+ end
+ end
+p
+ def test_metal_finding_should_work_with_subfolders
+ use_appdir("subfolders") do
+ assert_equal(["Folder::MetalA", "Folder::MetalB"], found_metals_as_string_array)
+ end
+ end
+
+ def test_metal_finding_with_requested_metals_should_work_with_subfolders
+ use_appdir("subfolders") do
+ Rails::Rack::Metal.requested_metals = ["Folder::MetalB"]
+ assert_equal(["Folder::MetalB"], found_metals_as_string_array)
+ end
+ end
+
+ private
+
+ def use_appdir(root)
+ dir = "#{File.dirname(__FILE__)}/fixtures/metal/#{root}"
+ Rails::Rack::Metal.metal_paths = ["#{dir}/app/metal"]
+ Rails::Rack::Metal.requested_metals = nil
+ $LOAD_PATH << "#{dir}/app/metal"
+ yield
+ end
+
+ def found_metals_as_string_array
+ Rails::Rack::Metal.metals.map { |m| m.to_s }
+ end
+end