diff --git a/lib/will_paginate/view_helpers.rb b/lib/will_paginate/view_helpers.rb index 5f7ae4282..ea4604820 100644 --- a/lib/will_paginate/view_helpers.rb +++ b/lib/will_paginate/view_helpers.rb @@ -321,8 +321,7 @@ def url_for(page) stringified_merge @url_params, @options[:params] if @options[:params] if complex = param_name.index(/[^\w-]/) - page_param = (defined?(CGIMethods) ? CGIMethods : ActionController::AbstractRequest). - parse_query_parameters("#{param_name}=#{page}") + page_param = parse_query_parameters("#{param_name}=#{page}") stringified_merge @url_params, page_param else @@ -385,5 +384,19 @@ def stringified_merge(target, other) end end end + + def parse_query_parameters(params) + if defined?(CGIMethods) + CGIMethods.parse_query_parameters(params) + elsif defined?(ActionController::AbstractRequest) + ActionController::AbstractRequest.parse_query_parameters(params) + elsif defined?(ActionController::UrlEncodedPairParser) + # For Rails > 2.2 + ActionController::UrlEncodedPairParser.parse_query_parameters(params) + else + # For Rails > 2.3 + Rack::Utils.parse_nested_query(params) + end + end end end diff --git a/test/helper.rb b/test/helper.rb index ad52b1b65..019b1fd72 100644 --- a/test/helper.rb +++ b/test/helper.rb @@ -29,7 +29,10 @@ def collect_deprecations # Wrap tests that use Mocha and skip if unavailable. def uses_mocha(test_name) - require 'mocha' unless Object.const_defined?(:Mocha) + unless Object.const_defined?(:Mocha) + gem 'mocha', '>= 0.9.5' + require 'mocha' + end rescue LoadError => load_error $stderr.puts "Skipping #{test_name} tests. `gem install mocha` and try again." else diff --git a/test/lib/activerecord_test_case.rb b/test/lib/activerecord_test_case.rb index 8f66ebee4..72a6b16e3 100644 --- a/test/lib/activerecord_test_case.rb +++ b/test/lib/activerecord_test_case.rb @@ -1,6 +1,13 @@ require 'lib/activerecord_test_connector' class ActiveRecordTestCase < Test::Unit::TestCase + if defined?(ActiveSupport::Testing::SetupAndTeardown) + include ActiveSupport::Testing::SetupAndTeardown + end + + if defined?(ActiveRecord::TestFixtures) + include ActiveRecord::TestFixtures + end # Set our fixture path if ActiveRecordTestConnector.able_to_connect self.fixture_path = File.join(File.dirname(__FILE__), '..', 'fixtures') diff --git a/test/lib/view_test_process.rb b/test/lib/view_test_process.rb index 508411e97..fd4b71f98 100644 --- a/test/lib/view_test_process.rb +++ b/test/lib/view_test_process.rb @@ -17,6 +17,13 @@ ActionController::Base.perform_caching = false class WillPaginate::ViewTestCase < Test::Unit::TestCase + if defined?(ActionController::TestCase::Assertions) + include ActionController::TestCase::Assertions + end + if defined?(ActiveSupport::Testing::Deprecation) + include ActiveSupport::Testing::Deprecation + end + def setup super @controller = DummyController.new