<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -321,8 +321,7 @@ module WillPaginate
         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(&quot;#{param_name}=#{page}&quot;)
+          page_param = parse_query_parameters(&quot;#{param_name}=#{page}&quot;)
           
           stringified_merge @url_params, page_param
         else
@@ -385,5 +384,19 @@ module WillPaginate
         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 &gt; 2.2
+        ActionController::UrlEncodedPairParser.parse_query_parameters(params)
+      else
+        # For Rails &gt; 2.3
+        Rack::Utils.parse_nested_query(params)
+      end
+    end
   end
 end</diff>
      <filename>lib/will_paginate/view_helpers.rb</filename>
    </modified>
    <modified>
      <diff>@@ -29,7 +29,10 @@ end
 
 # 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', '&gt;= 0.9.5'
+    require 'mocha'
+  end
 rescue LoadError =&gt; load_error
   $stderr.puts &quot;Skipping #{test_name} tests. `gem install mocha` and try again.&quot;
 else</diff>
      <filename>test/helper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -1,6 +1,13 @@
 require 'lib/activerecord_test_connector'
 
 class ActiveRecordTestCase &lt; 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>
      <filename>test/lib/activerecord_test_case.rb</filename>
    </modified>
    <modified>
      <diff>@@ -17,6 +17,13 @@ end
 ActionController::Base.perform_caching = false
 
 class WillPaginate::ViewTestCase &lt; 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</diff>
      <filename>test/lib/view_test_process.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>b9eef8961ae20a9afc75859876f50fbf082bc129</id>
    </parent>
  </parents>
  <author>
    <name>Kamal Fariz Mahyuddin</name>
    <email>kamal.fariz@gmail.com</email>
  </author>
  <url>http://github.com/mislav/will_paginate/commit/1d3e813e35728394f18722b4e2dc3fa6571d6f34</url>
  <id>1d3e813e35728394f18722b4e2dc3fa6571d6f34</id>
  <committed-date>2009-03-09T06:03:58-07:00</committed-date>
  <authored-date>2009-03-09T02:59:21-07:00</authored-date>
  <message>Rails 2.3 compat: query parameter parsing with Rack and test suite fixes</message>
  <tree>693e2c358facb0cea70d2602beaa01fc03e957f5</tree>
  <committer>
    <name>Mislav Marohni&#263;</name>
    <email>mislav.marohnic@gmail.com</email>
  </committer>
</commit>
