Kaminari rspec testing undefined method page

Someone use kaminari for pagination?
I’m doing some tests but I don’t know why I have an undefined method
page.
Here is my simple test:

describe “GET index” do
it “assigns all fire_preventions as @fire_preventions” do
FirePrevention.stub(:search) { [mock_fire_prevention] }
get :index
assigns(:fire_preventions).should eq([mock_fire_prevention])
end
end

The index action is:

def index
@search = FirePrevention.search(params[:search])
@fire_preventions =
@search.page(params[:page]).per(Settings.fire_preventions_per_page)
end

I’m using meta_search.

The test error is:

Failure/Error: get :index
NoMethodError:
undefined method `page’ for [#<FirePrevention:0x976
@name=“FirePrevention_1002”>]:Array

Sent from my iPhone

On May 26, 2011, at 11:07 AM, Mauro [email protected] wrote:

end

The test error is:

Failure/Error: get :index
NoMethodError:
undefined method `page’ for [#<FirePrevention:0x976
@name=“FirePrevention_1002”>]:Array

It looks like you are getting back an Array as your search result the
contains lots of FirePrevention objects. While a FirePrevention object
may have a page method there is no page method for an Array. You need to
loop over the returned Array to access each object in it to get to that
object’s page method.

B.

On 26 May 2011 17:55, Bryan C. [email protected] wrote:

FirePrevention.stub(:search) { [mock_fire_prevention] }
@search.page(params[:page]).per(Settings.fire_preventions_per_page)

It looks like you are getting back an Array as your search result the contains
lots of FirePrevention objects. While a FirePrevention object may have a page
method there is no page method for an Array. You need to loop over the returned
Array to access each object in it to get to that object’s page method.

mmmmmmm… I need an example for that, there aren’t examples with
rspec anche kaminari in internet.

Here’s my chance to give back :wink:

Make a file called kaminari.rb in /specs/support

Puts this in it:

module Kaminari::ActionViewExtension::InstanceMethods
  def paginate(scope, options = {}, &block)
  end
end

Make sure this file is loaded in your spec_helper.rb:

Dir[Rails.root.join("spec/support/**/*.rb")].each {|f| require f}

You should probably have this line already, but check just to be sure.

That should do it.

I don’t know a lot about rails, but I actually knew this answer :wink: