Forum: RSpec Problem when testing controllers

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
89e57a28dfdb85e07b33f92783dbe349?d=identicon&s=25 Daniel Lopes (Guest)
on 2008-12-12 20:57
(Received via mailing list)
I'm having troubles to test methods on controllers, specially this
method:
  def update
    @property = @user.properties.find(params[:id])

    if params[:property][:owner_id].blank?
      @owner = Owner.create_from_user(@user)
      @property.owner = @owner
    end

    if @property.update_attributes(params[:property])
      flash[:notice] = 'Imóvel atualizado com sucesso.'
      redirect_to user_property_path(@user)
    else
      render :action => "edit"
    end
  end

This method is pretty standard, except for the line  ==>  if
params[:property][:owner_id].blank?

In my spec file I try this:

      it "should expose the requested property as @property" do
        @property = mock_model(Property, :owner=>:owner, :owner=
=>:owner,
:update_attributes => true)
        Property.stub!(:find).and_return(@property)
        Owner.stub!(:create_from_user)

        put :update, :id => "1"
        assigns(:property).should equal(@property)
      end

But get this error:
The error occurred while evaluating nil.[]

The problem is params and I don't know how is the best way to simulete
params hash ...

Anyone can help?

Thanks.

Daniel Lopes    Area Criações
Design, Websites e Sistemas Web

Visite:  http://www.areacriacoes.com.br/projects
          http://blog.areacriacoes.com.br/

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
*
55 (31) 3077-4560  /  55 (31) 8808-8748  /  55 (31) 8737-7501
42172acdf3c6046f84d644cb0b94642c?d=identicon&s=25 Pat Maddox (pergesu)
on 2008-12-12 21:16
(Received via mailing list)
"Daniel Lopes" <danielvlopes@gmail.com> writes:

>     if @property.update_attributes(params[:property])
>
> The error occurred while evaluating nil.[]
>
> The problem is params and I don't know how is the best way to simulete params hash ...

Hi, you need to pass the param in the put:

put :update, :id => "11", :property => {:owner_id => "123"}

and when you want to check for the blank one, you just have to pass in
an empty property hash:

put :update, :id => "11", :property => {}

This way params[:property][:owner_id] will return nil.

Pat
Fee80fad857baeb14ff106d71eab5332?d=identicon&s=25 Daniel Area Criações (Guest)
on 2008-12-12 21:32
(Received via mailing list)
Thanks, now it's looks obivious. :D
Atenciosamente,

Daniel Lopes    Area Criações
Design, Websites e Sistemas Web

Visite:  http://www.areacriacoes.com.br/projects
          http://blog.areacriacoes.com.br/

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
* *
*
55 (31) 3077-4560  /  55 (31) 8808-8748  /  55 (31) 8737-7501
This topic is locked and can not be replied to.