[rspec-users] Controller Spec & DataMapper Chaining

Sid Wood sidwood2 at gmail.com
Sat Mar 19 13:49:00 EDT 2011


Thanks Ken, but when I said I was new to RSpec I didn't mean I was THAT new!
;o)

I think people aren't grasping the DataMapper chaining that is at the root
of my testing confusion. I managed to come up with a solution that I've
outlined here http://pastie.org/1690040

Basically, I mocked out a couple DataMapper::Collections and nested them.
I'd love to hear if anyone would have tackled this issue differently.


On 18 March 2011 18:01, Ken Chien <ken.chien at gmail.com> wrote:

> When calling get/post/etc, the second optional parameter is a hash
> representing the "params" hash.
>
> So, in order to test the conditional(s) in your controller, you should
> write:
>    get :index, :alpha => true  #test the first conditional
>
> In another example, pass in :beta => true like this:
>     get :index, :beta => true
>
> HTH,
> Ken
>
>
> 2011/3/18 Sid Wood <sidwood2 at gmail.com>
>
>> 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
>> present.
>>
>> 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])
>>   end
>> end
>>
>> Just to recap, this code is valid and works, I just don't know how to
>> write a test for it.
>>
>> Cheers,
>>
>> Sid
>>
>> _______________________________________________
>> rspec-users mailing list
>> rspec-users at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/rspec-users
>>
>
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20110319/e75066c3/attachment.html>


More information about the rspec-users mailing list