aboutsummaryrefslogtreecommitdiffstats
path: root/activesupport/test/autoload_test.rb
diff options
context:
space:
mode:
authorJosé Valim <jose.valim@gmail.com>2012-08-01 18:23:11 +0200
committerJosé Valim <jose.valim@gmail.com>2012-08-21 14:46:12 -0300
commita1687e48cba2f0447f02248939cde05502562e87 (patch)
tree8128aeed24a85510ed71093f7b1a09ba04d7d800 /activesupport/test/autoload_test.rb
parent11bc3487ab0a9a99de2542f0aa2777c88c7c2198 (diff)
downloadrails-a1687e48cba2f0447f02248939cde05502562e87.tar.gz
rails-a1687e48cba2f0447f02248939cde05502562e87.tar.bz2
rails-a1687e48cba2f0447f02248939cde05502562e87.zip
Make ActiveSupport::Autoload local
Previously, ActiveSupport::Autoload was global and reserved for usage inside Rails. This pull request makes it local, fixes its test (they were not being run because its file was named wrongly) and make it part of Rails public API.
Diffstat (limited to 'activesupport/test/autoload_test.rb')
-rw-r--r--activesupport/test/autoload_test.rb70
1 files changed, 70 insertions, 0 deletions
diff --git a/activesupport/test/autoload_test.rb b/activesupport/test/autoload_test.rb
new file mode 100644
index 0000000000..7d02d835a8
--- /dev/null
+++ b/activesupport/test/autoload_test.rb
@@ -0,0 +1,70 @@
+require 'abstract_unit'
+
+class TestAutoloadModule < ActiveSupport::TestCase
+ include ActiveSupport::Testing::Isolation
+
+ module ::Fixtures
+ extend ActiveSupport::Autoload
+
+ module Autoload
+ extend ActiveSupport::Autoload
+ end
+ end
+
+ test "the autoload module works like normal autoload" do
+ module ::Fixtures::Autoload
+ autoload :SomeClass, "fixtures/autoload/some_class"
+ end
+
+ assert_nothing_raised { ::Fixtures::Autoload::SomeClass }
+ end
+
+ test "when specifying an :eager constant it still works like normal autoload by default" do
+ module ::Fixtures::Autoload
+ autoload :SomeClass, "fixtures/autoload/some_class"
+ end
+
+ assert !$LOADED_FEATURES.include?("fixtures/autoload/some_class.rb")
+ assert_nothing_raised { ::Fixtures::Autoload::SomeClass }
+ end
+
+ test "the location of autoloaded constants defaults to :name.underscore" do
+ module ::Fixtures::Autoload
+ autoload :SomeClass
+ end
+
+ assert !$LOADED_FEATURES.include?("fixtures/autoload/some_class.rb")
+ assert_nothing_raised { ::Fixtures::Autoload::SomeClass }
+ end
+
+ test "the location of :eager autoloaded constants defaults to :name.underscore" do
+ module ::Fixtures::Autoload
+ autoload :SomeClass
+ end
+
+ ::Fixtures::Autoload.eager_load!
+ assert_nothing_raised { ::Fixtures::Autoload::SomeClass }
+ end
+
+ test "a directory for a block of autoloads can be specified" do
+ module ::Fixtures
+ autoload_under "autoload" do
+ autoload :AnotherClass
+ end
+ end
+
+ assert !$LOADED_FEATURES.include?("fixtures/autoload/another_class.rb")
+ assert_nothing_raised { ::Fixtures::AnotherClass }
+ end
+
+ test "a path for a block of autoloads can be specified" do
+ module ::Fixtures
+ autoload_at "fixtures/autoload/another_class" do
+ autoload :AnotherClass
+ end
+ end
+
+ assert !$LOADED_FEATURES.include?("fixtures/autoload/another_class.rb")
+ assert_nothing_raised { ::Fixtures::AnotherClass }
+ end
+end \ No newline at end of file