[rspec-users] redirection doesn't get detected well?

aslak hellesoy aslak.hellesoy at gmail.com
Wed Apr 11 20:13:52 EDT 2007


On 4/12/07, Michael Trier <mtrier at eminentconsultinggroup.com> wrote:
> On Apr 11, 2007, at 7:44 PM, aslak hellesoy wrote:
>
> > On 4/12/07, David Chelimsky <dchelimsky at gmail.com> wrote:
> >> On 4/11/07, Matthijs Langenberg <mlangenberg at gmail.com> wrote:
> >>> I think that's the only way and it is quit simple:
> >>>
> >>> OrderProductsController.class_eval do
> >>>   def rescue_action(e) raise e end;
> >>> end
> >>>
> >>> 1)
> >>> Spec::Mocks::MockExpectationError in 'DELETE on
> >>> /order_products?order_id=3&product_id=6 should destroy order_product
> >>> with order_id==3 and product_id==6 and redirect to /orders/3.'
> >>> OrderProduct expected :find with (:first, {:conditions=>
> >>> {:order_id=>3,
> >>> :product_id=>"6"}}) but received it with (:first,
> >>> {:conditions=>{:order_id=>"3", :product_id=>"6"}})
> >>> /Users/mlangenberg/Documents/rails/pos/config/../app/controllers/
> >>> order_products_controller.rb:3:in
> >>> `destroy'
> >>> ./spec/controllers/order_products_controller_spec.rb:17:
> >>>
> >>> Finished in 0.055156 seconds
> >>>
> >>> 1 example, 1 failure
> >>>
> >>> Now I wouldn't mind if the controller_name method does this type of
> >>> monkeypatching, it saves me a lot of debugging.
> >>
> >> Interestingly enough, we had that in there and it was recently
> >> removed:
> >>
> >> http://rubyforge.org/tracker/?
> >> func=detail&group_id=797&aid=9767&atid=3149
> >>
> >> We could make that configurable, but I certainly don't want to simply
> >> add it back in. WDYT?
> >>
> >
> > I'm working on adding it back in - this time a little smarter. It will
> > only reraise the exception if it is a mock exception, otherwise it
> > will be handled by Rails.
> >
> > Makes sense?
>
> Sounds good.  Thanks aslak.  This will help out a lot.
>

Ok, it's on the trunk. That should get rid of those red(irection) herrings!

Aslak

> Michael
>
> >>>
> >>> On 4/12/07, David Chelimsky <dchelimsky at gmail.com> wrote:
> >>>> On 4/11/07, aslak hellesoy <aslak.hellesoy at gmail.com> wrote:
> >>>>> On 4/11/07, Matthijs Langenberg <mlangenberg at gmail.com> wrote:
> >>>>>> Thanks for the hint David, when I looked at response.body I
> >>>>>> saw the
> >>>>>> following HTML passing by:
> >>>>>>
> >>>>>> <pre>OrderProduct expected :find with (:first, {:conditions=>
> >>>>>> {:order_id=>3, :product_id=>6}}) but received it with (:first,
> >>>>>> {:conditions=>{:order_id=>"3", :product_id=>"6"}})</pre>
> >>>>>>
> >>>>>> Which makes totally sense since params["order_id"] and
> >>>>>> params["product_id"] indeed are String objects instead of Fixnum
> >>>>>> objects, however, shouldn't this expectation error raise
> >>>>>> earlier and
> >>>>>> make that expectation fail instead of the response.should
> >>>>>> be_redirect
> >>>>>> expectation?
> >>>>>
> >>>>> RSpec doesn't invoke actions directly - it invokes them via Rails.
> >>>>> Rails catches any exceptions that happen in a controller action
> >>>>> and
> >>>>> prints the backtrace to the response.
> >>>>>
> >>>>> Would it make sense if we found a way to at least let mock errors
> >>>>> ripple through and back to RSpec?
> >>>>
> >>>> You mean monkey patch Rails to not catch mock failures? That
> >>>> sounds scary.
> >>>>
> >>>>>
> >>>>> Aslak
> >>>>>
> >>>>>>
> >>>>>> On 4/11/07, David Chelimsky <dchelimsky at gmail.com> wrote:
> >>>>>>> On 4/11/07, Matthijs Langenberg <mlangenberg at gmail.com> wrote:
> >>>>>>>> I'm doing a redirect in one of my controller actions and
> >>>>>>>> somehow I can't
> >>>>>>>> spec it, see this pastie: http://pastie.caboo.se/53120.
> >>>>>>>> When following the link from a browser I'm being redirected
> >>>>>>>> to the right
> >>>>>>>> page.
> >>>>>>>
> >>>>>>> First of all - nice example!
> >>>>>>>
> >>>>>>> Secondly, this looks like it should work. What's actually in
> >>>>>>> the response?
> >>>>>>>
> >>>>>>> ...
> >>>>>>> it "should destroy order_product with order_id==3 and
> >>>>>>> product_id==6
> >>>>>>> and redirect to /orders/3." do
> >>>>>>>     @order_product.should_receive(:destroy)
> >>>>>>>     delete 'destroy', :id => 'nil', :order_id =>
> >>>>>>> 3, :product_id => 6
> >>>>>>>     puts response.inspect
> >>>>>>>     response.should be_redirect
> >>>>>>>   end
> >>>>>>> ...
> >>>>>>>
> >>>>>>>>
> >>>>>>>> _______________________________________________
> >>>>>>>> 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
> >>>>>>>
> >>>>>> _______________________________________________
> >>>>>> 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
> >>>>>
> >>>> _______________________________________________
> >>>> 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
> >>>
> >> _______________________________________________
> >> 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
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list