aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test
diff options
context:
space:
mode:
Diffstat (limited to 'actionpack/test')
-rw-r--r--actionpack/test/abstract/abstract_controller_test.rb4
-rw-r--r--actionpack/test/abstract/details_cache_test.rb57
-rw-r--r--actionpack/test/abstract/layouts_test.rb118
-rw-r--r--actionpack/test/abstract/render_test.rb61
-rw-r--r--actionpack/test/abstract_unit.rb19
-rw-r--r--actionpack/test/controller/base_test.rb50
-rw-r--r--actionpack/test/controller/caching_test.rb34
-rw-r--r--actionpack/test/controller/content_type_test.rb12
-rw-r--r--actionpack/test/controller/cookie_test.rb2
-rw-r--r--actionpack/test/controller/http_digest_authentication_test.rb18
-rw-r--r--actionpack/test/controller/integration_test.rb13
-rw-r--r--actionpack/test/controller/log_subscriber_test.rb3
-rw-r--r--actionpack/test/controller/mime_responds_test.rb4
-rw-r--r--actionpack/test/controller/render_test.rb6
-rw-r--r--actionpack/test/controller/test_test.rb8
-rw-r--r--actionpack/test/controller/url_for_test.rb15
-rw-r--r--actionpack/test/controller/url_rewriter_test.rb45
-rw-r--r--actionpack/test/controller/view_paths_test.rb3
-rw-r--r--actionpack/test/dispatch/mount_test.rb36
-rw-r--r--actionpack/test/dispatch/request_test.rb157
-rw-r--r--actionpack/test/dispatch/routing_test.rb14
-rw-r--r--actionpack/test/dispatch/url_generation_test.rb38
-rw-r--r--actionpack/test/fixtures/test/layout_render_file.erb2
-rw-r--r--actionpack/test/lib/fixture_template.rb12
-rw-r--r--actionpack/test/template/asset_tag_helper_test.rb91
-rw-r--r--actionpack/test/template/compiled_templates_test.rb5
-rw-r--r--actionpack/test/template/date_helper_test.rb69
-rw-r--r--actionpack/test/template/erb/tag_helper_test.rb82
-rw-r--r--actionpack/test/template/form_helper_test.rb144
-rw-r--r--actionpack/test/template/form_options_helper_test.rb22
-rw-r--r--actionpack/test/template/form_tag_helper_test.rb27
-rw-r--r--actionpack/test/template/javascript_helper_test.rb16
-rw-r--r--actionpack/test/template/prototype_helper_test.rb4
-rw-r--r--actionpack/test/template/render_test.rb19
-rw-r--r--actionpack/test/template/tag_helper_test.rb16
-rw-r--r--actionpack/test/template/test_case_test.rb33
-rw-r--r--actionpack/test/template/url_helper_test.rb62
37 files changed, 682 insertions, 639 deletions
diff --git a/actionpack/test/abstract/abstract_controller_test.rb b/actionpack/test/abstract/abstract_controller_test.rb
index 4ad87d9762..f70d497481 100644
--- a/actionpack/test/abstract/abstract_controller_test.rb
+++ b/actionpack/test/abstract/abstract_controller_test.rb
@@ -59,11 +59,11 @@ module AbstractController
end
def rendering_to_body
- self.response_body = render_to_body :_template_name => "naked_render.erb"
+ self.response_body = render_to_body :template => "naked_render.erb"
end
def rendering_to_string
- self.response_body = render_to_string :_template_name => "naked_render.erb"
+ self.response_body = render_to_string :template => "naked_render.erb"
end
end
diff --git a/actionpack/test/abstract/details_cache_test.rb b/actionpack/test/abstract/details_cache_test.rb
deleted file mode 100644
index ee746c1bb0..0000000000
--- a/actionpack/test/abstract/details_cache_test.rb
+++ /dev/null
@@ -1,57 +0,0 @@
-require 'abstract_unit'
-
-module AbstractController
- module Testing
-
- class CachedController < AbstractController::Base
- include AbstractController::Rendering
- include AbstractController::DetailsCache
-
- self.view_paths = [ActionView::FixtureResolver.new(
- "default.erb" => "With Default",
- "template.erb" => "With Template",
- "some/file.erb" => "With File",
- "template_name.erb" => "With Template Name"
- )]
- end
-
- class TestLocalizedCache < ActiveSupport::TestCase
-
- def setup
- @controller = CachedController.new
- CachedController.clear_template_caches!
- end
-
- def test_templates_are_cached
- @controller.render :template => "default.erb"
- assert_equal "With Default", @controller.response_body
-
- cached = @controller.class.template_cache
- assert_equal 1, cached.size
- assert_kind_of ActionView::Template, cached.values.first["default.erb"]
- end
-
- def test_cache_is_used
- CachedController.new.render :template => "default.erb"
-
- @controller.expects(:find_template).never
- @controller.render :template => "default.erb"
-
- assert_equal 1, @controller.class.template_cache.size
- end
-
- def test_cache_changes_with_locale
- CachedController.new.render :template => "default.erb"
-
- I18n.locale = :es
- @controller.render :template => "default.erb"
-
- assert_equal 2, @controller.class.template_cache.size
- ensure
- I18n.locale = :en
- end
-
- end
-
- end
-end
diff --git a/actionpack/test/abstract/layouts_test.rb b/actionpack/test/abstract/layouts_test.rb
index b6d89ea489..65a50807fd 100644
--- a/actionpack/test/abstract/layouts_test.rb
+++ b/actionpack/test/abstract/layouts_test.rb
@@ -8,41 +8,52 @@ module AbstractControllerTests
include AbstractController::Rendering
include AbstractController::Layouts
+ def _prefix
+ "template"
+ end
+
self.view_paths = [ActionView::FixtureResolver.new(
- "layouts/hello.erb" => "With String <%= yield %>",
- "layouts/hello_override.erb" => "With Override <%= yield %>",
- "layouts/abstract_controller_tests/layouts/with_string_implied_child.erb" =>
- "With Implied <%= yield %>",
- "layouts/overwrite.erb" => "Overwrite <%= yield %>",
- "layouts/with_false_layout.erb" => "False Layout <%= yield %>"
+ "abstract_controller_tests/layouts/with_string_implied_child.erb" =>
+ "With Implied <%= yield %>",
+ "layouts/hello.erb" => "With String <%= yield %>",
+ "layouts/hello_override.erb" => "With Override <%= yield %>",
+ "layouts/overwrite.erb" => "Overwrite <%= yield %>",
+ "layouts/with_false_layout.erb" => "False Layout <%= yield %>"
)]
end
class Blank < Base
- self.view_paths = []
-
+ self.view_paths = ActionView::FixtureResolver.new("template/index.erb" => "Hello blank!")
+
def index
- render :_template => ActionView::Template::Text.new("Hello blank!")
+ render
end
end
class WithString < Base
layout "hello"
-
+
+ append_view_path ActionView::FixtureResolver.new(
+ "template/index.erb" => "Hello string!",
+ "template/overwrite_default.erb" => "Hello string!",
+ "template/overwrite_false.erb" => "Hello string!",
+ "template/overwrite_string.erb" => "Hello string!"
+ )
+
def index
- render :_template => ActionView::Template::Text.new("Hello string!")
+ render
end
def overwrite_default
- render :_template => ActionView::Template::Text.new("Hello string!"), :layout => :default
+ render :layout => :default
end
def overwrite_false
- render :_template => ActionView::Template::Text.new("Hello string!"), :layout => false
+ render :layout => false
end
def overwrite_string
- render :_template => ActionView::Template::Text.new("Hello string!"), :layout => "overwrite"
+ render :layout => "overwrite"
end
def overwrite_skip
@@ -70,18 +81,28 @@ module AbstractControllerTests
class WithProc < Base
layout proc { |c| "overwrite" }
+ append_view_path ActionView::FixtureResolver.new(
+ "template/index.erb" => "Hello proc!"
+ )
+
def index
- render :_template => ActionView::Template::Text.new("Hello proc!")
+ render
end
end
class WithSymbol < Base
layout :hello
-
+
+ append_view_path ActionView::FixtureResolver.new(
+ "template/index.erb" => "Hello symbol!"
+ )
+
def index
- render :_template => ActionView::Template::Text.new("Hello symbol!")
+ render
end
- private
+
+ private
+
def hello
"overwrite"
end
@@ -89,11 +110,17 @@ module AbstractControllerTests
class WithSymbolReturningString < Base
layout :no_hello
-
+
+ append_view_path ActionView::FixtureResolver.new(
+ "template/index.erb" => "Hello missing symbol!"
+ )
+
def index
- render :_template => ActionView::Template::Text.new("Hello missing symbol!")
+ render
end
- private
+
+ private
+
def no_hello
nil
end
@@ -101,19 +128,28 @@ module AbstractControllerTests
class WithSymbolReturningNil < Base
layout :nilz
-
+
+ append_view_path ActionView::FixtureResolver.new(
+ "template/index.erb" => "Hello nilz!"
+ )
+
def index
- render :_template => ActionView::Template::Text.new("Hello nilz!")
+ render
end
- def nilz() end
+ def nilz
+ end
end
class WithSymbolReturningObj < Base
layout :objekt
-
+
+ append_view_path ActionView::FixtureResolver.new(
+ "template/index.erb" => "Hello object!"
+ )
+
def index
- render :_template => ActionView::Template::Text.new("Hello nilz!")
+ render
end
def objekt
@@ -123,33 +159,49 @@ module AbstractControllerTests
class WithSymbolAndNoMethod < Base
layout :no_method
-
+
+ append_view_path ActionView::FixtureResolver.new(
+ "template/index.erb" => "Hello boom!"
+ )
+
def index
- render :_template => ActionView::Template::Text.new("Hello boom!")
+ render
end
end
class WithMissingLayout < Base
layout "missing"
-
+
+ append_view_path ActionView::FixtureResolver.new(
+ "template/index.erb" => "Hello missing!"
+ )
+
def index
- render :_template => ActionView::Template::Text.new("Hello missing!")
+ render
end
end
class WithFalseLayout < Base
layout false
-
+
+ append_view_path ActionView::FixtureResolver.new(
+ "template/index.erb" => "Hello false!"
+ )
+
def index
- render :_template => ActionView::Template::Text.new("Hello false!")
+ render
end
end
class WithNilLayout < Base
layout nil
+
+ append_view_path ActionView::FixtureResolver.new(
+ "template/index.erb" => "Hello nil!"
+ )
def index
- render :_template => ActionView::Template::Text.new("Hello nil!")
+ render
end
end
diff --git a/actionpack/test/abstract/render_test.rb b/actionpack/test/abstract/render_test.rb
index db924633ca..25dc8bd804 100644
--- a/actionpack/test/abstract/render_test.rb
+++ b/actionpack/test/abstract/render_test.rb
@@ -15,13 +15,8 @@ module AbstractController
"renderer/default.erb" => "With Default",
"renderer/string.erb" => "With String",
"renderer/symbol.erb" => "With Symbol",
- "renderer/template_name.erb" => "With Template Name",
"string/with_path.erb" => "With String With Path",
- "some/file.erb" => "With File",
- "with_format.html.erb" => "With html format",
- "with_format.xml.erb" => "With xml format",
- "with_locale.en.erb" => "With en locale",
- "with_locale.pl.erb" => "With pl locale"
+ "some/file.erb" => "With File"
)]
def template
@@ -55,30 +50,6 @@ module AbstractController
def symbol
render :symbol
end
-
- def template_name
- render :_template_name => :template_name
- end
-
- def object
- render :_template => ActionView::Template::Text.new("With Object")
- end
-
- def with_html_format
- render :template => "with_format", :format => :html
- end
-
- def with_xml_format
- render :template => "with_format", :format => :xml
- end
-
- def with_en_locale
- render :template => "with_locale"
- end
-
- def with_pl_locale
- render :template => "with_locale", :locale => :pl
- end
end
class TestRenderer < ActiveSupport::TestCase
@@ -126,36 +97,6 @@ module AbstractController
@controller.process(:string_with_path)
assert_equal "With String With Path", @controller.response_body
end
-
- def test_render_template_name
- @controller.process(:template_name)
- assert_equal "With Template Name", @controller.response_body
- end
-
- def test_render_object
- @controller.process(:object)
- assert_equal "With Object", @controller.response_body
- end
-
- def test_render_with_html_format
- @controller.process(:with_html_format)
- assert_equal "With html format", @controller.response_body
- end
-
- def test_render_with_xml_format
- @controller.process(:with_xml_format)
- assert_equal "With xml format", @controller.response_body
- end
-
- def test_render_with_en_locale
- @controller.process(:with_en_locale)
- assert_equal "With en locale", @controller.response_body
- end
-
- def test_render_with_pl_locale
- @controller.process(:with_pl_locale)
- assert_equal "With pl locale", @controller.response_body
- end
end
end
end
diff --git a/actionpack/test/abstract_unit.rb b/actionpack/test/abstract_unit.rb
index f1e8779cfa..67aa412d3d 100644
--- a/actionpack/test/abstract_unit.rb
+++ b/actionpack/test/abstract_unit.rb
@@ -16,7 +16,6 @@ require 'test/unit'
require 'abstract_controller'
require 'action_controller'
require 'action_view'
-require 'action_view/base'
require 'action_dispatch'
require 'fixture_template'
require 'active_support/dependencies'
@@ -105,6 +104,21 @@ class RoutedRackApp
end
end
+class BasicController
+ attr_accessor :request
+
+ def config
+ @config ||= ActiveSupport::InheritableOptions.new(ActionController::Base.config).tap do |config|
+ # VIEW TODO: View tests should not require a controller
+ public_dir = File.expand_path("../fixtures/public", __FILE__)
+ config.assets_dir = public_dir
+ config.javascripts_dir = "#{public_dir}/javascripts"
+ config.stylesheets_dir = "#{public_dir}/stylesheets"
+ config
+ end
+ end
+end
+
class ActionController::IntegrationTest < ActiveSupport::TestCase
def self.build_app(routes = nil)
RoutedRackApp.new(routes || ActionDispatch::Routing::RouteSet.new) do |middleware|
@@ -155,8 +169,7 @@ end
# Temporary base class
class Rack::TestCase < ActionController::IntegrationTest
setup do
- ActionController::Base.session_options[:key] = "abc"
- ActionController::Base.session_options[:secret] = ("*" * 30)
+ ActionController::Base.config.secret = "abc" * 30
end
def self.testing(klass = nil)
diff --git a/actionpack/test/controller/base_test.rb b/actionpack/test/controller/base_test.rb
index ade9a7fcba..f047e7da30 100644
--- a/actionpack/test/controller/base_test.rb
+++ b/actionpack/test/controller/base_test.rb
@@ -76,6 +76,9 @@ class UrlOptionsController < ActionController::Base
end
end
+class RecordIdentifierController < ActionController::Base
+end
+
class ControllerClassTests < ActiveSupport::TestCase
def test_controller_path
assert_equal 'empty', EmptyController.controller_path
@@ -102,6 +105,11 @@ class ControllerClassTests < ActiveSupport::TestCase
assert_equal [:password], parameters
end
+
+ def test_record_identifier
+ assert_respond_to RecordIdentifierController.new, :dom_id
+ assert_respond_to RecordIdentifierController.new, :dom_class
+ end
end
class ControllerInstanceTests < Test::Unit::TestCase
@@ -181,7 +189,7 @@ class UrlOptionsTest < ActionController::TestCase
rescue_action_in_public!
end
- def test_default_url_options_are_used_if_set
+ def test_url_options_override
with_routing do |set|
set.draw do |map|
match 'from_view', :to => 'url_options#from_view', :as => :from_view
@@ -206,20 +214,18 @@ class DefaultUrlOptionsTest < ActionController::TestCase
rescue_action_in_public!
end
- def test_default_url_options_are_used_if_set
+ def test_default_url_options_override
with_routing do |set|
set.draw do |map|
match 'from_view', :to => 'default_url_options#from_view', :as => :from_view
match ':controller/:action'
end
- assert_deprecated do
- get :from_view, :route => "from_view_url"
+ get :from_view, :route => "from_view_url"
- assert_equal 'http://www.override.com/from_view?locale=en', @response.body
- assert_equal 'http://www.override.com/from_view?locale=en', @controller.send(:from_view_url)
- assert_equal 'http://www.override.com/default_url_options/new?locale=en', @controller.url_for(:controller => 'default_url_options')
- end
+ assert_equal 'http://www.override.com/from_view?locale=en', @response.body
+ assert_equal 'http://www.override.com/from_view?locale=en', @controller.send(:from_view_url)
+ assert_equal 'http://www.override.com/default_url_options/new?locale=en', @controller.url_for(:controller => 'default_url_options')
end
end
@@ -232,21 +238,19 @@ class DefaultUrlOptionsTest < ActionController::TestCase
match ':controller/:action'
end
- assert_deprecated do
- get :from_view, :route => "description_path(1)"
-
- assert_equal '/en/descriptions/1', @response.body
- assert_equal '/en/descriptions', @controller.send(:descriptions_path)
- assert_equal '/pl/descriptions', @controller.send(:descriptions_path, "pl")
- assert_equal '/pl/descriptions', @controller.send(:descriptions_path, :locale => "pl")
- assert_equal '/pl/descriptions.xml', @controller.send(:descriptions_path, "pl", "xml")
- assert_equal '/en/descriptions.xml', @controller.send(:descriptions_path, :format => "xml")
- assert_equal '/en/descriptions/1', @controller.send(:description_path, 1)
- assert_equal '/pl/descriptions/1', @controller.send(:description_path, "pl", 1)
- assert_equal '/pl/descriptions/1', @controller.send(:description_path, 1, :locale => "pl")
- assert_equal '/pl/descriptions/1.xml', @controller.send(:description_path, "pl", 1, "xml")
- assert_equal '/en/descriptions/1.xml', @controller.send(:description_path, 1, :format => "xml")
- end
+ get :from_view, :route => "description_path(1)"
+
+ assert_equal '/en/descriptions/1', @response.body
+ assert_equal '/en/descriptions', @controller.send(:descriptions_path)
+ assert_equal '/pl/descriptions', @controller.send(:descriptions_path, "pl")
+ assert_equal '/pl/descriptions', @controller.send(:descriptions_path, :locale => "pl")
+ assert_equal '/pl/descriptions.xml', @controller.send(:descriptions_path, "pl", "xml")
+ assert_equal '/en/descriptions.xml', @controller.send(:descriptions_path, :format => "xml")
+ assert_equal '/en/descriptions/1', @controller.send(:description_path, 1)
+ assert_equal '/pl/descriptions/1', @controller.send(:description_path, "pl", 1)
+ assert_equal '/pl/descriptions/1', @controller.send(:description_path, 1, :locale => "pl")
+ assert_equal '/pl/descriptions/1.xml', @controller.send(:description_path, "pl", 1, "xml")
+ assert_equal '/en/descriptions/1.xml', @controller.send(:description_path, 1, :format => "xml")
end
end
diff --git a/actionpack/test/controller/caching_test.rb b/actionpack/test/controller/caching_test.rb
index 80c968cc04..a3c8fdbb6e 100644
--- a/actionpack/test/controller/caching_test.rb
+++ b/actionpack/test/controller/caching_test.rb
@@ -6,12 +6,18 @@ CACHE_DIR = 'test_cache'
# Don't change '/../temp/' cavalierly or you might hose something you don't want hosed
FILE_STORE_PATH = File.join(File.dirname(__FILE__), '/../temp/', CACHE_DIR)
ActionController::Base.page_cache_directory = FILE_STORE_PATH
-ActionController::Base.cache_store = :file_store, FILE_STORE_PATH
-class PageCachingTestController < ActionController::Base
+class CachingController < ActionController::Base
+ abstract!
+
+ self.cache_store = :file_store, FILE_STORE_PATH
+end
+
+class PageCachingTestController < CachingController
caches_page :ok, :no_content, :if => Proc.new { |c| !c.request.format.json? }
caches_page :found, :not_found
+
def ok
head :ok
end
@@ -51,12 +57,13 @@ class PageCachingTest < ActionController::TestCase
@request = ActionController::TestRequest.new
@request.host = 'hostname.com'
+ @request.env.delete('PATH_INFO')
@response = ActionController::TestResponse.new
@controller = PageCachingTestController.new
+ @controller.cache_store = :file_store, FILE_STORE_PATH
- @params = {:controller => 'posts', :action => 'index', :only_path => true, :skip_relative_url_root => true}
- @rewriter = ActionController::UrlRewriter.new(@request, @params)
+ @params = {:controller => 'posts', :action => 'index', :only_path => true}
FileUtils.rm_rf(File.dirname(FILE_STORE_PATH))
FileUtils.mkdir_p(FILE_STORE_PATH)
@@ -74,9 +81,9 @@ class PageCachingTest < ActionController::TestCase
match '/', :to => 'posts#index', :as => :main
end
@params[:format] = 'rss'
- assert_equal '/posts.rss', @rewriter.rewrite(@router, @params)
+ assert_equal '/posts.rss', @router.url_for(@params)
@params[:format] = nil
- assert_equal '/', @rewriter.rewrite(@router, @params)
+ assert_equal '/', @router.url_for(@params)
end
end
@@ -110,7 +117,7 @@ class PageCachingTest < ActionController::TestCase
end
def test_should_cache_ok_at_custom_path
- @request.request_uri = "/index.html"
+ @request.env['PATH_INFO'] = '/index.html'
get :ok
assert_response :ok
assert File.exist?("#{FILE_STORE_PATH}/index.html")
@@ -147,7 +154,7 @@ class PageCachingTest < ActionController::TestCase
end
end
-class ActionCachingTestController < ActionController::Base
+class ActionCachingTestController < CachingController
rescue_from(Exception) { head 500 }
if defined? ActiveRecord
rescue_from(ActiveRecord::RecordNotFound) { head :not_found }
@@ -305,12 +312,9 @@ class ActionCacheTest < ActionController::TestCase
end
def test_action_cache_conditional_options
- old_use_accept_header = ActionController::Base.use_accept_header
- ActionController::Base.use_accept_header = true
@request.env['HTTP_ACCEPT'] = 'application/json'
get :index
assert !fragment_exist?('hostname.com/action_caching_test')
- ActionController::Base.use_accept_header = old_use_accept_header
end
def test_action_cache_with_store_options
@@ -524,7 +528,7 @@ class ActionCacheTest < ActionController::TestCase
end
end
-class FragmentCachingTestController < ActionController::Base
+class FragmentCachingTestController < CachingController
def some_action; end;
end
@@ -533,8 +537,8 @@ class FragmentCachingTest < ActionController::TestCase
super
ActionController::Base.perform_caching = true
@store = ActiveSupport::Cache::MemoryStore.new
- ActionController::Base.cache_store = @store
@controller = FragmentCachingTestController.new
+ @controller.cache_store = @store
@params = {:controller => 'posts', :action => 'index'}
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
@@ -632,7 +636,7 @@ class FragmentCachingTest < ActionController::TestCase
end
-class FunctionalCachingController < ActionController::Base
+class FunctionalCachingController < CachingController
def fragment_cached
end
@@ -666,8 +670,8 @@ class FunctionalFragmentCachingTest < ActionController::TestCase
super
ActionController::Base.perform_caching = true
@store = ActiveSupport::Cache::MemoryStore.new
- ActionController::Base.cache_store = @store
@controller = FunctionalCachingController.new
+ @controller.cache_store = @store
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
end
diff --git a/actionpack/test/controller/content_type_test.rb b/actionpack/test/controller/content_type_test.rb
index e5ffe20ecc..967107853b 100644
--- a/actionpack/test/controller/content_type_test.rb
+++ b/actionpack/test/controller/content_type_test.rb
@@ -145,18 +145,6 @@ end
class AcceptBasedContentTypeTest < ActionController::TestCase
tests OldContentTypeController
- def setup
- super
- @_old_accept_header = ActionController::Base.use_accept_header
- ActionController::Base.use_accept_header = true
- end
-
- def teardown
- super
- ActionController::Base.use_accept_header = @_old_accept_header
- end
-
-
def test_render_default_content_types_for_respond_to
@request.accept = Mime::HTML.to_s
get :render_default_content_types_for_respond_to
diff --git a/actionpack/test/controller/cookie_test.rb b/actionpack/test/controller/cookie_test.rb
index f5ccef8aaf..908967a110 100644
--- a/actionpack/test/controller/cookie_test.rb
+++ b/actionpack/test/controller/cookie_test.rb
@@ -157,7 +157,7 @@ class CookieTest < ActionController::TestCase
def assert_cookie_header(expected)
header = @response.headers["Set-Cookie"]
if header.respond_to?(:to_str)
- assert_equal expected, header
+ assert_equal expected.split("\n").sort, header.split("\n").sort
else
assert_equal expected.split("\n"), header
end
diff --git a/actionpack/test/controller/http_digest_authentication_test.rb b/actionpack/test/controller/http_digest_authentication_test.rb
index 7e9a2625f1..eb2af523a2 100644
--- a/actionpack/test/controller/http_digest_authentication_test.rb
+++ b/actionpack/test/controller/http_digest_authentication_test.rb
@@ -40,11 +40,13 @@ class HttpDigestAuthenticationTest < ActionController::TestCase
setup do
# Used as secret in generating nonce to prevent tampering of timestamp
- @old_secret, ActionController::Base.session_options[:secret] = ActionController::Base.session_options[:secret], "session_options_secret"
+ @secret = "session_options_secret"
+ @controller.config.secret = @secret
+ # @old_secret, ActionController::Base.config.secret[:secret] = ActionController::Base.session_options[:secret], @secret
end
teardown do
- ActionController::Base.session_options[:secret] = @old_secret
+ # ActionController::Base.session_options[:secret] = @old_secret
end
AUTH_HEADERS.each do |header|
@@ -138,7 +140,7 @@ class HttpDigestAuthenticationTest < ActionController::TestCase
test "authentication request with request-uri that doesn't match credentials digest-uri" do
@request.env['HTTP_AUTHORIZATION'] = encode_credentials(:username => 'pretty', :password => 'please')
- @request.env['REQUEST_URI'] = "/http_digest_authentication_test/dummy_digest/altered/uri"
+ @request.env['PATH_INFO'] = "/http_digest_authentication_test/dummy_digest/altered/uri"
get :display
assert_response :unauthorized
@@ -147,7 +149,8 @@ class HttpDigestAuthenticationTest < ActionController::TestCase
test "authentication request with absolute request uri (as in webrick)" do
@request.env['HTTP_AUTHORIZATION'] = encode_credentials(:username => 'pretty', :password => 'please')
- @request.env['REQUEST_URI'] = "http://test.host/http_digest_authentication_test/dummy_digest"
+ @request.env["SERVER_NAME"] = "test.host"
+ @request.env['PATH_INFO'] = "/http_digest_authentication_test/dummy_digest"
get :display
@@ -170,7 +173,8 @@ class HttpDigestAuthenticationTest < ActionController::TestCase
test "authentication request with absolute uri in both request and credentials (as in Webrick with IE)" do
@request.env['HTTP_AUTHORIZATION'] = encode_credentials(:url => "http://test.host/http_digest_authentication_test/dummy_digest",
:username => 'pretty', :password => 'please')
- @request.env['REQUEST_URI'] = "http://test.host/http_digest_authentication_test/dummy_digest"
+ @request.env['SERVER_NAME'] = "test.host"
+ @request.env['PATH_INFO'] = "/http_digest_authentication_test/dummy_digest"
get :display
@@ -202,7 +206,7 @@ class HttpDigestAuthenticationTest < ActionController::TestCase
test "validate_digest_response should fail with nil returning password_procedure" do
@request.env['HTTP_AUTHORIZATION'] = encode_credentials(:username => nil, :password => nil)
- assert !ActionController::HttpAuthentication::Digest.validate_digest_response(@request, "SuperSecret"){nil}
+ assert !ActionController::HttpAuthentication::Digest.validate_digest_response(@secret, @request, "SuperSecret"){nil}
end
private
@@ -225,7 +229,7 @@ class HttpDigestAuthenticationTest < ActionController::TestCase
credentials = decode_credentials(@response.headers['WWW-Authenticate'])
credentials.merge!(options)
- credentials.merge!(:uri => @request.env['REQUEST_URI'].to_s)
+ credentials.merge!(:uri => @request.env['PATH_INFO'].to_s)
ActionController::HttpAuthentication::Digest.encode_credentials(method, credentials, password, options[:password_is_ha1])
end
diff --git a/actionpack/test/controller/integration_test.rb b/actionpack/test/controller/integration_test.rb
index c38348fa68..2180466ca7 100644
--- a/actionpack/test/controller/integration_test.rb
+++ b/actionpack/test/controller/integration_test.rb
@@ -284,18 +284,13 @@ class IntegrationProcessTest < ActionController::IntegrationTest
end
end
- def test_cookie_monster
+ test 'response cookies are added to the cookie jar for the next request' do
with_test_route_set do
self.cookies['cookie_1'] = "sugar"
self.cookies['cookie_2'] = "oatmeal"
get '/cookie_monster'
- assert_equal 410, status
- assert_equal "Gone", status_message
- assert_response 410
- assert_response :gone
assert_equal "cookie_1=; path=/\ncookie_3=chocolate; path=/", headers["Set-Cookie"]
assert_equal({"cookie_1"=>"", "cookie_2"=>"oatmeal", "cookie_3"=>"chocolate"}, cookies.to_hash)
- assert_equal "Gone", response.body
end
end
@@ -333,7 +328,7 @@ class IntegrationProcessTest < ActionController::IntegrationTest
with_test_route_set do
get '/get_with_params?foo=bar'
assert_equal '/get_with_params?foo=bar', request.env["REQUEST_URI"]
- assert_equal '/get_with_params?foo=bar', request.request_uri
+ assert_equal '/get_with_params?foo=bar', request.fullpath
assert_equal "foo=bar", request.env["QUERY_STRING"]
assert_equal 'foo=bar', request.query_string
assert_equal 'bar', request.parameters['foo']
@@ -346,8 +341,8 @@ class IntegrationProcessTest < ActionController::IntegrationTest
def test_get_with_parameters
with_test_route_set do
get '/get_with_params', :foo => "bar"
- assert_equal '/get_with_params', request.env["REQUEST_URI"]
- assert_equal '/get_with_params', request.request_uri
+ assert_equal '/get_with_params', request.env["PATH_INFO"]
+ assert_equal '/get_with_params', request.path_info
assert_equal 'foo=bar', request.env["QUERY_STRING"]
assert_equal 'foo=bar', request.query_string
assert_equal 'bar', request.parameters['foo']
diff --git a/actionpack/test/controller/log_subscriber_test.rb b/actionpack/test/controller/log_subscriber_test.rb
index 1f8134822c..20d3e77b6e 100644
--- a/actionpack/test/controller/log_subscriber_test.rb
+++ b/actionpack/test/controller/log_subscriber_test.rb
@@ -46,8 +46,7 @@ class ACLogSubscriberTest < ActionController::TestCase
@cache_path = File.expand_path('../temp/test_cache', File.dirname(__FILE__))
ActionController::Base.page_cache_directory = @cache_path
- ActionController::Base.cache_store = :file_store, @cache_path
-
+ @controller.cache_store = :file_store, @cache_path
Rails::LogSubscriber.add(:action_controller, ActionController::Railties::LogSubscriber.new)
end
diff --git a/actionpack/test/controller/mime_responds_test.rb b/actionpack/test/controller/mime_responds_test.rb
index 5e34773899..5c1eaf453c 100644
--- a/actionpack/test/controller/mime_responds_test.rb
+++ b/actionpack/test/controller/mime_responds_test.rb
@@ -155,13 +155,11 @@ class RespondToControllerTest < ActionController::TestCase
def setup
super
- ActionController::Base.use_accept_header = true
@request.host = "www.example.com"
end
def teardown
super
- ActionController::Base.use_accept_header = false
end
def test_html
@@ -544,13 +542,11 @@ class RespondWithControllerTest < ActionController::TestCase
def setup
super
- ActionController::Base.use_accept_header = true
@request.host = "www.example.com"
end
def teardown
super
- ActionController::Base.use_accept_header = false
end
def test_using_resource
diff --git a/actionpack/test/controller/render_test.rb b/actionpack/test/controller/render_test.rb
index ecfe14b797..e3c4869391 100644
--- a/actionpack/test/controller/render_test.rb
+++ b/actionpack/test/controller/render_test.rb
@@ -355,7 +355,7 @@ class TestController < ActionController::Base
@before = "i'm before the render"
render_to_string :text => "foo"
@after = "i'm after the render"
- render :action => "test/hello_world"
+ render :template => "test/hello_world"
end
def render_to_string_with_exception
@@ -369,7 +369,7 @@ class TestController < ActionController::Base
rescue
end
@after = "i'm after the render"
- render :action => "test/hello_world"
+ render :template => "test/hello_world"
end
def accessing_params_in_template_with_layout
@@ -514,7 +514,7 @@ class TestController < ActionController::Base
def render_to_string_with_partial
@partial_only = render_to_string :partial => "partial_only"
@partial_with_locals = render_to_string :partial => "customer", :locals => { :customer => Customer.new("david") }
- render :action => "test/hello_world"
+ render :template => "test/hello_world"
end
def partial_with_counter
diff --git a/actionpack/test/controller/test_test.rb b/actionpack/test/controller/test_test.rb
index d716dc2661..f6ba275849 100644
--- a/actionpack/test/controller/test_test.rb
+++ b/actionpack/test/controller/test_test.rb
@@ -42,7 +42,7 @@ class TestTest < ActionController::TestCase
end
def test_uri
- render :text => request.request_uri
+ render :text => request.fullpath
end
def test_query_string
@@ -128,6 +128,7 @@ XML
@controller = TestController.new
@request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
+ @request.env['PATH_INFO'] = nil
end
def test_raw_post_handling
@@ -199,7 +200,7 @@ XML
end
def test_process_with_request_uri_with_params_with_explicit_uri
- @request.request_uri = "/explicit/uri"
+ @request.env['PATH_INFO'] = "/explicit/uri"
process :test_uri, :id => 7
assert_equal "/explicit/uri", @response.body
end
@@ -210,7 +211,8 @@ XML
end
def test_process_with_query_string_with_explicit_uri
- @request.request_uri = "/explicit/uri?q=test?extra=question"
+ @request.env['PATH_INFO'] = '/explicit/uri'
+ @request.env['QUERY_STRING'] = 'q=test?extra=question'
process :test_query_string
assert_equal "q=test?extra=question", @response.body
end
diff --git a/actionpack/test/controller/url_for_test.rb b/actionpack/test/controller/url_for_test.rb
index a7b77edc6e..fc7773dffe 100644
--- a/actionpack/test/controller/url_for_test.rb
+++ b/actionpack/test/controller/url_for_test.rb
@@ -113,15 +113,13 @@ module AbstractController
end
def test_relative_url_root_is_respected
- orig_relative_url_root = ActionController::Base.relative_url_root
- ActionController::Base.relative_url_root = '/subdir'
+ # ROUTES TODO: Tests should not have to pass :relative_url_root directly. This
+ # should probably come from the router.
add_host!
assert_equal('https://www.basecamphq.com/subdir/c/a/i',
- W.new.url_for(:controller => 'c', :action => 'a', :id => 'i', :protocol => 'https')
+ W.new.url_for(:controller => 'c', :action => 'a', :id => 'i', :protocol => 'https', :script_name => '/subdir')
)
- ensure
- ActionController::Base.relative_url_root = orig_relative_url_root
end
def test_named_routes
@@ -146,9 +144,6 @@ module AbstractController
end
def test_relative_url_root_is_respected_for_named_routes
- orig_relative_url_root = ActionController::Base.relative_url_root
- ActionController::Base.relative_url_root = '/subdir'
-
with_routing do |set|
set.draw do |map|
match '/home/sweet/home/:user', :to => 'home#index', :as => :home
@@ -158,10 +153,8 @@ module AbstractController
controller = kls.new
assert_equal 'http://www.basecamphq.com/subdir/home/sweet/home/again',
- controller.send(:home_url, :host => 'www.basecamphq.com', :user => 'again')
+ controller.send(:home_url, :host => 'www.basecamphq.com', :user => 'again', :script_name => "/subdir")
end
- ensure
- ActionController::Base.relative_url_root = orig_relative_url_root
end
def test_only_path
diff --git a/actionpack/test/controller/url_rewriter_test.rb b/actionpack/test/controller/url_rewriter_test.rb
index 199b824a7a..7b46a48a1d 100644
--- a/actionpack/test/controller/url_rewriter_test.rb
+++ b/actionpack/test/controller/url_rewriter_test.rb
@@ -1,13 +1,24 @@
require 'abstract_unit'
require 'controller/fake_controllers'
-ActionController::UrlRewriter
-
class UrlRewriterTests < ActionController::TestCase
+ class Rewriter
+ def initialize(request)
+ @options = {
+ :host => request.host_with_port,
+ :protocol => request.protocol
+ }
+ end
+
+ def rewrite(router, options)
+ router.url_for(@options.merge(options))
+ end
+ end
+
def setup
@request = ActionController::TestRequest.new
@params = {}
- @rewriter = ActionController::UrlRewriter.new(@request, @params)
+ @rewriter = Rewriter.new(@request) #.new(@request, @params)
end
def test_port
@@ -61,34 +72,6 @@ class UrlRewriterTests < ActionController::TestCase
)
end
- def test_overwrite_params
- @params[:controller] = 'hi'
- @params[:action] = 'bye'
- @params[:id] = '2'
-
- assert_equal '/hi/hi/2', @rewriter.rewrite(@router, :only_path => true, :overwrite_params => {:action => 'hi'})
- u = @rewriter.rewrite(@router, :only_path => false, :overwrite_params => {:action => 'hi'})
- assert_match %r(/hi/hi/2$), u
- end
-
- def test_overwrite_removes_original
- @params[:controller] = 'search'
- @params[:action] = 'list'
- @params[:list_page] = 1
-
- assert_equal '/search/list?list_page=2', @rewriter.rewrite(@router, :only_path => true, :overwrite_params => {"list_page" => 2})
- u = @rewriter.rewrite(@router, :only_path => false, :overwrite_params => {:list_page => 2})
- assert_equal 'http://test.host/search/list?list_page=2', u
- end
-
- def test_to_str
- @params[:controller] = 'hi'
- @params[:action] = 'bye'
- @request.parameters[:id] = '2'
-
- assert_equal 'http://, test.host, /, hi, bye, {"id"=>"2"}', @rewriter.to_str
- end
-
def test_trailing_slash
options = {:controller => 'foo', :action => 'bar', :id => '3', :only_path => true}
assert_equal '/foo/bar/3', @rewriter.rewrite(@router, options)
diff --git a/actionpack/test/controller/view_paths_test.rb b/actionpack/test/controller/view_paths_test.rb
index 56821332c5..b8972b04b6 100644
--- a/actionpack/test/controller/view_paths_test.rb
+++ b/actionpack/test/controller/view_paths_test.rb
@@ -36,9 +36,12 @@ class ViewLoadPathsTest < ActionController::TestCase
@old_behavior = ActiveSupport::Deprecation.behavior
@last_message = nil
ActiveSupport::Deprecation.behavior = Proc.new { |message, callback| @last_message = message }
+
+ @paths = TestController.view_paths
end
def teardown
+ TestController.view_paths = @paths
ActiveSupport::Deprecation.behavior = @old_behavior
end
diff --git a/actionpack/test/dispatch/mount_test.rb b/actionpack/test/dispatch/mount_test.rb
new file mode 100644
index 0000000000..f89e5fda07
--- /dev/null
+++ b/actionpack/test/dispatch/mount_test.rb
@@ -0,0 +1,36 @@
+require 'abstract_unit'
+
+class TestRoutingMount < ActionDispatch::IntegrationTest
+ SprocketsApp = lambda { |env|
+ [200, {"Content-Type" => "text/html"}, ["#{env["SCRIPT_NAME"]} -- #{env["PATH_INFO"]}"]]
+ }
+
+ Router = ActionDispatch::Routing::RouteSet.new
+ Router.draw do
+ mount SprocketsApp, :at => "/sprockets"
+ mount SprocketsApp => "/shorthand"
+
+ scope "/its_a" do
+ mount SprocketsApp, :at => "/sprocket"
+ end
+ end
+
+ def app
+ Router
+ end
+
+ def test_mounting_sets_script_name
+ get "/sprockets/omg"
+ assert_equal "/sprockets -- /omg", response.body
+ end
+
+ def test_mounting_works_with_scope
+ get "/its_a/sprocket/omg"
+ assert_equal "/its_a/sprocket -- /omg", response.body
+ end
+
+ def test_mounting_with_shorthand
+ get "/shorthand/omg"
+ assert_equal "/shorthand -- /omg", response.body
+ end
+end \ No newline at end of file
diff --git a/actionpack/test/dispatch/request_test.rb b/actionpack/test/dispatch/request_test.rb
index cc6acead6e..badef4e92e 100644
--- a/actionpack/test/dispatch/request_test.rb
+++ b/actionpack/test/dispatch/request_test.rb
@@ -1,14 +1,6 @@
require 'abstract_unit'
class RequestTest < ActiveSupport::TestCase
- def setup
- ActionController::Base.relative_url_root = nil
- end
-
- def teardown
- ActionController::Base.relative_url_root = nil
- end
-
test "remote ip" do
request = stub_request 'REMOTE_ADDR' => '1.2.3.4'
assert_equal '1.2.3.4', request.remote_ip
@@ -50,7 +42,7 @@ class RequestTest < ActiveSupport::TestCase
request = stub_request 'HTTP_X_FORWARDED_FOR' => '1.1.1.1',
'HTTP_CLIENT_IP' => '2.2.2.2'
- e = assert_raise(ActionController::ActionControllerError) {
+ e = assert_raise(ActionDispatch::RemoteIp::IpSpoofAttackError) {
request.remote_ip
}
assert_match /IP spoofing attack/, e.message
@@ -62,18 +54,17 @@ class RequestTest < ActiveSupport::TestCase
# example is WAP. Since the cellular network is not IP based, it's a
# leap of faith to assume that their proxies are ever going to set the
# HTTP_CLIENT_IP/HTTP_X_FORWARDED_FOR headers properly.
- ActionController::Base.ip_spoofing_check = false
request = stub_request 'HTTP_X_FORWARDED_FOR' => '1.1.1.1',
- 'HTTP_CLIENT_IP' => '2.2.2.2'
+ 'HTTP_CLIENT_IP' => '2.2.2.2',
+ :ip_spoofing_check => false
assert_equal '2.2.2.2', request.remote_ip
- ActionController::Base.ip_spoofing_check = true
request = stub_request 'HTTP_X_FORWARDED_FOR' => '8.8.8.8, 9.9.9.9'
assert_equal '9.9.9.9', request.remote_ip
end
test "remote ip with user specified trusted proxies" do
- ActionController::Base.trusted_proxies = /^67\.205\.106\.73$/i
+ @trusted_proxies = /^67\.205\.106\.73$/i
request = stub_request 'REMOTE_ADDR' => '67.205.106.73',
'HTTP_X_FORWARDED_FOR' => '3.4.5.6'
@@ -96,8 +87,6 @@ class RequestTest < ActiveSupport::TestCase
request = stub_request 'HTTP_X_FORWARDED_FOR' => '9.9.9.9, 3.4.5.6, 10.0.0.1, 67.205.106.73'
assert_equal '3.4.5.6', request.remote_ip
-
- ActionController::Base.trusted_proxies = nil
end
test "domains" do
@@ -151,104 +140,34 @@ class RequestTest < ActiveSupport::TestCase
assert_equal ":8080", request.port_string
end
- test "request uri" do
- request = stub_request 'REQUEST_URI' => "http://www.rubyonrails.org/path/of/some/uri?mapped=1"
- assert_equal "/path/of/some/uri?mapped=1", request.request_uri
- assert_equal "/path/of/some/uri", request.path
-
- request = stub_request 'REQUEST_URI' => "http://www.rubyonrails.org/path/of/some/uri"
- assert_equal "/path/of/some/uri", request.request_uri
- assert_equal "/path/of/some/uri", request.path
-
- request = stub_request 'REQUEST_URI' => "/path/of/some/uri"
- assert_equal "/path/of/some/uri", request.request_uri
- assert_equal "/path/of/some/uri", request.path
-
- request = stub_request 'REQUEST_URI' => "/"
- assert_equal "/", request.request_uri
- assert_equal "/", request.path
-
- request = stub_request 'REQUEST_URI' => "/?m=b"
- assert_equal "/?m=b", request.request_uri
- assert_equal "/", request.path
-
- request = stub_request 'REQUEST_URI' => "/", 'SCRIPT_NAME' => '/dispatch.cgi'
- assert_equal "/", request.request_uri
- assert_equal "/", request.path
-
- ActionController::Base.relative_url_root = "/hieraki"
- request = stub_request 'REQUEST_URI' => "/hieraki/", 'SCRIPT_NAME' => "/hieraki/dispatch.cgi"
- assert_equal "/hieraki/", request.request_uri
- assert_equal "/", request.path
- ActionController::Base.relative_url_root = nil
-
- ActionController::Base.relative_url_root = "/collaboration/hieraki"
- request = stub_request 'REQUEST_URI' => "/collaboration/hieraki/books/edit/2",
- 'SCRIPT_NAME' => "/collaboration/hieraki/dispatch.cgi"
- assert_equal "/collaboration/hieraki/books/edit/2", request.request_uri
- assert_equal "/books/edit/2", request.path
- ActionController::Base.relative_url_root = nil
-
- # The following tests are for when REQUEST_URI is not supplied (as in IIS)
- request = stub_request 'PATH_INFO' => "/path/of/some/uri?mapped=1",
- 'SCRIPT_NAME' => nil,
- 'REQUEST_URI' => nil
- assert_equal "/path/of/some/uri?mapped=1", request.request_uri
- assert_equal "/path/of/some/uri", request.path
-
- ActionController::Base.relative_url_root = '/path'
- request = stub_request 'PATH_INFO' => "/path/of/some/uri?mapped=1",
- 'SCRIPT_NAME' => "/path/dispatch.rb",
- 'REQUEST_URI' => nil
- assert_equal "/path/of/some/uri?mapped=1", request.request_uri
- assert_equal "/of/some/uri", request.path
- ActionController::Base.relative_url_root = nil
-
- request = stub_request 'PATH_INFO' => "/path/of/some/uri",
- 'SCRIPT_NAME' => nil,
- 'REQUEST_URI' => nil
- assert_equal "/path/of/some/uri", request.request_uri
- assert_equal "/path/of/some/uri", request.path
-
- request = stub_request 'PATH_INFO' => '/', 'REQUEST_URI' => nil
- assert_equal "/", request.request_uri
- assert_equal "/", request.path
-
- request = stub_request 'PATH_INFO' => '/?m=b', 'REQUEST_URI' => nil
- assert_equal "/?m=b", request.request_uri
- assert_equal "/", request.path
-
- request = stub_request 'PATH_INFO' => "/",
- 'SCRIPT_NAME' => "/dispatch.cgi",
- 'REQUEST_URI' => nil
- assert_equal "/", request.request_uri
- assert_equal "/", request.path
-
- ActionController::Base.relative_url_root = '/hieraki'
- request = stub_request 'PATH_INFO' => "/hieraki/",
- 'SCRIPT_NAME' => "/hieraki/dispatch.cgi",
- 'REQUEST_URI' => nil
- assert_equal "/hieraki/", request.request_uri
- assert_equal "/", request.path
- ActionController::Base.relative_url_root = nil
-
- request = stub_request 'REQUEST_URI' => '/hieraki/dispatch.cgi'
- ActionController::Base.relative_url_root = '/hieraki'
- assert_equal "/dispatch.cgi", request.path
- ActionController::Base.relative_url_root = nil
-
- request = stub_request 'REQUEST_URI' => '/hieraki/dispatch.cgi'
- ActionController::Base.relative_url_root = '/foo'
- assert_equal "/hieraki/dispatch.cgi", request.path
- ActionController::Base.relative_url_root = nil
-
- # This test ensures that Rails uses REQUEST_URI over PATH_INFO
- ActionController::Base.relative_url_root = nil
- request = stub_request 'REQUEST_URI' => "/some/path",
- 'PATH_INFO' => "/another/path",
- 'SCRIPT_NAME' => "/dispatch.cgi"
- assert_equal "/some/path", request.request_uri
- assert_equal "/some/path", request.path
+ test "full path" do
+ request = stub_request 'SCRIPT_NAME' => '', 'PATH_INFO' => '/path/of/some/uri', 'QUERY_STRING' => 'mapped=1'
+ assert_equal "/path/of/some/uri?mapped=1", request.fullpath
+ assert_equal "/path/of/some/uri", request.path_info
+
+ request = stub_request 'SCRIPT_NAME' => '', 'PATH_INFO' => '/path/of/some/uri'
+ assert_equal "/path/of/some/uri", request.fullpath
+ assert_equal "/path/of/some/uri", request.path_info
+
+ request = stub_request 'SCRIPT_NAME' => '', 'PATH_INFO' => '/'
+ assert_equal "/", request.fullpath
+ assert_equal "/", request.path_info
+
+ request = stub_request 'SCRIPT_NAME' => '', 'PATH_INFO' => '/', 'QUERY_STRING' => 'm=b'
+ assert_equal "/?m=b", request.fullpath
+ assert_equal "/", request.path_info
+
+ request = stub_request 'SCRIPT_NAME' => '/hieraki', 'PATH_INFO' => '/'
+ assert_equal "/hieraki/", request.fullpath
+ assert_equal "/", request.path_info
+
+ request = stub_request 'SCRIPT_NAME' => '/collaboration/hieraki', 'PATH_INFO' => '/books/edit/2'
+ assert_equal "/collaboration/hieraki/books/edit/2", request.fullpath
+ assert_equal "/books/edit/2", request.path_info
+
+ request = stub_request 'SCRIPT_NAME' => '/path', 'PATH_INFO' => '/of/some/uri', 'QUERY_STRING' => 'mapped=1'
+ assert_equal "/path/of/some/uri?mapped=1", request.fullpath
+ assert_equal "/of/some/uri", request.path_info
end
@@ -506,18 +425,14 @@ class RequestTest < ActiveSupport::TestCase
protected
- def stub_request(env={})
+ def stub_request(env = {})
+ ip_spoofing_check = env.key?(:ip_spoofing_check) ? env.delete(:ip_spoofing_check) : true
+ ip_app = ActionDispatch::RemoteIp.new(Proc.new { }, ip_spoofing_check, @trusted_proxies)
+ ip_app.call(env)
ActionDispatch::Request.new(env)
end
def with_set(*args)
args
end
-
- def with_accept_header(value)
- ActionController::Base.use_accept_header, old = value, ActionController::Base.use_accept_header
- yield
- ensure
- ActionController::Base.use_accept_header = old
- end
end
diff --git a/actionpack/test/dispatch/routing_test.rb b/actionpack/test/dispatch/routing_test.rb
index 37c2f1421b..f5fcf9b0df 100644
--- a/actionpack/test/dispatch/routing_test.rb
+++ b/actionpack/test/dispatch/routing_test.rb
@@ -15,6 +15,8 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
stub_controllers do |routes|
Routes = routes
Routes.draw do
+ default_url_options :host => "rubyonrails.org"
+
controller :sessions do
get 'login' => :new, :as => :login
post 'login' => :create
@@ -24,6 +26,8 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
resource :session do
get :create
+
+ resource :info
end
match 'account/logout' => redirect("/logout"), :as => :logout_redirect
@@ -187,6 +191,8 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
assert_equal '/login', url_for(:controller => 'sessions', :action => 'create', :only_path => true)
assert_equal '/login', url_for(:controller => 'sessions', :action => 'new', :only_path => true)
+
+ assert_equal 'http://rubyonrails.org/login', Routes.url_for(:controller => 'sessions', :action => 'create')
end
end
@@ -234,6 +240,14 @@ class TestRoutingMapper < ActionDispatch::IntegrationTest
end
end
+ def test_session_info_nested_singleton_resource
+ with_test_routes do
+ get '/session/info'
+ assert_equal 'infos#show', @response.body
+ assert_equal '/session/info', session_info_path
+ end
+ end
+
def test_redirect_modulo
with_test_routes do
get '/account/modulo/name'
diff --git a/actionpack/test/dispatch/url_generation_test.rb b/actionpack/test/dispatch/url_generation_test.rb
new file mode 100644
index 0000000000..18b5b7ee00
--- /dev/null
+++ b/actionpack/test/dispatch/url_generation_test.rb
@@ -0,0 +1,38 @@
+require 'abstract_unit'
+
+module TestUrlGeneration
+ class WithMountPoint < ActionDispatch::IntegrationTest
+ Router = ActionDispatch::Routing::RouteSet.new
+ Router.draw { match "/foo", :to => "my_route_generating#index", :as => :foo }
+
+ class ::MyRouteGeneratingController < ActionController::Base
+ include Router.url_helpers
+ def index
+ render :text => foo_path
+ end
+ end
+
+ include Router.url_helpers
+
+ def _router
+ Router
+ end
+
+ def app
+ Router
+ end
+
+ test "generating URLS normally" do
+ assert_equal "/foo", foo_path
+ end
+
+ test "accepting a :script_name option" do
+ assert_equal "/bar/foo", foo_path(:script_name => "/bar")
+ end
+
+ test "the request's SCRIPT_NAME takes precedence over the router's" do
+ get "/foo", {}, 'SCRIPT_NAME' => "/new"
+ assert_equal "/new/foo", response.body
+ end
+ end
+end \ No newline at end of file
diff --git a/actionpack/test/fixtures/test/layout_render_file.erb b/actionpack/test/fixtures/test/layout_render_file.erb
new file mode 100644
index 0000000000..2f8e921c5f
--- /dev/null
+++ b/actionpack/test/fixtures/test/layout_render_file.erb
@@ -0,0 +1,2 @@
+<% content_for :title do %>title<% end -%>
+<%= render :file => 'layouts/yield' -%> \ No newline at end of file
diff --git a/actionpack/test/lib/fixture_template.rb b/actionpack/test/lib/fixture_template.rb
index 6b9e7c5270..d287fae470 100644
--- a/actionpack/test/lib/fixture_template.rb
+++ b/actionpack/test/lib/fixture_template.rb
@@ -1,13 +1,13 @@
module ActionView #:nodoc:
class FixtureResolver < PathResolver
- def initialize(hash = {}, options = {})
- super(options)
+ def initialize(hash = {})
+ super()
@hash = hash
end
private
- def query(path, exts)
+ def query(partial, path, exts)
query = Regexp.escape(path)
exts.each do |ext|
query << '(?:' << ext.map {|e| e && Regexp.escape(".#{e}") }.join('|') << ')'
@@ -15,9 +15,11 @@ module ActionView #:nodoc:
templates = []
@hash.select { |k,v| k =~ /^#{query}$/ }.each do |path, source|
- templates << Template.new(source, path, *path_to_details(path))
+ handler, format = extract_handler_and_format(path)
+ templates << Template.new(source, path, handler,
+ :partial => partial, :virtual_path => path, :format => format)
end
- templates.sort_by {|t| -t.details.values.compact.size }
+ templates.sort_by {|t| -t.formats.size }
end
end
diff --git a/actionpack/test/template/asset_tag_helper_test.rb b/actionpack/test/template/asset_tag_helper_test.rb
index 586de66714..50c3ab0b60 100644
--- a/actionpack/test/template/asset_tag_helper_test.rb
+++ b/actionpack/test/template/asset_tag_helper_test.rb
@@ -1,14 +1,16 @@
require 'abstract_unit'
+require 'active_support/ordered_options'
-class AssetTagHelperTest < ActionView::TestCase
- tests ActionView::Helpers::AssetTagHelper
+class FakeController
+ attr_accessor :request
- DEFAULT_CONFIG = ActionView::DEFAULT_CONFIG.merge(
- :assets_dir => File.dirname(__FILE__) + "/../fixtures/public",
- :javascripts_dir => File.dirname(__FILE__) + "/../fixtures/public/javascripts",
- :stylesheets_dir => File.dirname(__FILE__) + "/../fixtures/public/stylesheets")
+ def config
+ @config ||= ActiveSupport::InheritableOptions.new(ActionController::Base.config)
+ end
+end
- include ActiveSupport::Configurable
+class AssetTagHelperTest < ActionView::TestCase
+ tests ActionView::Helpers::AssetTagHelper
def setup
super
@@ -32,8 +34,7 @@ class AssetTagHelperTest < ActionView::TestCase
)
end
- @controller = Class.new do
- attr_accessor :request
+ @controller = Class.new(BasicController) do
def url_for(*args) "http://www.example.com" end
end.new
@@ -50,7 +51,6 @@ class AssetTagHelperTest < ActionView::TestCase
def teardown
ActionController::Base.perform_caching = false
- ActionController::Base.asset_host = nil
ENV.delete('RAILS_ASSET_ID')
end
@@ -372,11 +372,9 @@ class AssetTagHelperTest < ActionView::TestCase
end
def test_timebased_asset_id_with_relative_url_root
- ActionController::Base.relative_url_root = "/collaboration/hieraki"
- expected_time = File.stat(File.expand_path(File.dirname(__FILE__) + "/../fixtures/public/images/rails.png")).mtime.to_i.to_s
- assert_equal %(<img alt="Rails" src="#{ActionController::Base.relative_url_root}/images/rails.png?#{expected_time}" />), image_tag("rails.png")
- ensure
- ActionController::Base.relative_url_root = ""
+ @controller.config.relative_url_root = "/collaboration/hieraki"
+ expected_time = File.stat(File.expand_path(File.dirname(__FILE__) + "/../fixtures/public/images/rails.png")).mtime.to_i.to_s
+ assert_equal %(<img alt="Rails" src="#{@controller.config.relative_url_root}/images/rails.png?#{expected_time}" />), image_tag("rails.png")
end
def test_should_skip_asset_id_on_complete_url
@@ -402,7 +400,7 @@ class AssetTagHelperTest < ActionView::TestCase
def test_caching_image_path_with_caching_and_proc_asset_host_using_request
ENV['RAILS_ASSET_ID'] = ''
- ActionController::Base.asset_host = Proc.new do |source, request|
+ @controller.config.asset_host = Proc.new do |source, request|
if request.ssl?
"#{request.protocol}#{request.host_with_port}"
else
@@ -410,8 +408,6 @@ class AssetTagHelperTest < ActionView::TestCase
end
end
- ActionController::Base.perform_caching = true
-
@controller.request.stubs(:ssl?).returns(false)
assert_equal "http://assets15.example.com/images/xml.png", image_path("xml.png")
@@ -422,7 +418,7 @@ class AssetTagHelperTest < ActionView::TestCase
def test_caching_javascript_include_tag_when_caching_on
ENV["RAILS_ASSET_ID"] = ""
- ActionController::Base.asset_host = 'http://a0.example.com'
+ @controller.config.asset_host = 'http://a0.example.com'
ActionController::Base.perform_caching = true
assert_dom_equal(
@@ -454,7 +450,7 @@ class AssetTagHelperTest < ActionView::TestCase
def test_caching_javascript_include_tag_when_caching_on_with_proc_asset_host
ENV['RAILS_ASSET_ID'] = ''
- ActionController::Base.asset_host = Proc.new { |source| "http://a#{source.length}.example.com" }
+ @controller.config.asset_host = Proc.new { |source| "http://a#{source.length}.example.com" }
ActionController::Base.perform_caching = true
assert_equal '/javascripts/scripts.js'.length, 23
@@ -471,7 +467,7 @@ class AssetTagHelperTest < ActionView::TestCase
def test_caching_javascript_include_tag_when_caching_on_with_2_argument_proc_asset_host
ENV['RAILS_ASSET_ID'] = ''
- ActionController::Base.asset_host = Proc.new { |source, request|
+ @controller.config.asset_host = Proc.new { |source, request|
if request.ssl?
"#{request.protocol}#{request.host_with_port}"
else
@@ -508,7 +504,7 @@ class AssetTagHelperTest < ActionView::TestCase
def test_caching_javascript_include_tag_when_caching_on_with_2_argument_object_asset_host
ENV['RAILS_ASSET_ID'] = ''
- ActionController::Base.asset_host = Class.new do
+ @controller.config.asset_host = Class.new do
def call(source, request)
if request.ssl?
"#{request.protocol}#{request.host_with_port}"
@@ -548,7 +544,7 @@ class AssetTagHelperTest < ActionView::TestCase
def test_caching_javascript_include_tag_when_caching_on_and_using_subdirectory
ENV["RAILS_ASSET_ID"] = ""
- ActionController::Base.asset_host = 'http://a%d.example.com'
+ @controller.config.asset_host = 'http://a%d.example.com'
ActionController::Base.perform_caching = true
hash = '/javascripts/cache/money.js'.hash % 4
@@ -564,7 +560,7 @@ class AssetTagHelperTest < ActionView::TestCase
def test_caching_javascript_include_tag_with_all_and_recursive_puts_defaults_at_the_start_of_the_file
ENV["RAILS_ASSET_ID"] = ""
- ActionController::Base.asset_host = 'http://a0.example.com'
+ @controller.config.asset_host = 'http://a0.example.com'
ActionController::Base.perform_caching = true
assert_dom_equal(
@@ -585,7 +581,7 @@ class AssetTagHelperTest < ActionView::TestCase
def test_caching_javascript_include_tag_with_all_puts_defaults_at_the_start_of_the_file
ENV["RAILS_ASSET_ID"] = ""
- ActionController::Base.asset_host = 'http://a0.example.com'
+ @controller.config.asset_host = 'http://a0.example.com'
ActionController::Base.perform_caching = true
assert_dom_equal(
@@ -606,7 +602,7 @@ class AssetTagHelperTest < ActionView::TestCase
def test_caching_javascript_include_tag_with_relative_url_root
ENV["RAILS_ASSET_ID"] = ""
- ActionController::Base.relative_url_root = "/collaboration/hieraki"
+ @controller.config.relative_url_root = "/collaboration/hieraki"
ActionController::Base.perform_caching = true
assert_dom_equal(
@@ -624,7 +620,6 @@ class AssetTagHelperTest < ActionView::TestCase
assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
ensure
- ActionController::Base.relative_url_root = nil
FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'all.js'))
FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::JAVASCRIPTS_DIR, 'money.js'))
end
@@ -694,7 +689,7 @@ class AssetTagHelperTest < ActionView::TestCase
def test_caching_stylesheet_link_tag_when_caching_on
ENV["RAILS_ASSET_ID"] = ""
- ActionController::Base.asset_host = 'http://a0.example.com'
+ @controller.config.asset_host = 'http://a0.example.com'
ActionController::Base.perform_caching = true
assert_dom_equal(
@@ -804,7 +799,7 @@ class AssetTagHelperTest < ActionView::TestCase
def test_caching_stylesheet_link_tag_when_caching_on_with_proc_asset_host
ENV["RAILS_ASSET_ID"] = ""
- ActionController::Base.asset_host = Proc.new { |source| "http://a#{source.length}.example.com" }
+ @controller.config.asset_host = Proc.new { |source| "http://a#{source.length}.example.com" }
ActionController::Base.perform_caching = true
assert_equal '/stylesheets/styles.css'.length, 23
@@ -821,7 +816,7 @@ class AssetTagHelperTest < ActionView::TestCase
def test_caching_stylesheet_link_tag_with_relative_url_root
ENV["RAILS_ASSET_ID"] = ""
- ActionController::Base.relative_url_root = "/collaboration/hieraki"
+ @controller.config.relative_url_root = "/collaboration/hieraki"
ActionController::Base.perform_caching = true
assert_dom_equal(
@@ -841,7 +836,6 @@ class AssetTagHelperTest < ActionView::TestCase
assert File.exist?(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
ensure
- ActionController::Base.relative_url_root = nil
FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'all.css'))
FileUtils.rm_f(File.join(ActionView::Helpers::AssetTagHelper::STYLESHEETS_DIR, 'money.css'))
end
@@ -879,21 +873,16 @@ end
class AssetTagHelperNonVhostTest < ActionView::TestCase
tests ActionView::Helpers::AssetTagHelper
- DEFAULT_CONFIG = ActionView::DEFAULT_CONFIG
- include ActiveSupport::Configurable
-
def setup
super
- ActionController::Base.relative_url_root = "/collaboration/hieraki"
-
- @controller = Class.new do
- attr_accessor :request
-
+ @controller = Class.new(BasicController) do
def url_for(options)
"http://www.example.com/collaboration/hieraki"
end
end.new
+ @controller.config.relative_url_root = "/collaboration/hieraki"
+
@request = Class.new do
def protocol
'gopher://'
@@ -905,10 +894,6 @@ class AssetTagHelperNonVhostTest < ActionView::TestCase
ActionView::Helpers::AssetTagHelper::reset_javascript_include_default
end
- def teardown
- ActionController::Base.relative_url_root = nil
- end
-
def test_should_compute_proper_path
assert_dom_equal(%(<link href="http://www.example.com/collaboration/hieraki" rel="alternate" title="RSS" type="application/rss+xml" />), auto_discovery_link_tag)
assert_dom_equal(%(/collaboration/hieraki/javascripts/xmlhr.js), javascript_path("xmlhr"))
@@ -923,43 +908,33 @@ class AssetTagHelperNonVhostTest < ActionView::TestCase
end
def test_should_compute_proper_path_with_asset_host
- ActionController::Base.asset_host = "http://assets.example.com"
+ @controller.config.asset_host = "http://assets.example.com"
assert_dom_equal(%(<link href="http://www.example.com/collaboration/hieraki" rel="alternate" title="RSS" type="application/rss+xml" />), auto_discovery_link_tag)
assert_dom_equal(%(http://assets.example.com/collaboration/hieraki/javascripts/xmlhr.js), javascript_path("xmlhr"))
assert_dom_equal(%(http://assets.example.com/collaboration/hieraki/stylesheets/style.css), stylesheet_path("style"))
assert_dom_equal(%(http://assets.example.com/collaboration/hieraki/images/xml.png), image_path("xml.png"))
assert_dom_equal(%(<img alt="Mouse" onmouseover="this.src='http://assets.example.com/collaboration/hieraki/images/mouse_over.png'" onmouseout="this.src='http://assets.example.com/collaboration/hieraki/images/mouse.png'" src="http://assets.example.com/collaboration/hieraki/images/mouse.png" />), image_tag("mouse.png", :mouseover => "/images/mouse_over.png"))
assert_dom_equal(%(<img alt="Mouse2" onmouseover="this.src='http://assets.example.com/collaboration/hieraki/images/mouse_over2.png'" onmouseout="this.src='http://assets.example.com/collaboration/hieraki/images/mouse2.png'" src="http://assets.example.com/collaboration/hieraki/images/mouse2.png" />), image_tag("mouse2.png", :mouseover => image_path("mouse_over2.png")))
- ensure
- ActionController::Base.asset_host = ""
end
def test_should_ignore_asset_host_on_complete_url
- ActionController::Base.asset_host = "http://assets.example.com"
+ @controller.config.asset_host = "http://assets.example.com"
assert_dom_equal(%(<link href="http://bar.example.com/stylesheets/style.css" media="screen" rel="stylesheet" type="text/css" />), stylesheet_link_tag("http://bar.example.com/stylesheets/style.css"))
- ensure
- ActionController::Base.asset_host = ""
end
def test_should_wildcard_asset_host_between_zero_and_four
- ActionController::Base.asset_host = 'http://a%d.example.com'
+ @controller.config.asset_host = 'http://a%d.example.com'
assert_match %r(http://a[0123].example.com/collaboration/hieraki/images/xml.png), image_path('xml.png')
- ensure
- ActionController::Base.asset_host = nil
end
def test_asset_host_without_protocol_should_use_request_protocol
- ActionController::Base.asset_host = 'a.example.com'
+ @controller.config.asset_host = 'a.example.com'
assert_equal 'gopher://a.example.com/collaboration/hieraki/images/xml.png', image_path('xml.png')
- ensure
- ActionController::Base.asset_host = nil
end
def test_asset_host_without_protocol_should_use_request_protocol_even_if_path_present
- ActionController::Base.asset_host = 'a.example.com/files/go/here'
+ @controller.config.asset_host = 'a.example.com/files/go/here'
assert_equal 'gopher://a.example.com/files/go/here/collaboration/hieraki/images/xml.png', image_path('xml.png')
- ensure
- ActionController::Base.asset_host = nil
end
def test_assert_css_and_js_of_the_same_name_return_correct_extension
diff --git a/actionpack/test/template/compiled_templates_test.rb b/actionpack/test/template/compiled_templates_test.rb
index 632988bb2e..2c719757e4 100644
--- a/actionpack/test/template/compiled_templates_test.rb
+++ b/actionpack/test/template/compiled_templates_test.rb
@@ -14,9 +14,6 @@ class CompiledTemplatesTest < Test::Unit::TestCase
assert_equal "two", render(:file => "test/render_file_with_locals_and_default.erb", :locals => { :secret => "two" })
end
- # This is broken in 1.8.6 (not supported in Rails 3.0) because the cache uses a Hash
- # key. Since Ruby 1.8.6 implements Hash#hash using the hash's object_id, it will never
- # successfully get a cache hit here.
def test_template_changes_are_not_reflected_with_cached_templates
assert_equal "Hello world!", render(:file => "test/hello_world.erb")
modify_template "test/hello_world.erb", "Goodbye world!" do
@@ -44,7 +41,7 @@ class CompiledTemplatesTest < Test::Unit::TestCase
end
def render_without_cache(*args)
- path = ActionView::FileSystemResolverWithFallback.new(FIXTURE_LOAD_PATH)
+ path = ActionView::FileSystemResolver.new(FIXTURE_LOAD_PATH)
view_paths = ActionView::Base.process_view_paths(path)
ActionView::Base.new(view_paths, {}).render(*args)
end
diff --git a/actionpack/test/template/date_helper_test.rb b/actionpack/test/template/date_helper_test.rb
index 7d3075d232..da2477b6f8 100644
--- a/actionpack/test/template/date_helper_test.rb
+++ b/actionpack/test/template/date_helper_test.rb
@@ -1229,11 +1229,28 @@ class DateHelperTest < ActionView::TestCase
assert_dom_equal expected, date_select("post", "written_on", :order => [ :month, :year ])
end
+ def test_date_select_without_day_and_with_disabled_html_option
+ @post = Post.new
+ @post.written_on = Date.new(2004, 6, 15)
+
+ expected = "<input type=\"hidden\" id=\"post_written_on_3i\" disabled=\"disabled\" name=\"post[written_on(3i)]\" value=\"1\" />\n"
+
+ expected << %{<select id="post_written_on_2i" disabled="disabled" name="post[written_on(2i)]">\n}
+ expected << %{<option value="1">January</option>\n<option value="2">February</option>\n<option value="3">March</option>\n<option value="4">April</option>\n<option value="5">May</option>\n<option value="6" selected="selected">June</option>\n<option value="7">July</option>\n<option value="8">August</option>\n<option value="9">September</option>\n<option value="10">October</option>\n<option value="11">November</option>\n<option value="12">December</option>\n}
+ expected << "</select>\n"
+
+ expected << %{<select id="post_written_on_1i" disabled="disabled" name="post[written_on(1i)]">\n}
+ expected << %{<option value="1999">1999</option>\n<option value="2000">2000</option>\n<option value="2001">2001</option>\n<option value="2002">2002</option>\n<option value="2003">2003</option>\n<option value="2004" selected="selected">2004</option>\n<option value="2005">2005</option>\n<option value="2006">2006</option>\n<option value="2007">2007</option>\n<option value="2008">2008</option>\n<option value="2009">2009</option>\n}
+ expected << "</select>\n"
+
+ assert_dom_equal expected, date_select("post", "written_on", { :order => [ :month, :year ] }, :disabled => true)
+ end
+
def test_date_select_within_fields_for
@post = Post.new
@post.written_on = Date.new(2004, 6, 15)
- fields_for :post, @post do |f|
+ output_buffer = fields_for :post, @post do |f|
concat f.date_select(:written_on)
end
@@ -1249,7 +1266,7 @@ class DateHelperTest < ActionView::TestCase
@post.written_on = Date.new(2004, 6, 15)
id = 27
- fields_for :post, @post, :index => id do |f|
+ output_buffer = fields_for :post, @post, :index => id do |f|
concat f.date_select(:written_on)
end
@@ -1265,7 +1282,7 @@ class DateHelperTest < ActionView::TestCase
@post.written_on = Date.new(2004, 6, 15)
id = nil
- fields_for :post, @post, :index => id do |f|
+ output_buffer = fields_for :post, @post, :index => id do |f|
concat f.date_select(:written_on)
end
@@ -1461,7 +1478,7 @@ class DateHelperTest < ActionView::TestCase
@post = Post.new
@post.written_on = Date.new(2004, 6, 15)
- fields_for :post, @post do |f|
+ output_buffer = fields_for :post, @post do |f|
concat f.date_select(:written_on, {}, :class => 'selector')
end
@@ -1625,7 +1642,7 @@ class DateHelperTest < ActionView::TestCase
@post = Post.new
@post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
- fields_for :post, @post do |f|
+ output_buffer = fields_for :post, @post do |f|
concat f.time_select(:written_on, {}, :class => 'selector')
end
@@ -1713,6 +1730,25 @@ class DateHelperTest < ActionView::TestCase
assert_dom_equal expected, time_select("post", "written_on", :prompt => {:hour => 'Choose hour', :minute => 'Choose minute'})
end
+ def test_time_select_with_disabled_html_option
+ @post = Post.new
+ @post.written_on = Time.local(2004, 6, 15, 15, 16, 35)
+
+ expected = %{<input type="hidden" id="post_written_on_1i" disabled="disabled" name="post[written_on(1i)]" value="2004" />\n}
+ expected << %{<input type="hidden" id="post_written_on_2i" disabled="disabled" name="post[written_on(2i)]" value="6" />\n}
+ expected << %{<input type="hidden" id="post_written_on_3i" disabled="disabled" name="post[written_on(3i)]" value="15" />\n}
+
+ expected << %(<select id="post_written_on_4i" disabled="disabled" name="post[written_on(4i)]">\n)
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
+ expected << "</select>\n"
+ expected << " : "
+ expected << %(<select id="post_written_on_5i" disabled="disabled" name="post[written_on(5i)]">\n)
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
+ expected << "</select>\n"
+
+ assert_dom_equal expected, time_select("post", "written_on", {}, :disabled => true)
+ end
+
def test_datetime_select
@post = Post.new
@post.updated_at = Time.local(2004, 6, 15, 16, 35)
@@ -1780,7 +1816,7 @@ class DateHelperTest < ActionView::TestCase
@post = Post.new
@post.updated_at = Time.local(2004, 6, 15, 16, 35)
- fields_for :post, @post do |f|
+ output_buffer = fields_for :post, @post do |f|
concat f.datetime_select(:updated_at, {}, :class => 'selector')
end
@@ -2016,7 +2052,7 @@ class DateHelperTest < ActionView::TestCase
@post.updated_at = Time.local(2004, 6, 15, 16, 35)
id = 456
- fields_for :post, @post, :index => id do |f|
+ output_buffer = fields_for :post, @post, :index => id do |f|
concat f.datetime_select(:updated_at)
end
@@ -2173,6 +2209,25 @@ class DateHelperTest < ActionView::TestCase
assert_dom_equal expected, datetime_select("post", "updated_at", :discard_year => true, :discard_month => true)
end
+ def test_datetime_select_discard_year_and_month_with_disabled_html_option
+ @post = Post.new
+ @post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
+
+ expected = %{<input type="hidden" id="post_updated_at_1i" disabled="disabled" name="post[updated_at(1i)]" value="2004" />\n}
+ expected << %{<input type="hidden" id="post_updated_at_2i" disabled="disabled" name="post[updated_at(2i)]" value="6" />\n}
+ expected << %{<input type="hidden" id="post_updated_at_3i" disabled="disabled" name="post[updated_at(3i)]" value="15" />\n}
+
+ expected << %{<select id="post_updated_at_4i" disabled="disabled" name="post[updated_at(4i)]">\n}
+ 0.upto(23) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 15}>#{sprintf("%02d", i)}</option>\n) }
+ expected << "</select>\n"
+ expected << " : "
+ expected << %{<select id="post_updated_at_5i" disabled="disabled" name="post[updated_at(5i)]">\n}
+ 0.upto(59) { |i| expected << %(<option value="#{sprintf("%02d", i)}"#{' selected="selected"' if i == 16}>#{sprintf("%02d", i)}</option>\n) }
+ expected << "</select>\n"
+
+ assert_dom_equal expected, datetime_select("post", "updated_at", { :discard_year => true, :discard_month => true }, :disabled => true)
+ end
+
def test_datetime_select_discard_hour
@post = Post.new
@post.updated_at = Time.local(2004, 6, 15, 15, 16, 35)
diff --git a/actionpack/test/template/erb/tag_helper_test.rb b/actionpack/test/template/erb/tag_helper_test.rb
new file mode 100644
index 0000000000..b91539ef0b
--- /dev/null
+++ b/actionpack/test/template/erb/tag_helper_test.rb
@@ -0,0 +1,82 @@
+require "abstract_unit"
+
+module ERBTest
+ class ViewContext
+ mock_controller = Class.new do
+ include SharedTestRoutes.url_helpers
+ end
+
+ include ActionView::Helpers::TagHelper
+ include ActionView::Helpers::JavaScriptHelper
+ include ActionView::Helpers::FormHelper
+
+ attr_accessor :output_buffer
+
+ def protect_against_forgery?() false end
+
+ define_method(:controller) do
+ mock_controller.new
+ end
+ end
+
+ class DeprecatedViewContext < ViewContext
+ include ActionView::Helpers::DeprecatedBlockHelpers
+ end
+
+ module SharedTagHelpers
+ extend ActiveSupport::Testing::Declarative
+
+ def render_content(start, inside)
+ template = block_helper(start, inside)
+ ActionView::Template::Handlers::Erubis.new(template).evaluate(context.new)
+ end
+
+ test "percent equals works for content_tag" do
+ assert_equal "<div>Hello world</div>", render_content("content_tag(:div)", "Hello world")
+ end
+
+ test "percent equals works for javascript_tag" do
+ expected_output = "<script type=\"text/javascript\">\n//<![CDATA[\nalert('Hello')\n//]]>\n</script>"
+ assert_equal expected_output, render_content("javascript_tag", "alert('Hello')")
+ end
+
+ test "percent equals works for javascript_tag with options" do
+ expected_output = "<script id=\"the_js_tag\" type=\"text/javascript\">\n//<![CDATA[\nalert('Hello')\n//]]>\n</script>"
+ assert_equal expected_output, render_content("javascript_tag(:id => 'the_js_tag')", "alert('Hello')")
+ end
+
+ test "percent equals works with form tags" do
+ expected_output = "<form action=\"foo\" method=\"post\">hello</form>"
+ assert_equal expected_output, render_content("form_tag('foo')", "<%= 'hello' %>")
+ end
+
+ test "percent equals works with fieldset tags" do
+ expected_output = "<fieldset><legend>foo</legend>hello</fieldset>"
+ assert_equal expected_output, render_content("field_set_tag('foo')", "<%= 'hello' %>")
+ end
+ end
+
+ class TagHelperTest < ActiveSupport::TestCase
+ def context
+ ViewContext
+ end
+
+ def block_helper(str, rest)
+ "<%= #{str} do %>#{rest}<% end %>"
+ end
+
+ include SharedTagHelpers
+ end
+
+ class DeprecatedTagHelperTest < ActiveSupport::TestCase
+ def context
+ DeprecatedViewContext
+ end
+
+ def block_helper(str, rest)
+ "<% __in_erb_template=true %><% #{str} do %>#{rest}<% end %>"
+ end
+
+ include SharedTagHelpers
+ end
+end \ No newline at end of file
diff --git a/actionpack/test/template/form_helper_test.rb b/actionpack/test/template/form_helper_test.rb
index d143c39c9c..7c5ccfd6ed 100644
--- a/actionpack/test/template/form_helper_test.rb
+++ b/actionpack/test/template/form_helper_test.rb
@@ -4,6 +4,10 @@ require 'controller/fake_models'
class FormHelperTest < ActionView::TestCase
tests ActionView::Helpers::FormHelper
+ def form_for(*)
+ @output_buffer = super
+ end
+
def setup
super
@@ -590,9 +594,9 @@ class FormHelperTest < ActionView::TestCase
def test_nested_fields_for
form_for(:post, @post) do |f|
- f.fields_for(:comment, @post) do |c|
+ concat f.fields_for(:comment, @post) { |c|
concat c.text_field(:title)
- end
+ }
end
expected = "<form action='http://www.example.com' method='post'>" +
@@ -605,9 +609,9 @@ class FormHelperTest < ActionView::TestCase
def test_nested_fields_for_with_nested_collections
form_for('post[]', @post) do |f|
concat f.text_field(:title)
- f.fields_for('comment[]', @comment) do |c|
+ concat f.fields_for('comment[]', @comment) { |c|
concat c.text_field(:name)
- end
+ }
end
expected = "<form action='http://www.example.com' method='post'>" +
@@ -621,9 +625,9 @@ class FormHelperTest < ActionView::TestCase
def test_nested_fields_for_with_index_and_parent_fields
form_for('post', @post, :index => 1) do |c|
concat c.text_field(:title)
- c.fields_for('comment', @comment, :index => 1) do |r|
+ concat c.fields_for('comment', @comment, :index => 1) { |r|
concat r.text_field(:name)
- end
+ }
end
expected = "<form action='http://www.example.com' method='post'>" +
@@ -635,10 +639,10 @@ class FormHelperTest < ActionView::TestCase
end
def test_form_for_with_index_and_nested_fields_for
- form_for(:post, @post, :index => 1) do |f|
- f.fields_for(:comment, @post) do |c|
+ output_buffer = form_for(:post, @post, :index => 1) do |f|
+ concat f.fields_for(:comment, @post) { |c|
concat c.text_field(:title)
- end
+ }
end
expected = "<form action='http://www.example.com' method='post'>" +
@@ -650,9 +654,9 @@ class FormHelperTest < ActionView::TestCase
def test_nested_fields_for_with_index_on_both
form_for(:post, @post, :index => 1) do |f|
- f.fields_for(:comment, @post, :index => 5) do |c|
+ concat f.fields_for(:comment, @post, :index => 5) { |c|
concat c.text_field(:title)
- end
+ }
end
expected = "<form action='http://www.example.com' method='post'>" +
@@ -664,9 +668,9 @@ class FormHelperTest < ActionView::TestCase
def test_nested_fields_for_with_auto_index
form_for("post[]", @post) do |f|
- f.fields_for(:comment, @post) do |c|
+ concat f.fields_for(:comment, @post) { |c|
concat c.text_field(:title)
- end
+ }
end
expected = "<form action='http://www.example.com' method='post'>" +
@@ -678,9 +682,9 @@ class FormHelperTest < ActionView::TestCase
def test_nested_fields_for_with_index_radio_button
form_for(:post, @post) do |f|
- f.fields_for(:comment, @post, :index => 5) do |c|
+ concat f.fields_for(:comment, @post, :index => 5) { |c|
concat c.radio_button(:title, "hello")
- end
+ }
end
expected = "<form action='http://www.example.com' method='post'>" +
@@ -692,9 +696,9 @@ class FormHelperTest < ActionView::TestCase
def test_nested_fields_for_with_auto_index_on_both
form_for("post[]", @post) do |f|
- f.fields_for("comment[]", @post) do |c|
+ concat f.fields_for("comment[]", @post) { |c|
concat c.text_field(:title)
- end
+ }
end
expected = "<form action='http://www.example.com' method='post'>" +
@@ -705,16 +709,16 @@ class FormHelperTest < ActionView::TestCase
end
def test_nested_fields_for_with_index_and_auto_index
- form_for("post[]", @post) do |f|
- f.fields_for(:comment, @post, :index => 5) do |c|
+ output_buffer = form_for("post[]", @post) do |f|
+ concat f.fields_for(:comment, @post, :index => 5) { |c|
concat c.text_field(:title)
- end
+ }
end
- form_for(:post, @post, :index => 1) do |f|
- f.fields_for("comment[]", @post) do |c|
+ output_buffer << form_for(:post, @post, :index => 1) do |f|
+ concat f.fields_for("comment[]", @post) { |c|
concat c.text_field(:title)
- end
+ }
end
expected = "<form action='http://www.example.com' method='post'>" +
@@ -732,9 +736,9 @@ class FormHelperTest < ActionView::TestCase
form_for(:post, @post) do |f|
concat f.text_field(:title)
- f.fields_for(:author) do |af|
+ concat f.fields_for(:author) { |af|
concat af.text_field(:name)
- end
+ }
end
expected = '<form action="http://www.example.com" method="post">' +
@@ -759,9 +763,9 @@ class FormHelperTest < ActionView::TestCase
form_for(:post, @post) do |f|
concat f.text_field(:title)
- f.fields_for(:author) do |af|
+ concat f.fields_for(:author) { |af|
concat af.text_field(:name)
- end
+ }
end
expected = '<form action="http://www.example.com" method="post">' +
@@ -778,10 +782,10 @@ class FormHelperTest < ActionView::TestCase
form_for(:post, @post) do |f|
concat f.text_field(:title)
- f.fields_for(:author) do |af|
+ concat f.fields_for(:author) { |af|
concat af.hidden_field(:id)
concat af.text_field(:name)
- end
+ }
end
expected = '<form action="http://www.example.com" method="post">' +
@@ -799,9 +803,9 @@ class FormHelperTest < ActionView::TestCase
form_for(:post, @post) do |f|
concat f.text_field(:title)
@post.comments.each do |comment|
- f.fields_for(:comments, comment) do |cf|
+ concat f.fields_for(:comments, comment) { |cf|
concat cf.text_field(:name)
- end
+ }
end
end
@@ -822,10 +826,10 @@ class FormHelperTest < ActionView::TestCase
form_for(:post, @post) do |f|
concat f.text_field(:title)
@post.comments.each do |comment|
- f.fields_for(:comments, comment) do |cf|
+ concat f.fields_for(:comments, comment) { |cf|
concat cf.hidden_field(:id)
concat cf.text_field(:name)
- end
+ }
end
end
@@ -846,9 +850,9 @@ class FormHelperTest < ActionView::TestCase
form_for(:post, @post) do |f|
concat f.text_field(:title)
@post.comments.each do |comment|
- f.fields_for(:comments, comment) do |cf|
+ concat f.fields_for(:comments, comment) { |cf|
concat cf.text_field(:name)
- end
+ }
end
end
@@ -867,9 +871,9 @@ class FormHelperTest < ActionView::TestCase
form_for(:post, @post) do |f|
concat f.text_field(:title)
@post.comments.each do |comment|
- f.fields_for(:comments, comment) do |cf|
+ concat f.fields_for(:comments, comment) { |cf|
concat cf.text_field(:name)
- end
+ }
end
end
@@ -903,9 +907,9 @@ class FormHelperTest < ActionView::TestCase
form_for(:post, @post) do |f|
concat f.text_field(:title)
- f.fields_for(:comments, @post.comments) do |cf|
+ concat f.fields_for(:comments, @post.comments) { |cf|
concat cf.text_field(:name)
- end
+ }
end
expected = '<form action="http://www.example.com" method="post">' +
@@ -925,9 +929,9 @@ class FormHelperTest < ActionView::TestCase
form_for(:post, @post) do |f|
concat f.text_field(:title)
- f.fields_for(:comments, comments) do |cf|
+ concat f.fields_for(:comments, comments) { |cf|
concat cf.text_field(:name)
- end
+ }
end
expected = '<form action="http://www.example.com" method="post">' +
@@ -947,10 +951,10 @@ class FormHelperTest < ActionView::TestCase
form_for(:post, @post) do |f|
concat f.text_field(:title)
- f.fields_for(:comments) do |cf|
+ concat f.fields_for(:comments) { |cf|
concat cf.text_field(:name)
yielded_comments << cf.object
- end
+ }
end
expected = '<form action="http://www.example.com" method="post">' +
@@ -968,9 +972,9 @@ class FormHelperTest < ActionView::TestCase
@post.comments = []
form_for(:post, @post) do |f|
- f.fields_for(:comments, Comment.new(321), :child_index => 'abc') do |cf|
+ concat f.fields_for(:comments, Comment.new(321), :child_index => 'abc') { |cf|
concat cf.text_field(:name)
- end
+ }
end
expected = '<form action="http://www.example.com" method="post">' +
@@ -988,24 +992,24 @@ class FormHelperTest < ActionView::TestCase
@post.tags[0].relevances = []
@post.tags[1].relevances = []
form_for(:post, @post) do |f|
- f.fields_for(:comments, @post.comments[0]) do |cf|
+ concat f.fields_for(:comments, @post.comments[0]) { |cf|
concat cf.text_field(:name)
- cf.fields_for(:relevances, CommentRelevance.new(314)) do |crf|
+ concat cf.fields_for(:relevances, CommentRelevance.new(314)) { |crf|
concat crf.text_field(:value)
- end
- end
- f.fields_for(:tags, @post.tags[0]) do |tf|
+ }
+ }
+ concat f.fields_for(:tags, @post.tags[0]) { |tf|
concat tf.text_field(:value)
- tf.fields_for(:relevances, TagRelevance.new(3141)) do |trf|
+ concat tf.fields_for(:relevances, TagRelevance.new(3141)) { |trf|
concat trf.text_field(:value)
- end
- end
- f.fields_for('tags', @post.tags[1]) do |tf|
+ }
+ }
+ concat f.fields_for('tags', @post.tags[1]) { |tf|
concat tf.text_field(:value)
- tf.fields_for(:relevances, TagRelevance.new(31415)) do |trf|
+ concat tf.fields_for(:relevances, TagRelevance.new(31415)) { |trf|
concat trf.text_field(:value)
- end
- end
+ }
+ }
end
expected = '<form action="http://www.example.com" method="post">' +
@@ -1027,7 +1031,7 @@ class FormHelperTest < ActionView::TestCase
end
def test_fields_for
- fields_for(:post, @post) do |f|
+ output_buffer = fields_for(:post, @post) do |f|
concat f.text_field(:title)
concat f.text_area(:body)
concat f.check_box(:secret)
@@ -1043,7 +1047,7 @@ class FormHelperTest < ActionView::TestCase
end
def test_fields_for_with_index
- fields_for("post[]", @post) do |f|
+ output_buffer = fields_for("post[]", @post) do |f|
concat f.text_field(:title)
concat f.text_area(:body)
concat f.check_box(:secret)
@@ -1059,7 +1063,7 @@ class FormHelperTest < ActionView::TestCase
end
def test_fields_for_with_nil_index_option_override
- fields_for("post[]", @post, :index => nil) do |f|
+ output_buffer = fields_for("post[]", @post, :index => nil) do |f|
concat f.text_field(:title)
concat f.text_area(:body)
concat f.check_box(:secret)
@@ -1075,7 +1079,7 @@ class FormHelperTest < ActionView::TestCase
end
def test_fields_for_with_index_option_override
- fields_for("post[]", @post, :index => "abc") do |f|
+ output_buffer = fields_for("post[]", @post, :index => "abc") do |f|
concat f.text_field(:title)
concat f.text_area(:body)
concat f.check_box(:secret)
@@ -1091,7 +1095,7 @@ class FormHelperTest < ActionView::TestCase
end
def test_fields_for_without_object
- fields_for(:post) do |f|
+ output_buffer = fields_for(:post) do |f|
concat f.text_field(:title)
concat f.text_area(:body)
concat f.check_box(:secret)
@@ -1107,7 +1111,7 @@ class FormHelperTest < ActionView::TestCase
end
def test_fields_for_with_only_object
- fields_for(@post) do |f|
+ output_buffer = fields_for(@post) do |f|
concat f.text_field(:title)
concat f.text_area(:body)
concat f.check_box(:secret)
@@ -1123,7 +1127,7 @@ class FormHelperTest < ActionView::TestCase
end
def test_fields_for_object_with_bracketed_name
- fields_for("author[post]", @post) do |f|
+ output_buffer = fields_for("author[post]", @post) do |f|
concat f.label(:title)
concat f.text_field(:title)
end
@@ -1134,7 +1138,7 @@ class FormHelperTest < ActionView::TestCase
end
def test_fields_for_object_with_bracketed_name_and_index
- fields_for("author[post]", @post, :index => 1) do |f|
+ output_buffer = fields_for("author[post]", @post, :index => 1) do |f|
concat f.label(:title)
concat f.text_field(:title)
end
@@ -1153,9 +1157,9 @@ class FormHelperTest < ActionView::TestCase
concat post_form.text_field(:title)
concat post_form.text_area(:body)
- fields_for(:parent_post, @post) do |parent_fields|
+ concat fields_for(:parent_post, @post) { |parent_fields|
concat parent_fields.check_box(:secret)
- end
+ }
end
expected =
@@ -1174,9 +1178,9 @@ class FormHelperTest < ActionView::TestCase
concat post_form.text_field(:title)
concat post_form.text_area(:body)
- post_form.fields_for(@comment) do |comment_fields|
+ concat post_form.fields_for(@comment) { |comment_fields|
concat comment_fields.text_field(:name)
- end
+ }
end
expected =
@@ -1273,7 +1277,7 @@ class FormHelperTest < ActionView::TestCase
end
def test_fields_for_with_labelled_builder
- fields_for(:post, @post, :builder => LabelledFormBuilder) do |f|
+ output_buffer = fields_for(:post, @post, :builder => LabelledFormBuilder) do |f|
concat f.text_field(:title)
concat f.text_area(:body)
concat f.check_box(:secret)
diff --git a/actionpack/test/template/form_options_helper_test.rb b/actionpack/test/template/form_options_helper_test.rb
index aa40e46aa8..5799e3db53 100644
--- a/actionpack/test/template/form_options_helper_test.rb
+++ b/actionpack/test/template/form_options_helper_test.rb
@@ -293,7 +293,7 @@ class FormOptionsHelperTest < ActionView::TestCase
@post = Post.new
@post.category = "<mus>"
- fields_for :post, @post do |f|
+ output_buffer = fields_for :post, @post do |f|
concat f.select(:category, %w( abe <mus> hest))
end
@@ -307,7 +307,7 @@ class FormOptionsHelperTest < ActionView::TestCase
@post = Post.new
@post.category = "<mus>"
- fields_for :post, @post, :index => 108 do |f|
+ output_buffer = fields_for :post, @post, :index => 108 do |f|
concat f.select(:category, %w( abe <mus> hest))
end
@@ -322,7 +322,7 @@ class FormOptionsHelperTest < ActionView::TestCase
@post.category = "<mus>"
def @post.to_param; 108; end
- fields_for "post[]", @post do |f|
+ output_buffer = fields_for "post[]", @post do |f|
concat f.select(:category, %w( abe <mus> hest))
end
@@ -336,7 +336,7 @@ class FormOptionsHelperTest < ActionView::TestCase
@post = Post.new
options = "<option value=\"abe\">abe</option><option value=\"mus\">mus</option><option value=\"hest\">hest</option>"
- fields_for :post, @post do |f|
+ output_buffer = fields_for :post, @post do |f|
concat f.select(:category, options, :prompt => 'The prompt')
end
@@ -462,7 +462,7 @@ class FormOptionsHelperTest < ActionView::TestCase
@post = Post.new
@post.author_name = "Babe"
- fields_for :post, @post do |f|
+ output_buffer = fields_for :post, @post do |f|
concat f.collection_select(:author_name, dummy_posts, :author_name, :author_name)
end
@@ -476,7 +476,7 @@ class FormOptionsHelperTest < ActionView::TestCase
@post = Post.new
@post.author_name = "Babe"
- fields_for :post, @post, :index => 815 do |f|
+ output_buffer = fields_for :post, @post, :index => 815 do |f|
concat f.collection_select(:author_name, dummy_posts, :author_name, :author_name)
end
@@ -491,7 +491,7 @@ class FormOptionsHelperTest < ActionView::TestCase
@post.author_name = "Babe"
def @post.to_param; 815; end
- fields_for "post[]", @post do |f|
+ output_buffer = fields_for "post[]", @post do |f|
concat f.collection_select(:author_name, dummy_posts, :author_name, :author_name)
end
@@ -570,7 +570,7 @@ class FormOptionsHelperTest < ActionView::TestCase
def test_time_zone_select_under_fields_for
@firm = Firm.new("D")
- fields_for :firm, @firm do |f|
+ output_buffer = fields_for :firm, @firm do |f|
concat f.time_zone_select(:time_zone)
end
@@ -589,7 +589,7 @@ class FormOptionsHelperTest < ActionView::TestCase
def test_time_zone_select_under_fields_for_with_index
@firm = Firm.new("D")
- fields_for :firm, @firm, :index => 305 do |f|
+ output_buffer = fields_for :firm, @firm, :index => 305 do |f|
concat f.time_zone_select(:time_zone)
end
@@ -609,7 +609,7 @@ class FormOptionsHelperTest < ActionView::TestCase
@firm = Firm.new("D")
def @firm.to_param; 305; end
- fields_for "firm[]", @firm do |f|
+ output_buffer = fields_for "firm[]", @firm do |f|
concat f.time_zone_select(:time_zone)
end
@@ -787,7 +787,7 @@ class FormOptionsHelperTest < ActionView::TestCase
@post = Post.new
@post.origin = 'dk'
- fields_for :post, @post do |f|
+ output_buffer = fields_for :post, @post do |f|
concat f.grouped_collection_select("origin", @continents, :countries, :continent_name, :country_id, :country_name)
end
diff --git a/actionpack/test/template/form_tag_helper_test.rb b/actionpack/test/template/form_tag_helper_test.rb
index 0ceec1afbf..868a35c476 100644
--- a/actionpack/test/template/form_tag_helper_test.rb
+++ b/actionpack/test/template/form_tag_helper_test.rb
@@ -3,17 +3,16 @@ require 'abstract_unit'
class FormTagHelperTest < ActionView::TestCase
tests ActionView::Helpers::FormTagHelper
- include ActiveSupport::Configurable
- DEFAULT_CONFIG = ActionView::DEFAULT_CONFIG
+ # include ActiveSupport::Configurable
+ # DEFAULT_CONFIG = ActionView::DEFAULT_CONFIG
def setup
super
- @controller = Class.new do
+ @controller = Class.new(BasicController) do
def url_for(options)
"http://www.example.com"
end
- end
- @controller = @controller.new
+ end.new
end
VALID_HTML_ID = /^[A-Za-z][-_:.A-Za-z0-9]*$/ # see http://www.w3.org/TR/html4/types.html#type-name
@@ -60,16 +59,14 @@ class FormTagHelperTest < ActionView::TestCase
end
def test_form_tag_with_block_in_erb
- __in_erb_template = ''
- form_tag("http://example.com") { concat "Hello world!" }
+ output_buffer = form_tag("http://example.com") { concat "Hello world!" }
expected = %(<form action="http://example.com" method="post">Hello world!</form>)
assert_dom_equal expected, output_buffer
end
def test_form_tag_with_block_and_method_in_erb
- __in_erb_template = ''
- form_tag("http://example.com", :method => :put) { concat "Hello world!" }
+ output_buffer = form_tag("http://example.com", :method => :put) { concat "Hello world!" }
expected = %(<form action="http://example.com" method="post"><div style='margin:0;padding:0;display:inline'><input type="hidden" name="_method" value="put" /></div>Hello world!</form>)
assert_dom_equal expected, output_buffer
@@ -333,26 +330,22 @@ class FormTagHelperTest < ActionView::TestCase
end
def test_field_set_tag_in_erb
- __in_erb_template = ''
- field_set_tag("Your details") { concat "Hello world!" }
+ output_buffer = field_set_tag("Your details") { concat "Hello world!" }
expected = %(<fieldset><legend>Your details</legend>Hello world!</fieldset>)
assert_dom_equal expected, output_buffer
- self.output_buffer = ''.html_safe
- field_set_tag { concat "Hello world!" }
+ output_buffer = field_set_tag { concat "Hello world!" }
expected = %(<fieldset>Hello world!</fieldset>)
assert_dom_equal expected, output_buffer
- self.output_buffer = ''.html_safe
- field_set_tag('') { concat "Hello world!" }
+ output_buffer = field_set_tag('') { concat "Hello world!" }
expected = %(<fieldset>Hello world!</fieldset>)
assert_dom_equal expected, output_buffer
- self.output_buffer = ''.html_safe
- field_set_tag('', :class => 'format') { concat "Hello world!" }
+ output_buffer = field_set_tag('', :class => 'format') { concat "Hello world!" }
expected = %(<fieldset class="format">Hello world!</fieldset>)
assert_dom_equal expected, output_buffer
diff --git a/actionpack/test/template/javascript_helper_test.rb b/actionpack/test/template/javascript_helper_test.rb
index 368a9c2514..f49b763881 100644
--- a/actionpack/test/template/javascript_helper_test.rb
+++ b/actionpack/test/template/javascript_helper_test.rb
@@ -7,8 +7,8 @@ class JavaScriptHelperTest < ActionView::TestCase
attr_accessor :formats, :output_buffer
- def reset_formats(format)
- @format = format
+ def update_details(details)
+ @details = details
yield if block_given?
end
@@ -74,18 +74,6 @@ class JavaScriptHelperTest < ActionView::TestCase
javascript_tag("alert('hello')", :id => "the_js_tag")
end
- def test_javascript_tag_with_block_in_erb
- __in_erb_template = ''
- javascript_tag { concat "alert('hello')" }
- assert_dom_equal "<script type=\"text/javascript\">\n//<![CDATA[\nalert('hello')\n//]]>\n</script>", output_buffer
- end
-
- def test_javascript_tag_with_block_and_options_in_erb
- __in_erb_template = ''
- javascript_tag(:id => "the_js_tag") { concat "alert('hello')" }
- assert_dom_equal "<script id=\"the_js_tag\" type=\"text/javascript\">\n//<![CDATA[\nalert('hello')\n//]]>\n</script>", output_buffer
- end
-
def test_javascript_cdata_section
assert_dom_equal "\n//<![CDATA[\nalert('hello')\n//]]>\n", javascript_cdata_section("alert('hello')")
end
diff --git a/actionpack/test/template/prototype_helper_test.rb b/actionpack/test/template/prototype_helper_test.rb
index 6811d3aaf3..619293dc43 100644
--- a/actionpack/test/template/prototype_helper_test.rb
+++ b/actionpack/test/template/prototype_helper_test.rb
@@ -39,8 +39,8 @@ class Author::Nested < Author; end
class PrototypeHelperBaseTest < ActionView::TestCase
attr_accessor :formats, :output_buffer
- def reset_formats(format)
- @format = format
+ def update_details(details)
+ @details = details
yield if block_given?
end
diff --git a/actionpack/test/template/render_test.rb b/actionpack/test/template/render_test.rb
index 338ada8b0e..cea8ab1bce 100644
--- a/actionpack/test/template/render_test.rb
+++ b/actionpack/test/template/render_test.rb
@@ -33,17 +33,17 @@ module RenderTestCases
end
def test_render_file_with_localization
- old_locale, I18n.locale = I18n.locale, :da
+ old_locale, @view.locale = @view.locale, :da
assert_equal "Hey verden", @view.render(:file => "test/hello_world")
ensure
- I18n.locale = old_locale
+ @view.locale = old_locale
end
def test_render_file_with_dashed_locale
- old_locale, I18n.locale = I18n.locale, :"pt-BR"
+ old_locale, @view.locale = @view.locale, :"pt-BR"
assert_equal "Ola mundo", @view.render(:file => "test/hello_world")
ensure
- I18n.locale = old_locale
+ @view.locale = old_locale
end
def test_render_file_at_top_level
@@ -233,6 +233,11 @@ module RenderTestCases
@view.render(:file => "test/nested_layout.erb", :layout => "layouts/yield")
end
+ def test_render_with_file_in_layout
+ assert_equal %(\n<title>title</title>\n\n),
+ @view.render(:file => "test/layout_render_file.erb")
+ end
+
if '1.9'.respond_to?(:force_encoding)
def test_render_utf8_template_with_magic_comment
with_external_encoding Encoding::ASCII_8BIT do
@@ -265,7 +270,7 @@ class CachedViewRenderTest < ActiveSupport::TestCase
# Ensure view path cache is primed
def setup
view_paths = ActionController::Base.view_paths
- assert_equal ActionView::FileSystemResolverWithFallback, view_paths.first.class
+ assert_equal ActionView::FileSystemResolver, view_paths.first.class
setup_view(view_paths)
end
end
@@ -276,9 +281,9 @@ class LazyViewRenderTest < ActiveSupport::TestCase
# Test the same thing as above, but make sure the view path
# is not eager loaded
def setup
- path = ActionView::FileSystemResolverWithFallback.new(FIXTURE_LOAD_PATH)
+ path = ActionView::FileSystemResolver.new(FIXTURE_LOAD_PATH)
view_paths = ActionView::Base.process_view_paths(path)
- assert_equal ActionView::FileSystemResolverWithFallback, view_paths.first.class
+ assert_equal ActionView::FileSystemResolver.new(FIXTURE_LOAD_PATH), view_paths.first
setup_view(view_paths)
end
end
diff --git a/actionpack/test/template/tag_helper_test.rb b/actionpack/test/template/tag_helper_test.rb
index 3858ffde40..256d9bdcde 100644
--- a/actionpack/test/template/tag_helper_test.rb
+++ b/actionpack/test/template/tag_helper_test.rb
@@ -42,15 +42,13 @@ class TagHelperTest < ActionView::TestCase
end
def test_content_tag_with_block_in_erb
- __in_erb_template = ''
- content_tag(:div) { concat "Hello world!" }
- assert_dom_equal "<div>Hello world!</div>", output_buffer
+ buffer = content_tag(:div) { concat "Hello world!" }
+ assert_dom_equal "<div>Hello world!</div>", buffer
end
def test_content_tag_with_block_and_options_in_erb
- __in_erb_template = ''
- content_tag(:div, :class => "green") { concat "Hello world!" }
- assert_dom_equal %(<div class="green">Hello world!</div>), output_buffer
+ buffer = content_tag(:div, :class => "green") { concat "Hello world!" }
+ assert_dom_equal %(<div class="green">Hello world!</div>), buffer
end
def test_content_tag_with_block_and_options_out_of_erb
@@ -68,10 +66,10 @@ class TagHelperTest < ActionView::TestCase
output_buffer
end
+ # TAG TODO: Move this into a real template
def test_content_tag_nested_in_content_tag_in_erb
- __in_erb_template = true
- content_tag("p") { concat content_tag("b", "Hello") }
- assert_equal '<p><b>Hello</b></p>', output_buffer
+ buffer = content_tag("p") { concat content_tag("b", "Hello") }
+ assert_equal '<p><b>Hello</b></p>', buffer
end
def test_content_tag_with_escaped_array_class
diff --git a/actionpack/test/template/test_case_test.rb b/actionpack/test/template/test_case_test.rb
index 12807baaa7..195a6ea3ae 100644
--- a/actionpack/test/template/test_case_test.rb
+++ b/actionpack/test/template/test_case_test.rb
@@ -89,16 +89,23 @@ module ActionView
end
test "helper class that is being tested is always included in view instance" do
- self.class.helper_class.module_eval do
- def render_from_helper
- render :partial => 'customer', :collection => @customers
+ # This ensure is a hidious hack to deal with these tests bleeding
+ # methods between eachother
+ begin
+ self.class.helper_class.module_eval do
+ def render_from_helper
+ render :partial => 'customer', :collection => @customers
+ end
end
- end
- TestController.stubs(:controller_path).returns('test')
+ TestController.stubs(:controller_path).returns('test')
- @customers = [stub(:name => 'Eloy'), stub(:name => 'Manfred')]
- assert_match /Hello: EloyHello: Manfred/, render(:partial => 'test/from_helper')
+ @customers = [stub(:name => 'Eloy'), stub(:name => 'Manfred')]
+ assert_match /Hello: EloyHello: Manfred/, render(:partial => 'test/from_helper')
+
+ ensure
+ self.class.helper_class.send(:remove_method, :render_from_helper)
+ end
end
test "no additional helpers should shared across test cases" do
@@ -147,10 +154,16 @@ module ActionView
end
test "is able to make methods available to the view" do
- _helpers.module_eval do
- def render_from_helper; from_test_case end
+ # This ensure is a hidious hack to deal with these tests bleeding
+ # methods between eachother
+ begin
+ _helpers.module_eval do
+ def render_from_helper; from_test_case end
+ end
+ assert_equal 'Word!', render(:partial => 'test/from_helper')
+ ensure
+ _helpers.send(:remove_method, :render_from_helper)
end
- assert_equal 'Word!', render(:partial => 'test/from_helper')
end
def from_test_case; 'Word!'; end
diff --git a/actionpack/test/template/url_helper_test.rb b/actionpack/test/template/url_helper_test.rb
index b047466aaf..165cb655da 100644
--- a/actionpack/test/template/url_helper_test.rb
+++ b/actionpack/test/template/url_helper_test.rb
@@ -1,22 +1,21 @@
# encoding: utf-8
require 'abstract_unit'
+require 'active_support/ordered_options'
require 'controller/fake_controllers'
-RequestMock = Struct.new("Request", :request_uri, :protocol, :host_with_port, :env)
-
class UrlHelperTest < ActionView::TestCase
- include ActiveSupport::Configurable
- DEFAULT_CONFIG = ActionView::DEFAULT_CONFIG
def setup
super
- @controller = Class.new do
- attr_accessor :url, :request
+ @controller = Class.new(BasicController) do
+ attr_accessor :url
def url_for(options)
url
end
end
+
@controller = @controller.new
+ @request = @controller.request = ActionDispatch::TestRequest.new
@controller.url = "http://www.example.com"
end
@@ -38,12 +37,13 @@ class UrlHelperTest < ActionView::TestCase
end
def test_url_for_with_back
- @controller.request = RequestMock.new("http://www.example.com/weblog/show", nil, nil, {'HTTP_REFERER' => 'http://www.example.com/referer'})
+ @request.env['HTTP_REFERER'] = 'http://www.example.com/referer'
assert_equal 'http://www.example.com/referer', url_for(:back)
end
def test_url_for_with_back_and_no_referer
- @controller.request = RequestMock.new("http://www.example.com/weblog/show", nil, nil, {})
+ @request.env['HOST_NAME'] = 'www.example.com'
+ @request.env['PATH_INFO'] = '/weblog/show'
assert_equal 'javascript:history.back()', url_for(:back)
end
@@ -122,7 +122,6 @@ class UrlHelperTest < ActionView::TestCase
url = {:controller => 'weblog', :action => 'show'}
@controller = ActionController::Base.new
@controller.request = ActionController::TestRequest.new
- @controller.url = ActionController::UrlRewriter.new(@controller.request, url)
assert_dom_equal(%q{<a href="/weblog/show">Test Link</a>}, link_to('Test Link', url))
end
@@ -131,7 +130,6 @@ class UrlHelperTest < ActionView::TestCase
url = {:controller => 'weblog', :action => 'show', :host => 'www.example.com'}
@controller = ActionController::Base.new
@controller.request = ActionController::TestRequest.new
- @controller.url = ActionController::UrlRewriter.new(@controller.request, url)
assert_dom_equal(%q{<a href="http://www.example.com/weblog/show">Test Link</a>}, link_to('Test Link', url))
end
@@ -144,22 +142,28 @@ class UrlHelperTest < ActionView::TestCase
end
def test_link_tag_with_back
- @controller.request = RequestMock.new("http://www.example.com/weblog/show", nil, nil, {'HTTP_REFERER' => 'http://www.example.com/referer'})
+ @request.env['HOST_NAME'] = 'www.example.com'
+ @request.env['PATH_INFO'] = '/weblog/show'
+ @request.env['HTTP_REFERER'] = 'http://www.example.com/referer'
assert_dom_equal "<a href=\"http://www.example.com/referer\">go back</a>", link_to('go back', :back)
end
def test_link_tag_with_back_and_no_referer
- @controller.request = RequestMock.new("http://www.example.com/weblog/show", nil, nil, {})
+ @request.env['HOST_NAME'] = 'www.example.com'
+ @request.env['PATH_INFO'] = '/weblog/show'
assert_dom_equal "<a href=\"javascript:history.back()\">go back</a>", link_to('go back', :back)
end
def test_link_tag_with_back
- @controller.request = RequestMock.new("http://www.example.com/weblog/show", nil, nil, {'HTTP_REFERER' => 'http://www.example.com/referer'})
+ @request.env['HOST_NAME'] = 'www.example.com'
+ @request.env['PATH_INFO'] = '/weblog/show'
+ @request.env['HTTP_REFERER'] = 'http://www.example.com/referer'
assert_dom_equal "<a href=\"http://www.example.com/referer\">go back</a>", link_to('go back', :back)
end
def test_link_tag_with_back_and_no_referer
- @controller.request = RequestMock.new("http://www.example.com/weblog/show", nil, nil, {})
+ @request.env['HOST_NAME'] = 'www.example.com'
+ @request.env['PATH_INFO'] = '/weblog/show'
assert_dom_equal "<a href=\"javascript:history.back()\">go back</a>", link_to('go back', :back)
end
@@ -263,55 +267,60 @@ class UrlHelperTest < ActionView::TestCase
end
def test_current_page_with_simple_url
- @controller.request = RequestMock.new("http://www.example.com/weblog/show")
+ @request.env['HTTP_HOST'] = 'www.example.com'
+ @request.env['PATH_INFO'] = '/weblog/show'
@controller.url = "http://www.example.com/weblog/show"
assert current_page?({ :action => "show", :controller => "weblog" })
assert current_page?("http://www.example.com/weblog/show")
end
def test_current_page_ignoring_params
- @controller.request = RequestMock.new("http://www.example.com/weblog/show?order=desc&page=1")
+ @request.env['HTTP_HOST'] = 'www.example.com'
+ @request.env['PATH_INFO'] = '/weblog/show'
+ @request.env['QUERY_STRING'] = 'order=desc&page=1'
@controller.url = "http://www.example.com/weblog/show?order=desc&page=1"
assert current_page?({ :action => "show", :controller => "weblog" })
assert current_page?("http://www.example.com/weblog/show")
end
def test_current_page_with_params_that_match
- @controller.request = RequestMock.new("http://www.example.com/weblog/show?order=desc&page=1")
+ @request.env['HTTP_HOST'] = 'www.example.com'
+ @request.env['PATH_INFO'] = '/weblog/show'
+ @request.env['QUERY_STRING'] = 'order=desc&page=1'
@controller.url = "http://www.example.com/weblog/show?order=desc&page=1"
assert current_page?({ :action => "show", :controller => "weblog", :order => "desc", :page => "1" })
assert current_page?("http://www.example.com/weblog/show?order=desc&amp;page=1")
end
def test_link_unless_current
- @controller.request = RequestMock.new("http://www.example.com/weblog/show")
+ @request.env['HTTP_HOST'] = 'www.example.com'
+ @request.env['PATH_INFO'] = '/weblog/show'
@controller.url = "http://www.example.com/weblog/show"
assert_equal "Showing", link_to_unless_current("Showing", { :action => "show", :controller => "weblog" })
assert_equal "Showing", link_to_unless_current("Showing", "http://www.example.com/weblog/show")
- @controller.request = RequestMock.new("http://www.example.com/weblog/show?order=desc")
+ @request.env['QUERY_STRING'] = 'order=desc'
@controller.url = "http://www.example.com/weblog/show"
assert_equal "Showing", link_to_unless_current("Showing", { :action => "show", :controller => "weblog" })
assert_equal "Showing", link_to_unless_current("Showing", "http://www.example.com/weblog/show")
- @controller.request = RequestMock.new("http://www.example.com/weblog/show?order=desc&page=1")
+ @request.env['QUERY_STRING'] = 'order=desc&page=1'
@controller.url = "http://www.example.com/weblog/show?order=desc&page=1"
assert_equal "Showing", link_to_unless_current("Showing", { :action => "show", :controller => "weblog", :order=>'desc', :page=>'1' })
assert_equal "Showing", link_to_unless_current("Showing", "http://www.example.com/weblog/show?order=desc&page=1")
assert_equal "Showing", link_to_unless_current("Showing", "http://www.example.com/weblog/show?order=desc&page=1")
- @controller.request = RequestMock.new("http://www.example.com/weblog/show?order=desc")
+ @request.env['QUERY_STRING'] = 'order=desc'
@controller.url = "http://www.example.com/weblog/show?order=asc"
assert_equal "<a href=\"http://www.example.com/weblog/show?order=asc\">Showing</a>", link_to_unless_current("Showing", { :action => "show", :controller => "weblog" })
assert_equal "<a href=\"http://www.example.com/weblog/show?order=asc\">Showing</a>", link_to_unless_current("Showing", "http://www.example.com/weblog/show?order=asc")
- @controller.request = RequestMock.new("http://www.example.com/weblog/show?order=desc&page=1")
+ @request.env['QUERY_STRING'] = 'order=desc&page=1'
@controller.url = "http://www.example.com/weblog/show?order=desc&page=2"
assert_equal "<a href=\"http://www.example.com/weblog/show?order=desc&page=2\">Showing</a>", link_to_unless_current("Showing", { :action => "show", :controller => "weblog" })
assert_equal "<a href=\"http://www.example.com/weblog/show?order=desc&amp;page=2\">Showing</a>", link_to_unless_current("Showing", "http://www.example.com/weblog/show?order=desc&page=2")
-
- @controller.request = RequestMock.new("http://www.example.com/weblog/show")
+ @request.env['QUERY_STRING'] = ''
@controller.url = "http://www.example.com/weblog/list"
assert_equal "<a href=\"http://www.example.com/weblog/list\">Listing</a>",
link_to_unless_current("Listing", :action => "list", :controller => "weblog")
@@ -426,7 +435,7 @@ class UrlHelperControllerTest < ActionController::TestCase
end
with_url_helper_routing do
- assert_deprecated { get :show_named_route, :kind => 'url' }
+ get :show_named_route, :kind => 'url'
assert_equal 'http://testtwo.host/url_helper_controller_test/url_helper/show_named_route', @response.body
end
end
@@ -464,8 +473,6 @@ end
class LinkToUnlessCurrentWithControllerTest < ActionController::TestCase
def setup
super
- @request = ActionController::TestRequest.new
- @response = ActionController::TestResponse.new
@controller = TasksController.new
end
@@ -565,7 +572,6 @@ end
class PolymorphicControllerTest < ActionController::TestCase
def setup
super
- @request = ActionController::TestRequest.new
@response = ActionController::TestResponse.new
end