diff options
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/CHANGELOG | 2 | ||||
-rw-r--r-- | actionpack/lib/action_controller/test_process.rb | 9 | ||||
-rw-r--r-- | actionpack/test/controller/test_test.rb | 25 |
3 files changed, 36 insertions, 0 deletions
diff --git a/actionpack/CHANGELOG b/actionpack/CHANGELOG index a091498904..868a51534a 100644 --- a/actionpack/CHANGELOG +++ b/actionpack/CHANGELOG @@ -1,5 +1,7 @@ *SVN* +* Added simulation of @request.request_uri in functional tests #1038 [Jamis Buck] + * Fixed autolinking to work better in more cases #1013 [Jamis Buck] * Added the possible of using symbols in form helpers that relate to instance variables like text_field :account, :name in addition to text_field "account", "name"' diff --git a/actionpack/lib/action_controller/test_process.rb b/actionpack/lib/action_controller/test_process.rb index 6a7fe64a32..3aa9ffe055 100644 --- a/actionpack/lib/action_controller/test_process.rb +++ b/actionpack/lib/action_controller/test_process.rb @@ -258,6 +258,7 @@ module Test @request.parameters.update(parameters) unless parameters.nil? @request.session = ActionController::TestSession.new(session) unless session.nil? @request.session["flash"] = ActionController::Flash::FlashHash.new.update(flash) if flash + build_request_uri(action, parameters) @controller.process(@request, @response) end @@ -282,6 +283,14 @@ module Test def assigns(name) @response.template.assigns[name.to_s] end + + def build_request_uri(action, parameters) + return if @request.env['REQUEST_URI'] + url = ActionController::UrlRewriter.new(@request, parameters) + @request.set_REQUEST_URI( + url.rewrite(@controller.send(:rewrite_options, + (parameters||{}).update(:only_path => true, :action=>action)))) + end end end end diff --git a/actionpack/test/controller/test_test.rb b/actionpack/test/controller/test_test.rb index 28d64c6043..f92e9dae48 100644 --- a/actionpack/test/controller/test_test.rb +++ b/actionpack/test/controller/test_test.rb @@ -5,12 +5,21 @@ class TestTest < Test::Unit::TestCase def set_flash flash["test"] = ">#{flash["test"]}<" end + + def test_uri + render_text @request.request_uri + end end def setup @controller = TestController.new @request = ActionController::TestRequest.new @response = ActionController::TestResponse.new + ActionController::Routing::Routes.reload + end + + def teardown + ActionController::Routing::Routes.reload end def test_process_without_flash @@ -22,4 +31,20 @@ class TestTest < Test::Unit::TestCase process :set_flash, nil, nil, { "test" => "value" } assert_flash_equal ">value<", "test" end + + def test_process_with_request_uri_with_no_params + process :test_uri + assert_equal @response.body, "/test_test/test/test_uri" + end + + def test_process_with_request_uri_with_params + process :test_uri, :id => 7 + assert_equal @response.body, "/test_test/test/test_uri/7" + end + + def test_process_with_request_uri_with_params_with_explicit_uri + @request.set_REQUEST_URI "/explicit/uri" + process :test_uri, :id => 7 + assert_equal @response.body, "/explicit/uri" + end end |