From 7f012d09cf70873ab4c6c8825adcbab7c7ae6a30 Mon Sep 17 00:00:00 2001 From: Damien Mathieu <42@dmathieu.com> Date: Wed, 27 Jan 2010 14:14:56 +0100 Subject: [PATCH] [Patch] Adding global parameters to functional tests --- actionpack/lib/action_controller/test_case.rb | 5 +++ actionpack/test/controller/test_test.rb | 37 +++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 0 deletions(-) diff --git a/actionpack/lib/action_controller/test_case.rb b/actionpack/lib/action_controller/test_case.rb index 14557ca..8769b1f 100644 --- a/actionpack/lib/action_controller/test_case.rb +++ b/actionpack/lib/action_controller/test_case.rb @@ -3,11 +3,14 @@ require 'action_view/test_case' module ActionController class TestRequest < ActionDispatch::TestRequest #:nodoc: + attr_accessor :global_parameters + def initialize(env = {}) super self.session = TestSession.new self.session_options = TestSession::DEFAULT_OPTIONS.merge(:id => ActiveSupport::SecureRandom.hex(16)) + self.global_parameters = {} end class Result < ::Array #:nodoc: @@ -18,6 +21,7 @@ module ActionController end def assign_parameters(controller_path, action, parameters = {}) + parameters = global_parameters.merge(parameters) parameters = parameters.symbolize_keys.merge(:controller => controller_path, :action => action) extra_keys = ActionController::Routing::Routes.extra_keys(parameters) non_path_parameters = get? ? query_parameters : request_parameters @@ -237,6 +241,7 @@ module ActionController parameters ||= {} @request.assign_parameters(@controller.class.name.underscore.sub(/_controller$/, ''), action.to_s, parameters) + @request.global_parameters = {} @request.session = ActionController::TestSession.new(session) unless session.nil? @request.session["flash"] = @request.flash.update(flash || {}) diff --git a/actionpack/test/controller/test_test.rb b/actionpack/test/controller/test_test.rb index 0f074b3..c395c37 100644 --- a/actionpack/test/controller/test_test.rb +++ b/actionpack/test/controller/test_test.rb @@ -437,6 +437,43 @@ XML def test_assert_routing_in_module assert_routing 'admin/user', :controller => 'admin/user', :action => 'index' end + + def test_with_global_parameters + @request.global_parameters[:test] = 'foo' + process :test_params + parsed_params = eval(@response.body) + assert_equal( + {'controller' => 'test_test/test', 'action' => 'test_params', 'test' => 'foo'}, + parsed_params + ) + end + + def test_merge_global_parameters + @request.global_parameters[:test] = 'foo' + process :test_params, :test => 'bar' + parsed_params = eval(@response.body) + assert_equal( + {'controller' => 'test_test/test', 'action' => 'test_params', 'test' => 'bar'}, + parsed_params + ) + end + + def test_global_parameters_reseted + @request.global_parameters[:test] = 'foo' + process :test_params + parsed_params = eval(@response.body) + assert_equal( + {'controller' => 'test_test/test', 'action' => 'test_params', 'test' => 'foo'}, + parsed_params + ) + + process :test_params + parsed_params = eval(@response.body) + assert_equal( + {'controller' => 'test_test/test', 'action' => 'test_params'}, + parsed_params + ) + end def test_params_passing get :test_params, :page => {:name => "Page name", :month => '4', :year => '2004', :day => '6'} -- 1.6.6.rc4