[rspec-users] How can I spec protect method

Elza elza.morelli at tagview.com.br
Wed Oct 21 12:31:35 EDT 2009


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.



More information about the rspec-users mailing list