[rspec-users] 'new' method works as expected but rspec does not recognise flash contents or redirection
Gordon Yeong
anexiole at gmail.com
Mon Mar 26 10:58:39 UTC 2012
Guys,
Not sure why but I deleted my Gemfile.lock file. Found that it's due to
a stale Gemfile.lock file which is still using rspec-core 2.8.0 when in
fact I just performed and update yesterday night on rspec (hence I've got
rspec-core 2.9.0).
Ran "rspec parts_controller.spec.rb" again and all tests are passing.
Could it really be the stale Gemfile.lock file? hmmm
On 26 March 2012 21:47, Gordon <anexiole at gmail.com> wrote:
> hi all :)
>
> Found a spec failing today.
> Not sure why.
>
> When I run my application and successfully added a new object, i can
> see
> 1) a redirection has taken place to the index page as expected (302
> code returned) from the console
> 2) the flash notice's message being displayed in the index page
>
> BUT
> when I run the specs (see below), it fails indicating that the
> redirection did not occur (as a 200 code was returned) AND
> that the flash notice message was nil.
>
>
> ---------specs error start -------------------------------------
>
> 1) PartsController saves the new part object successfully sets the
> flash with a success message
> Failure/Error: flash[:notice].should eq('Part was successfully
> created.')
>
> expected: "Part was successfully created."
> got: nil
>
> (compared using ==)
> # ./spec/controllers/parts_controller_spec.rb:35:in `block (3
> levels) in <top (required)>'
>
> 2) PartsController saves the new part object successfully redirects
> the user back to the parts index page
> Failure/Error: response.should redirect_to( :action => 'index' )
> Expected response to be a <:redirect>, but was <200>
> # ./spec/controllers/parts_controller_spec.rb:39:in `block (3
> levels) in <top (required)>'
>
> --------- specs error end -------------------------------------
>
> --------- extract of spec/controllers/parts_controller_spec.rb - start
> ------------------
>
> context 'saves the new part object successfully' do
> before(:each) do
> post :create, :part => { 'title' => 'HKS boost
> controller' }
> end
>
> # we could combine the 2 specs below to save on the post
> request
> # to the create action but having 2 separate specs would give
> # clarity
> it 'sets the flash with a success message' do
> flash[:notice].should eq('Part was successfully created.')
> end
>
> it 'redirects the user back to the parts index page' do
> response.should redirect_to( :action => 'index' )
> end
> end
>
> --------- extract of spec/controllers/parts_controller_spec.rb - end
> ------------------
>
>
> I'm not sure what's going on :(
>
>
>
>
> -------- "parts_controller.rb" - start
> -------------------------------
>
> # POST /parts
> # POST /parts.xml
> def create
> # Record current user's id as he/she created the part
> params[:part][:created_by] = current_user.id
> params[:part][:updated_by] = current_user.id
>
> @part = Part.new(params[:part])
> respond_to do |format|
> if @part.save
> flash[:notice] = 'Part was successfully created.'
> format.html { redirect_to(parts_path) }
> format.xml { render :xml => @part, :status
> => :created, :location => @part }
> format.json {
> @parts = Part.all;
> render :json => @parts
> }
> else
> format.html { render :action => "new" }
> format.xml { render :xml => @part.errors, :status
> => :unprocessable_entity }
> end
> end
> end
>
>
> -------- "parts_controller.rb" - end -------------------------------
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20120326/37c7372a/attachment-0001.html>
More information about the rspec-users
mailing list