diff options
| author | Jon Leighton <j@jonathanleighton.com> | 2010-10-14 10:25:43 +0100 |
|---|---|---|
| committer | Jon Leighton <j@jonathanleighton.com> | 2010-10-14 10:25:43 +0100 |
| commit | 3fb493c2b037ffbdda5c91d66334ec6f79faa2d1 (patch) | |
| tree | e49b072103bbfe6fb6159954c786a31f44099325 /railties/test | |
| parent | 212fdd8ba9624f61421a7a950283537a3d39ac18 (diff) | |
| parent | 01ab6f961bff150d50c99f03fa3946f48ac29b17 (diff) | |
| download | rails-3fb493c2b037ffbdda5c91d66334ec6f79faa2d1.tar.gz rails-3fb493c2b037ffbdda5c91d66334ec6f79faa2d1.tar.bz2 rails-3fb493c2b037ffbdda5c91d66334ec6f79faa2d1.zip | |
Merge branch 'master' into nested_has_many_through
Conflicts:
activerecord/lib/active_record/associations.rb
activerecord/test/cases/associations/cascaded_eager_loading_test.rb
Diffstat (limited to 'railties/test')
| -rw-r--r-- | railties/test/application/configuration_test.rb | 4 | ||||
| -rw-r--r-- | railties/test/application/console_test.rb | 5 | ||||
| -rw-r--r-- | railties/test/application/generators_test.rb | 2 | ||||
| -rw-r--r-- | railties/test/application/paths_test.rb | 28 | ||||
| -rw-r--r-- | railties/test/generators/app_generator_test.rb | 34 | ||||
| -rw-r--r-- | railties/test/generators/namespaced_generators_test.rb | 4 | ||||
| -rw-r--r-- | railties/test/paths_test.rb | 268 | ||||
| -rw-r--r-- | railties/test/railties/engine_test.rb | 80 | ||||
| -rw-r--r-- | railties/test/railties/mounted_engine_test.rb | 2 | ||||
| -rw-r--r-- | railties/test/railties/plugin_test.rb | 2 | ||||
| -rw-r--r-- | railties/test/railties/railtie_test.rb | 24 | ||||
| -rw-r--r-- | railties/test/railties/shared_tests.rb | 65 |
12 files changed, 292 insertions, 226 deletions
diff --git a/railties/test/application/configuration_test.rb b/railties/test/application/configuration_test.rb index 7403d16cf4..b8d0854286 100644 --- a/railties/test/application/configuration_test.rb +++ b/railties/test/application/configuration_test.rb @@ -42,7 +42,7 @@ module ApplicationTests test "Rails::Application responds to paths" do require "#{app_path}/config/environment" assert_respond_to AppTemplate::Application, :paths - assert_equal AppTemplate::Application.paths.app.views.to_a, ["#{app_path}/app/views"] + assert_equal AppTemplate::Application.paths["app/views"].expanded, ["#{app_path}/app/views"] end test "the application root is set correctly" do @@ -180,7 +180,7 @@ module ApplicationTests test "config.paths.public sets Rails.public_path" do add_to_config <<-RUBY - config.paths.public = "somewhere" + config.paths["public"] = "somewhere" RUBY require "#{app_path}/config/application" diff --git a/railties/test/application/console_test.rb b/railties/test/application/console_test.rb index 25b4a21902..d4159dd0fd 100644 --- a/railties/test/application/console_test.rb +++ b/railties/test/application/console_test.rb @@ -1,7 +1,7 @@ require 'isolation/abstract_unit' class ConsoleTest < Test::Unit::TestCase - include ActiveSupport::Testing::Isolation + include ActiveSupport::Testing::Isolation def setup build_app @@ -14,16 +14,15 @@ class ConsoleTest < Test::Unit::TestCase end def test_app_method_should_return_integration_session + TestHelpers::Rack.send :remove_method, :app load_environment console_session = app - assert_not_nil console_session assert_instance_of ActionDispatch::Integration::Session, console_session end def test_new_session_should_return_integration_session load_environment session = new_session - assert_not_nil session assert_instance_of ActionDispatch::Integration::Session, session end diff --git a/railties/test/application/generators_test.rb b/railties/test/application/generators_test.rb index d258625f42..551e966c85 100644 --- a/railties/test/application/generators_test.rb +++ b/railties/test/application/generators_test.rb @@ -69,7 +69,7 @@ module ApplicationTests assert_equal :rspec, Rails::Generators.options[:rails][:test_framework] assert_equal "-w", Rails::Generators.aliases[:rails][:test_framework] assert_equal Hash[:shoulda => :test_unit], Rails::Generators.fallbacks - assert_equal ["#{app_path}/lib/templates", "some/where"], Rails::Generators.templates_path + assert_equal ["some/where"], Rails::Generators.templates_path end test "generators no color on initialization" do diff --git a/railties/test/application/paths_test.rb b/railties/test/application/paths_test.rb index c98b11556b..b1ff6e9cb1 100644 --- a/railties/test/application/paths_test.rb +++ b/railties/test/application/paths_test.rb @@ -25,7 +25,7 @@ module ApplicationTests end def assert_path(paths, *dir) - assert_equal [root(*dir)], paths.paths + assert_equal [root(*dir)], paths.expanded end def assert_in_load_path(*path) @@ -37,20 +37,20 @@ module ApplicationTests end test "booting up Rails yields a valid paths object" do - assert_path @paths.app.models, "app", "models" - assert_path @paths.app.helpers, "app", "helpers" - assert_path @paths.app.views, "app", "views" - assert_path @paths.lib, "lib" - assert_path @paths.vendor, "vendor" - assert_path @paths.vendor.plugins, "vendor", "plugins" - assert_path @paths.tmp, "tmp" - assert_path @paths.tmp.cache, "tmp", "cache" - assert_path @paths.config, "config" - assert_path @paths.config.locales, "config", "locales", "en.yml" - assert_path @paths.config.environment, "config", "environment.rb" - assert_path @paths.config.environments, "config", "environments", "development.rb" + assert_path @paths["app/models"], "app/models" + assert_path @paths["app/helpers"], "app/helpers" + assert_path @paths["app/views"], "app/views" + assert_path @paths["lib"], "lib" + assert_path @paths["vendor"], "vendor" + assert_path @paths["vendor/plugins"], "vendor/plugins" + assert_path @paths["tmp"], "tmp" + assert_path @paths["tmp/cache"], "tmp/cache" + assert_path @paths["config"], "config" + assert_path @paths["config/locales"], "config/locales/en.yml" + assert_path @paths["config/environment"], "config/environment.rb" + assert_path @paths["config/environments"], "config/environments/development.rb" - assert_equal root("app", "controllers"), @paths.app.controllers.to_a.first + assert_equal root("app", "controllers"), @paths["app/controllers"].expanded.first end test "booting up Rails yields a list of paths that are eager" do diff --git a/railties/test/generators/app_generator_test.rb b/railties/test/generators/app_generator_test.rb index 3653b067c8..c7339cb8d2 100644 --- a/railties/test/generators/app_generator_test.rb +++ b/railties/test/generators/app_generator_test.rb @@ -165,9 +165,13 @@ class AppGeneratorTest < Rails::Generators::TestCase assert_file "Gemfile", /^gem\s+["']mysql2["']$/ end - def test_config_database_is_not_added_if_skip_active_record_is_given + def test_generator_if_skip_active_record_is_given run_generator [destination_root, "--skip-active-record"] assert_no_file "config/database.yml" + assert_file "test/test_helper.rb" do |helper_content| + assert_no_match /fixtures :all/, helper_content + end + assert_file "test/performance/browsing_test.rb" end def test_active_record_is_removed_from_frameworks_if_skip_active_record_is_given @@ -183,14 +187,34 @@ class AppGeneratorTest < Rails::Generators::TestCase assert_file "public/javascripts/rails.js" assert_file "test" end - - def test_prototype_and_test_unit_are_skipped_if_required - run_generator [destination_root, "--skip-prototype", "--skip-test-unit"] + + def test_test_unit_is_skipped_if_required + run_generator [destination_root, "--skip-test-unit"] + assert_no_file "test" + end + + def test_javascript_is_skipped_if_required + run_generator [destination_root, "--skip-javascript"] assert_file "config/application.rb", /^\s+config\.action_view\.javascript_expansions\[:defaults\]\s+=\s+%w\(\)/ assert_file "public/javascripts/application.js" assert_no_file "public/javascripts/prototype.js" assert_no_file "public/javascripts/rails.js" - assert_no_file "test" + end + + def test_config_prototype_javascript_library + run_generator [destination_root, "-j", "prototype"] + assert_file "config/application.rb", /#\s+config\.action_view\.javascript_expansions\[:defaults\]\s+=\s+%w\(jquery rails\)/ + assert_file "public/javascripts/application.js" + assert_file "public/javascripts/prototype.js" + assert_file "public/javascripts/rails.js", /prototype/ + end + + def test_config_jquery_javascript_library + run_generator [destination_root, "-j", "jquery"] + assert_file "config/application.rb", /^\s+config\.action_view\.javascript_expansions\[:defaults\]\s+=\s+%w\(jquery rails\)/ + assert_file "public/javascripts/application.js" + assert_file "public/javascripts/jquery.js" + assert_file "public/javascripts/rails.js", /jQuery/ end def test_shebang_is_added_to_rails_file diff --git a/railties/test/generators/namespaced_generators_test.rb b/railties/test/generators/namespaced_generators_test.rb index 38b95a49ac..d1190fd17d 100644 --- a/railties/test/generators/namespaced_generators_test.rb +++ b/railties/test/generators/namespaced_generators_test.rb @@ -6,14 +6,14 @@ require 'rails/generators/mailer/mailer_generator' class NamespacedGeneratorTestCase < Rails::Generators::TestCase def setup - TestApp::Application.namespace(TestApp) + TestApp::Application.isolate_namespace(TestApp) end def teardown if TestApp.respond_to?(:_railtie) TestApp.singleton_class.send(:undef_method, :_railtie) TestApp.singleton_class.send(:undef_method, :table_name_prefix) - TestApp::Application.namespaced = false + TestApp::Application.isolated = false end end end diff --git a/railties/test/paths_test.rb b/railties/test/paths_test.rb index 80fae8c543..6e4e3446b3 100644 --- a/railties/test/paths_test.rb +++ b/railties/test/paths_test.rb @@ -20,234 +20,264 @@ class PathsTest < ActiveSupport::TestCase test "a paths object initialized with nil can be updated" do root = Rails::Paths::Root.new(nil) - root.app = "app" + root.add "app" root.path = "/root" - assert_equal ["/root/app"], root.app.to_a + assert_equal ["app"], root["app"] + assert_equal ["/root/app"], root["app"].to_a end test "creating a root level path" do - @root.app = "/foo/bar" - assert_equal ["/foo/bar"], @root.app.to_a + @root.add "app" + assert_equal ["/foo/bar/app"], @root["app"].to_a + end + + test "creating a root level path with options" do + @root.add "app", :with => "/foo/bar" + assert_equal ["/foo/bar"], @root["app"].to_a end test "raises exception if root path never set" do root = Rails::Paths::Root.new(nil) - root.app = "app" + root.add "app" assert_raises RuntimeError do - root.app.to_a + root["app"].to_a end end - test "creating a root level path without assignment" do - @root.app "/foo/bar" - assert_equal ["/foo/bar"], @root.app.to_a - end - - test "trying to access a path that does not exist raises NoMethodError" do - assert_raises(NoMethodError) { @root.app } - end - - test "relative paths are relative to the paths root" do - @root.app = "app" - assert_equal ["/foo/bar/app"], @root.app.to_a - end - - test "relative paths are relative to the paths root without assignment" do - @root.app "app" - assert_equal ["/foo/bar/app"], @root.app.to_a - end - test "creating a child level path" do - @root.app = "/foo/bar" - @root.app.models = "/foo/bar/baz" - assert_equal ["/foo/bar/baz"], @root.app.models.to_a + @root.add "app" + @root.add "app/models" + assert_equal ["/foo/bar/app/models"], @root["app/models"].to_a end - test "creating a child level path without assignment" do - @root.app = "/foo/bar" - @root.app.models "/foo/bar/baz" - assert_equal ["/foo/bar/baz"], @root.app.models.to_a + test "creating a child level path with option" do + @root.add "app" + @root.add "app/models", :with => "/foo/bar/baz" + assert_equal ["/foo/bar/baz"], @root["app/models"].to_a end test "child level paths are relative from the root" do - @root.app = "/app" - @root.app.models = "baz" - - assert_equal ["/foo/bar/baz"], @root.app.models.to_a + @root.add "app" + @root.add "app/models", :with => "baz" + assert_equal ["/foo/bar/baz"], @root["app/models"].to_a end test "adding multiple physical paths as an array" do - @root.app = ["/app", "/app2"] - assert_equal ["/app", "/app2"], @root.app.to_a - end - - test "adding multiple physical paths as an array without assignment" do - @root.app "/app", "/app2" - assert_equal ["/app", "/app2"], @root.app.to_a + @root.add "app", :with => ["/app", "/app2"] + assert_equal ["/app", "/app2"], @root["app"].to_a end test "adding multiple physical paths using #push" do - @root.app = "/app" - @root.app.push "/app2" - assert_equal ["/app", "/app2"], @root.app.to_a + @root.add "app" + @root["app"].push "app2" + assert_equal ["/foo/bar/app", "/foo/bar/app2"], @root["app"].to_a end test "adding multiple physical paths using <<" do - @root.app = "/app" - @root.app << "/app2" - assert_equal ["/app", "/app2"], @root.app.to_a + @root.add "app" + @root["app"] << "app2" + assert_equal ["/foo/bar/app", "/foo/bar/app2"], @root["app"].to_a end test "adding multiple physical paths using concat" do - @root.app = "/app" - @root.app.concat ["/app2", "/app3"] - assert_equal ["/app", "/app2", "/app3"], @root.app.to_a + @root.add "app" + @root["app"].concat ["app2", "/app3"] + assert_equal ["/foo/bar/app", "/foo/bar/app2", "/app3"], @root["app"].to_a end test "adding multiple physical paths using #unshift" do - @root.app = "/app" - @root.app.unshift "/app2" - assert_equal ["/app2", "/app"], @root.app.to_a + @root.add "app" + @root["app"].unshift "app2" + assert_equal ["/foo/bar/app2", "/foo/bar/app"], @root["app"].to_a end test "the root can only have one physical path" do assert_raise(RuntimeError) { Rails::Paths::Root.new(["/fiz", "/biz"]) } - assert_raise(RuntimeError) { @root.push "/biz" } - assert_raise(RuntimeError) { @root.unshift "/biz" } - assert_raise(RuntimeError) { @root.concat ["/biz"]} - assert_raise(RuntimeError) { @root << "/biz" } end test "it is possible to add a path that should be autoloaded only once" do - @root.app = "/app" - @root.app.autoload_once! - assert @root.app.autoload_once? - assert @root.autoload_once.include?(@root.app.paths.first) + @root.add "app", :with => "/app" + @root["app"].autoload_once! + assert @root["app"].autoload_once? + assert @root.autoload_once.include?(@root["app"].expanded.first) end test "it is possible to remove a path that should be autoloaded only once" do - @root.app = "/app" - @root.app.autoload_once! - assert @root.app.autoload_once? + @root["app"] = "/app" + @root["app"].autoload_once! + assert @root["app"].autoload_once? - @root.app.skip_autoload_once! - assert !@root.app.autoload_once? - assert !@root.autoload_once.include?(@root.app.paths.first) + @root["app"].skip_autoload_once! + assert !@root["app"].autoload_once? + assert !@root.autoload_once.include?(@root["app"].expanded.first) end test "it is possible to add a path without assignment and specify it should be loaded only once" do - @root.app "/app", :autoload_once => true - assert @root.app.autoload_once? + @root.add "app", :with => "/app", :autoload_once => true + assert @root["app"].autoload_once? assert @root.autoload_once.include?("/app") end test "it is possible to add multiple paths without assignment and specify it should be loaded only once" do - @root.app "/app", "/app2", :autoload_once => true - assert @root.app.autoload_once? + @root.add "app", :with => ["/app", "/app2"], :autoload_once => true + assert @root["app"].autoload_once? assert @root.autoload_once.include?("/app") assert @root.autoload_once.include?("/app2") end test "making a path autoload_once more than once only includes it once in @root.load_once" do - @root.app = "/app" - @root.app.autoload_once! - @root.app.autoload_once! - assert_equal 1, @root.autoload_once.select {|p| p == @root.app.paths.first }.size + @root["app"] = "/app" + @root["app"].autoload_once! + @root["app"].autoload_once! + assert_equal 1, @root.autoload_once.select {|p| p == @root["app"].expanded.first }.size end test "paths added to a load_once path should be added to the autoload_once collection" do - @root.app = "/app" - @root.app.autoload_once! - @root.app << "/app2" + @root["app"] = "/app" + @root["app"].autoload_once! + @root["app"] << "/app2" assert_equal 2, @root.autoload_once.size end test "it is possible to mark a path as eager loaded" do - @root.app = "/app" - @root.app.eager_load! - assert @root.app.eager_load? - assert @root.eager_load.include?(@root.app.paths.first) + @root["app"] = "/app" + @root["app"].eager_load! + assert @root["app"].eager_load? + assert @root.eager_load.include?(@root["app"].to_a.first) end test "it is possible to skip a path from eager loading" do - @root.app = "/app" - @root.app.eager_load! - assert @root.app.eager_load? + @root["app"] = "/app" + @root["app"].eager_load! + assert @root["app"].eager_load? - @root.app.skip_eager_load! - assert !@root.app.eager_load? - assert !@root.eager_load.include?(@root.app.paths.first) + @root["app"].skip_eager_load! + assert !@root["app"].eager_load? + assert !@root.eager_load.include?(@root["app"].to_a.first) end test "it is possible to add a path without assignment and mark it as eager" do - @root.app "/app", :eager_load => true - assert @root.app.eager_load? + @root.add "app", :with => "/app", :eager_load => true + assert @root["app"].eager_load? assert @root.eager_load.include?("/app") end test "it is possible to add multiple paths without assignment and mark them as eager" do - @root.app "/app", "/app2", :eager_load => true - assert @root.app.eager_load? + @root.add "app", :with => ["/app", "/app2"], :eager_load => true + assert @root["app"].eager_load? assert @root.eager_load.include?("/app") assert @root.eager_load.include?("/app2") end test "it is possible to create a path without assignment and mark it both as eager and load once" do - @root.app "/app", :eager_load => true, :autoload_once => true - assert @root.app.eager_load? - assert @root.app.autoload_once? + @root.add "app", :with => "/app", :eager_load => true, :autoload_once => true + assert @root["app"].eager_load? + assert @root["app"].autoload_once? assert @root.eager_load.include?("/app") assert @root.autoload_once.include?("/app") end test "making a path eager more than once only includes it once in @root.eager_paths" do - @root.app = "/app" - @root.app.eager_load! - @root.app.eager_load! - assert_equal 1, @root.eager_load.select {|p| p == @root.app.paths.first }.size + @root["app"] = "/app" + @root["app"].eager_load! + @root["app"].eager_load! + assert_equal 1, @root.eager_load.select {|p| p == @root["app"].expanded.first }.size end test "paths added to a eager_load path should be added to the eager_load collection" do - @root.app = "/app" - @root.app.eager_load! - @root.app << "/app2" + @root["app"] = "/app" + @root["app"].eager_load! + @root["app"] << "/app2" assert_equal 2, @root.eager_load.size end test "it should be possible to add a path's default glob" do - @root.app = "/app" - @root.app.glob = "*.rb" - assert_equal "*.rb", @root.app.glob + @root["app"] = "/app" + @root["app"].glob = "*.rb" + assert_equal "*.rb", @root["app"].glob end test "it should be possible to override a path's default glob without assignment" do - @root.app "/app", :glob => "*.rb" - assert_equal "*.rb", @root.app.glob + @root.add "app", :with => "/app", :glob => "*.rb" + assert_equal "*.rb", @root["app"].glob end test "a path can be added to the load path" do - @root.app = "app" - @root.app.load_path! - @root.app.models = "app/models" + @root["app"] = "app" + @root["app"].load_path! + @root["app/models"] = "app/models" assert_equal ["/foo/bar/app"], @root.load_paths end test "a path can be added to the load path on creation" do - @root.app "/app", :load_path => true - assert @root.app.load_path? + @root.add "app", :with => "/app", :load_path => true + assert @root["app"].load_path? assert_equal ["/app"], @root.load_paths end test "a path can be marked as autoload path" do - @root.app = "app" - @root.app.autoload! - @root.app.models = "app/models" + @root["app"] = "app" + @root["app"].autoload! + @root["app/models"] = "app/models" assert_equal ["/foo/bar/app"], @root.autoload_paths end test "a path can be marked as autoload on creation" do - @root.app "/app", :autoload => true - assert @root.app.autoload? + @root.add "app", :with => "/app", :autoload => true + assert @root["app"].autoload? assert_equal ["/app"], @root.autoload_paths end + + # Deprecated API tests + + test "reading a root level path with assignment" do + @root.add "app" + assert_deprecated do + assert_equal ["/foo/bar/app"], @root.app.to_a + end + end + + test "creating a root level path with assignment" do + assert_deprecated do + @root.app = "/foo/bar" + end + assert_equal ["/foo/bar"], @root["app"].to_a + end + + test "creating a root level path without assignment" do + assert_deprecated do + @root.app "/foo/bar" + end + assert_equal ["/foo/bar"], @root["app"].to_a + end + + test "reading a nested level path with assignment" do + @root.add "app" + @root.add "app/model" + assert_deprecated do + assert_equal ["/foo/bar/app/model"], @root.app.model.to_a + end + end + + test "creating a nested level path with assignment" do + @root.add "app" + assert_deprecated do + @root.app.model = "/foo/bar" + end + assert_equal ["/foo/bar"], @root["app/model"].to_a + end + + test "creating a nested level path without assignment" do + @root.add "app" + assert_deprecated do + @root.app.model "/foo/bar" + end + assert_equal ["/foo/bar"], @root["app/model"].to_a + end + + test "trying to access a path that does not exist raises NoMethodError" do + assert_deprecated do + assert_raises(NoMethodError) { @root.app } + end + end end diff --git a/railties/test/railties/engine_test.rb b/railties/test/railties/engine_test.rb index 89262aeaae..4b52260ecc 100644 --- a/railties/test/railties/engine_test.rb +++ b/railties/test/railties/engine_test.rb @@ -62,17 +62,18 @@ module RailtiesTest def call(env) response = @app.call(env) - response[2].upcase! + response[2].each { |b| b.upcase! } response end end test "engine is a rack app and can have his own middleware stack" do + add_to_config("config.action_dispatch.show_exceptions = false") + @plugin.write "lib/bukkits.rb", <<-RUBY class Bukkits class Engine < ::Rails::Engine - endpoint lambda { |env| [200, {'Content-Type' => 'text/html'}, 'Hello World'] } - + endpoint lambda { |env| [200, {'Content-Type' => 'text/html'}, ['Hello World']] } config.middleware.use ::RailtiesTest::EngineTest::Upcaser end end @@ -102,7 +103,7 @@ module RailtiesTest @plugin.write "config/routes.rb", <<-RUBY Bukkits::Engine.routes.draw do - match "/foo" => lambda { |env| [200, {'Content-Type' => 'text/html'}, 'foo'] } + match "/foo" => lambda { |env| [200, {'Content-Type' => 'text/html'}, ['foo']] } end RUBY @@ -393,7 +394,7 @@ module RailtiesTest @plugin.write "lib/bukkits.rb", <<-RUBY module Bukkits class Engine < ::Rails::Engine - namespace Bukkits + isolate_namespace Bukkits end end RUBY @@ -510,7 +511,7 @@ module RailtiesTest @plugin.write "lib/bukkits.rb", <<-RUBY module Bukkits class Engine < ::Rails::Engine - namespace Bukkits + isolate_namespace Bukkits end end RUBY @@ -552,11 +553,11 @@ module RailtiesTest end RUBY - @plugin.write "app/views/bukkits/posts/new.html.erb", <<-RUBY + @plugin.write "app/views/bukkits/posts/new.html.erb", <<-ERB <%= form_for(Bukkits::Post.new) do |f| %> <%= f.text_field :title %> <% end %> - RUBY + ERB add_to_config("config.action_dispatch.show_exceptions = false") @@ -567,63 +568,6 @@ module RailtiesTest assert rack_body(response[2]) =~ /name="post\[title\]"/ end - test "creating symlinks" do - @plugin.write "lib/bukkits.rb", <<-RUBY - module Bukkits - class Engine < ::Rails::Engine - namespace(Bukkits) - end - end - RUBY - - @plugin.write "public/hello.txt", "foo" - @plugin.write "alternate_public/hello.txt", "bar" - - Dir.chdir(app_path) do - output = `rake railties:create_symlinks` - - assert_match /Created symlink/, output - assert_match /#{app_path}\/public\/bukkits/, output - assert_match /#{@plugin.path}\/public/, output - - assert File.symlink?(File.join(app_path, 'public/bukkits')) - assert_equal "foo\n", File.read(File.join(app_path, 'public/bukkits/hello.txt')) - - @plugin.write "lib/bukkits.rb", <<-RUBY - module Bukkits - class Engine < ::Rails::Engine - namespace(Bukkits) - config.paths.public = "#{File.join(@plugin.path, "alternate_public")}" - end - end - RUBY - - output = `rake railties:create_symlinks` - - assert_match /Created symlink/, output - assert_match /#{app_path}\/public\/bukkits/, output - assert_match /#{@plugin.path}\/alternate_public/, output - - assert File.symlink?(File.join(app_path, 'public/bukkits')) - assert_equal "bar\n", File.read(File.join(app_path, 'public/bukkits/hello.txt')) - - @plugin.write "lib/bukkits.rb", <<-RUBY - module Bukkits - class Engine < ::Rails::Engine - namespace(Bukkits) - config.paths.public = "#{File.join(@plugin.path, "not_existing")}" - end - end - RUBY - - FileUtils.rm File.join(app_path, 'public/bukkits') - - output = `rake railties:create_symlinks` - assert_no_match /Created symlink/, output - assert !File.exist?(File.join(app_path, 'public/bukkits')) - end - end - test "loading seed data" do @plugin.write "db/seeds.rb", <<-RUBY Bukkits::Engine.config.bukkits_seeds_loaded = true @@ -647,12 +591,12 @@ module RailtiesTest @plugin.write "lib/bukkits.rb", <<-RUBY module AppTemplate class Engine < ::Rails::Engine - namespace(AppTemplate) + isolate_namespace(AppTemplate) end end RUBY - add_to_config "namespace AppTemplate" + add_to_config "isolate_namespace AppTemplate" app_file "config/routes.rb", <<-RUBY AppTemplate::Application.routes.draw do end @@ -685,7 +629,7 @@ module RailtiesTest @plugin.write "lib/bukkits.rb", <<-RUBY module Bukkits class Engine < ::Rails::Engine - namespace(Bukkits) + isolate_namespace(Bukkits) end end RUBY diff --git a/railties/test/railties/mounted_engine_test.rb b/railties/test/railties/mounted_engine_test.rb index b52ced92ec..47a4753e78 100644 --- a/railties/test/railties/mounted_engine_test.rb +++ b/railties/test/railties/mounted_engine_test.rb @@ -49,7 +49,7 @@ module ApplicationTests @plugin.write "lib/blog.rb", <<-RUBY module Blog class Engine < ::Rails::Engine - namespace(Blog) + isolate_namespace(Blog) end end RUBY diff --git a/railties/test/railties/plugin_test.rb b/railties/test/railties/plugin_test.rb index bae05d6978..c15ac05103 100644 --- a/railties/test/railties/plugin_test.rb +++ b/railties/test/railties/plugin_test.rb @@ -110,7 +110,7 @@ module RailtiesTest boot_rails rescue Exception => e rescued = true - assert_equal '"bukkits" is a Railtie/Engine and cannot be installed as plugin', e.message + assert_equal '"bukkits" is a Railtie/Engine and cannot be installed as a plugin', e.message end assert rescued, "Expected boot rails to fail" diff --git a/railties/test/railties/railtie_test.rb b/railties/test/railties/railtie_test.rb index 406d5d764f..6d194eecba 100644 --- a/railties/test/railties/railtie_test.rb +++ b/railties/test/railties/railtie_test.rb @@ -103,6 +103,30 @@ module RailtiesTest assert $ran_block end + test "rake_tasks block defined in superclass of railtie is also executed" do + $ran_block = [] + + class Rails::Railtie + rake_tasks do + $ran_block << railtie_name + end + end + + class MyTie < Rails::Railtie + railtie_name "my_tie" + end + + require "#{app_path}/config/environment" + + assert_equal [], $ran_block + require 'rake' + require 'rake/testtask' + require 'rake/rdoctask' + + AppTemplate::Application.load_tasks + assert $ran_block.include?("my_tie") + end + test "generators block is executed when MyApp.load_generators is called" do $ran_block = false diff --git a/railties/test/railties/shared_tests.rb b/railties/test/railties/shared_tests.rb index 9b62f88fd7..31ba2eaca2 100644 --- a/railties/test/railties/shared_tests.rb +++ b/railties/test/railties/shared_tests.rb @@ -10,6 +10,44 @@ module RailtiesTest @app ||= Rails.application end + def test_install_migrations_and_assets + @plugin.write "public/javascripts/foo.js", "doSomething()" + + @plugin.write "db/migrate/1_create_users.rb", <<-RUBY + class CreateUsers < ActiveRecord::Migration + end + RUBY + + app_file "db/migrate/1_create_sessions.rb", <<-RUBY + class CreateSessions < ActiveRecord::Migration + end + RUBY + + add_to_config "ActiveRecord::Base.timestamped_migrations = false" + + Dir.chdir(app_path) do + `rake bukkits:install` + assert File.exists?("#{app_path}/db/migrate/2_create_users.rb") + assert File.exists?(app_path("public/bukkits/javascripts/foo.js")) + end + end + + def test_copying_assets + @plugin.write "public/javascripts/foo.js", "doSomething()" + @plugin.write "public/stylesheets/foo.css", "h1 { font-size: 10000px }" + @plugin.write "public/images/img.png", "" + + Dir.chdir(app_path) do + `rake bukkits:install:assets --trace` + + assert File.exists?(app_path("public/bukkits/javascripts/foo.js")) + assert_equal "doSomething()\n", File.read(app_path("public/bukkits/javascripts/foo.js")) + assert File.exists?(app_path("public/bukkits/stylesheets/foo.css")) + assert_equal "h1 { font-size: 10000px }\n", File.read(app_path("public/bukkits/stylesheets/foo.css")) + assert File.exists?(app_path("public/bukkits/images/img.png")) + end + end + def test_copying_migrations @plugin.write "db/migrate/1_create_users.rb", <<-RUBY class CreateUsers < ActiveRecord::Migration @@ -21,6 +59,11 @@ module RailtiesTest end RUBY + @plugin.write "db/migrate/3_create_sessions.rb", <<-RUBY + class CreateSessions < ActiveRecord::Migration + end + RUBY + app_file "db/migrate/1_create_sessions.rb", <<-RUBY class CreateSessions < ActiveRecord::Migration end @@ -38,24 +81,26 @@ module RailtiesTest add_to_config "ActiveRecord::Base.timestamped_migrations = false" Dir.chdir(app_path) do - output = `rake railties:copy_migrations FROM=bukkits` + output = `rake bukkits:install:migrations` - assert File.exists?("#{app_path}/db/migrate/2_create_users.bukkits.rb") - assert File.exists?("#{app_path}/db/migrate/3_add_last_name_to_users.bukkits.rb") - assert_match /2_create_users/, output - assert_match /3_add_last_name_to_users/, output + assert File.exists?("#{app_path}/db/migrate/2_create_users.rb") + assert File.exists?("#{app_path}/db/migrate/3_add_last_name_to_users.rb") + assert_match /Copied migration 2_create_users.rb from bukkits/, output + assert_match /Copied migration 3_add_last_name_to_users.rb from bukkits/, output + assert_match /NOTE: Migration 3_create_sessions.rb from bukkits has been skipped/, output assert_equal 3, Dir["#{app_path}/db/migrate/*.rb"].length - output = `rake railties:copy_migrations` + output = `rake railties:install:migrations` - assert File.exists?("#{app_path}/db/migrate/4_create_yaffles.acts_as_yaffle.rb") - assert_match /4_create_yaffles/, output + assert File.exists?("#{app_path}/db/migrate/4_create_yaffles.rb") + assert_match /NOTE: Migration 3_create_sessions.rb from bukkits has been skipped/, output + assert_match /Copied migration 4_create_yaffles.rb from acts_as_yaffle/, output + assert_no_match /2_create_users/, output migrations_count = Dir["#{app_path}/db/migrate/*.rb"].length - output = `rake railties:copy_migrations` + output = `rake railties:install:migrations` assert_equal migrations_count, Dir["#{app_path}/db/migrate/*.rb"].length - assert_match /No migrations were copied/, output end end |
