[rspec-devel] Calls to render and redirect in controllers should return true (rspec-on-rails)

David Chelimsky dchelimsky at gmail.com
Thu Nov 30 08:19:34 EST 2006


On 11/30/06, Steve Tooke <steve.tooke at gmail.com> wrote:
> Could this be because I'm isolating the controllers from the views, so
> nothing is actually being rendered - hence why render is returning
> nil?

Could be. I haven't had a look at this yet, but that sounds plausible.

>
> On 11/29/06, Steve Tooke <steve.tooke at gmail.com> wrote:
> > Submitted as Bugs item #6959
> >
> > I'm trying to have a crack at fixing this, but I'm not sure exactly
> > where I should be looking, I'm guessing its in the controller context?
> >
> > Cheers,
> > Steve
> >
> > On 11/29/06, David Chelimsky <dchelimsky at gmail.com> wrote:
> > > Would you please submit this directly to the tracker?
> > >
> > > http://rubyforge.org/tracker/?group_id=797
> > >
> > > Thanks,
> > > David
> > >
> > > On 11/29/06, Steve Tooke <steve.tooke at gmail.com> wrote:
> > > > Sorry for the duplicate, I managed to send the incomplete email by accident!
> > > >
> > > > I think I've come across a small bug which causes the "do and return"
> > > > pattern to fail with render or redirect_to inside an controller
> > > > action.
> > > >
> > > > According to changeset 462 (http://dev.rubyonrails.org/changeset/462)
> > > > render and redirect_to should both return true, this does not appear
> > > > to happen when running specs
> > > >
> > > > e.g.
> > > >
> > > > class MyController < ApplicationController
> > > >
> > > >   def index
> > > >     @page = Page.find(:first, :condtions => ['name = ?', params[:name]])
> > > >     show_404 and return unless @page
> > > >     render :action => :page
> > > >   end
> > > >
> > > >   protected
> > > >   def show_404
> > > >     render( :file => "#{RAILS_ROOT}/public/404.html",
> > > >                  :status => "404 Not Found")
> > > >   end
> > > > end
> > > >
> > > > ----------------
> > > >
> > > > context "a GET to index with an unrecognised page" do
> > > >   controller_name :my_controller
> > > >
> > > >   setup do
> > > >     Page.stub!(:find)
> > > >   end
> > > >
> > > >   specify "should not assign a page" do
> > > >     get 'index', :name => 'broken'
> > > >     assigns['page'].should == nil
> > > >   end
> > > >
> > > >   specify "should render 404 file" do
> > > >     controller.should_render :file => "#{RAILS_ROOT}/public/404.html",
> > > >                                             :status => "404 Not Found"
> > > >     get 'index', :name => 'broken'
> > > >   end
> > > > end
> > > >
> > > > -------------
> > > >
> > > > Both of these specs will fail with an
> > > > "ActionController::DoubleRenderError", demonstrating that the return
> > > > call is being ignored.
> > > >
> > > > Regards,
> > > > Steve
> > > > _______________________________________________
> > > > rspec-devel mailing list
> > > > rspec-devel at rubyforge.org
> > > > http://rubyforge.org/mailman/listinfo/rspec-devel
> > > >
> > > _______________________________________________
> > > rspec-devel mailing list
> > > rspec-devel at rubyforge.org
> > > http://rubyforge.org/mailman/listinfo/rspec-devel
> > >
> >
> _______________________________________________
> rspec-devel mailing list
> rspec-devel at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-devel
>


More information about the rspec-devel mailing list