[rspec-users] Controller Spec & DataMapper Chaining

Sid Wood sidwood2 at gmail.com
Fri Mar 18 12:37:03 EDT 2011

Thanks for the replies guys.

My problem is writing a test for

@widgets = @widgets.by_alpha(params[:alpha])

DataMapper allows you to chain additional criteria on an existing query and
doesnt execute that query until in is used in the view. So the above
statement gets baked into the previous default query @widgets =
Widget.all(:order => [ :name.asc ]).

I'd just like to write a test that confirms the controller is in fact
calling @widgets.by_alpha(params[:alpha]) when the params[:alpha] is

Here is the code again so you don't have to scroll to see it

def index
  @widgets = Widget.all(:order => [ :name.asc ])
  if params[:alpha]
    @widgets = @widgets.by_alpha(params[:alpha])
  elsif params[:beta]
    @widgets = @widgets.by_beta(params[:beta])

Just to recap, this code is valid and works, I just don't know how to write
a test for it.


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20110318/699e39d2/attachment.html>

More information about the rspec-users mailing list