Kaminari rspec testing undefined method page.

319 views
Skip to first unread message

Mauro

unread,
May 26, 2011, 12:07:52 PM5/26/11
to rubyonrails-talk
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

Bryan Crossland

unread,
May 26, 2011, 1:55:07 PM5/26/11
to rubyonra...@googlegroups.com
Sent from my iPhone

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.

> --
> You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
> To post to this group, send email to rubyonra...@googlegroups.com.
> To unsubscribe from this group, send email to rubyonrails-ta...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
>

Mauro

unread,
May 26, 2011, 2:41:36 PM5/26/11
to rubyonra...@googlegroups.com


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

egervari

unread,
May 26, 2011, 5:07:55 PM5/26/11
to Ruby on Rails: Talk
Here's my chance to give back ;)

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 ;)
Reply all
Reply to author
Forward
0 new messages