aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2005-04-07 06:22:19 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2005-04-07 06:22:19 +0000
commit4ab40059b7925f35cddb0f76dba27ea6cd018de7 (patch)
tree691519981b09dffb76e950c4eb46d5799a73a1ff
parentbd9a81ca2d34562a140dfe9a6cfecf969a01042c (diff)
downloadrails-4ab40059b7925f35cddb0f76dba27ea6cd018de7.tar.gz
rails-4ab40059b7925f35cddb0f76dba27ea6cd018de7.tar.bz2
rails-4ab40059b7925f35cddb0f76dba27ea6cd018de7.zip
Added simulation of @request.request_uri in functional tests #1038 [Jamis Buck]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1103 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
-rw-r--r--actionpack/CHANGELOG2
-rw-r--r--actionpack/lib/action_controller/test_process.rb9
-rw-r--r--actionpack/test/controller/test_test.rb25
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