On Tue, Aug 4, 2009 at 11:32 AM, Michele Stuart<m...@half-deserted.net> wrote:
> Hi, all.
>
> I am perplexed. The problem I'm having seems to be related to
> rendering a "non-standard" view. In our controllers, the 'new' and
> 'edit' actions share a template, as shown here.
>
> Controller:
>
>  def new
>   �...@location = Location.new
>
>    respond_to do |format|
>      format.html { render :template => 'locations/locations' }
>      format.xml  { render :xml => @location }
>    end
>  end
>
>  def edit
>   �...@location = Location.find(params[:id])
>    render :template => 'locations/locations'
>  end
>
>  def create
>   �...@location = Location.new(params[:location])
>
>    respond_to do |format|
>      if @location.save
>        flash[:notice] = 'Location was successfully created.'
>        format.html { redirect_to(@location) }
>        format.xml  { render :xml => @location, :status => :created,
> :location => @location }
>      else
>        format.html { render :action => "new" }
>        format.xml  { render :xml => @location.errors, :status =>
> :unprocessable_entity }
>      end
>    end
>  end
>
>  def update
>   �...@location = Location.find(params[:id])
>
>    respond_to do |format|
>      if @location.update_attributes(params[:location])
>        flash[:notice] = 'Location was successfully updated.'
>        format.html { redirect_to(@location) }
>        format.xml  { head :ok }
>      else
>        format.html { render :action => "edit" }
>        format.xml  { render :xml => @location.errors, :status =>
> :unprocessable_entity }
>      end
>   end
> end
>
> In the controller spec, the 'new' and 'edit' actions work fine, but
> when I try to get the response back for the 'update' and 'create'
> actions, I get a failure.
>
> This works:
>
>    it "should render new template" do
>      get :new
>      response.should render_template('locations/locations')
>    end
>
> This fails:
>
>    describe "with failed save" do
>
>      def do_post
>       �...@location.should_receive(:save).and_return(false)
>        post :create, :location => {}
>      end
>
>      it "should re-render 'new'" do
>        do_post
>        response.should render_template('locations/locations')
>      end
>
>    end
>
>
> Error:
>
> 'LocationsController handling POST /cms/locations with failed save
> should re-render 'new'' FAILED
> expected "locations/locations", got "locations/new"
> ./spec/controllers/locations_controller_spec.rb:320:
>
>
>
> Any advice is appreciated. Thank you.

This is a bug. Please report it to http://rspec.lighthouseapp.com.

You may be able to get this to pass in integration mode (add
integrate_views to the top of the example group), but I'm not sure
about that.

Cheers,
David

>
> - Michele
> _______________________________________________
> rspec-users mailing list
> rspec-users@rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>
_______________________________________________
rspec-users mailing list
rspec-users@rubyforge.org
http://rubyforge.org/mailman/listinfo/rspec-users

Reply via email to