How can I spec protect method

How can I spec the 3rd line of my controller?
update_successful, error_msg = update_channels_association

def create
@user = User.new(get_param(:user, :hash))

if @user.save
  update_successful, error_msg = update_channels_association
  set_flash_if update_successful,

:resource_successfully_created.t(:resource => :user.t[:one]), error_msg

  redirect_to @user
else
  render :action => :new
end

end


My spec

describe UsersController do
describe “POST create” do
##############################################################
should_require_login :post, :create

##############################################################
describe "authenticated user" do
  ##############################################################
  before(:each) do
    login_as_user

    @user = mock_model(User, :save => nil)
    User.stub!(:new).and_return(@user)
    @params = {'name' => 'Mary'}
  end

  ##############################################################
  def do_post
    post :create
  end

  ##############################################################
  it "should build a new user" do
    User.should_receive(:new).with(@params).and_return(@user)
    post :create, :user => @params
  end

  ##############################################################
  it "should save the user" do
    @user.should_receive(:save)
    do_post
  end

  ##############################################################
  context "when the user saves successfully" do
    before(:each) do
      @user.stub!(:save).and_return true
      controller.should_receive(:update_channels_association)
    end


    it "should set a flash[:notice] user" do
      do_post
      flash[:notice].should ==

:resource_successfully_created.t(:resource => :user.t[:one])
end


The error
‘UsersController POST create authenticated user when the user saves
successfully should set a flash[:notice] user’ FAILED
expected: “Usu�rio criado(a) com sucesso.”,
got: nil (using ==)

I know it is missing to verify the local variable update_successful.

If anyone can help me.
Cheers
EM

View this message in context:
http://www.nabble.com/How-can-I-spec-protect-method-tp25995877p25995877.html
Sent from the rspec-users mailing list archive at Nabble.com.

On 21 Oct 2009, at 17:31, Elza wrote:

How can I spec the 3rd line of my controller?

What does that method do to the other objects in your domain? Can you
describe that behaviour easily using mocks and stubs?

If not, you would be best to move the method out of the controller and
onto another class, such as the User model. This is called ‘listening
to your tests’[1]

[1]http://www.mockobjects.com/book/listening-to-the-tests.html

##############################################################
@params = {‘name’ => ‘Mary’}
post :create, :user => @params
before(:each) do


Cheers
EM

View this message in context: http://www.nabble.com/How-can-I-spec-protect-method-tp25995877p25995877.html
Sent from the rspec-users mailing list archive at Nabble.com.


rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users

cheers,
Matt

http://mattwynne.net
+447974 430184

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs