Ruby on Rails Thursday, November 29, 2012

Hello:

I'm going crazy with a test of a controller action.

This is the test

describe "POST changetipo" do
    it "toggle tipo of tije" do
      tije = FactoryGirl.create(:tije)
      puts "--------------- #{tije.inspect}--------------"
      post :changetipo, :id => tije.id
      puts "+++++++++++++++ #{tije.inspect} +++++++++++++"
      tije.tipo.should == "2"
    end
  end


and this is the controller method


def changetipo
        @tije = Tije.find(params[:id])               
        @tije.tipo == "1" ? @tije.tipo = "2" : @tije.tipo = "1" 
        @tije.save!
        puts "************* #{@tije.inspect} **************"

        respond_to do |format|
          format.html { redirect_to root_path, notice: 'Tije type changed' }
          format.json { head :no_content }
        end

end



and this is the console output:

---------- #<Tije id: 1, tipo: "1", description: "Hoy" --------------
********** #<Tije id: 1, tipo: "2", description: "Hoy" **************
++++++++++ #<Tije id: 1, tipo: "1", description: "Hoy" +++++++++++++


so, at the beginning tipo is 1. After tije.save! is 2, but when it come back to the test, its value is 1 again :(

All the other test are working. I only have a problem with this one.

I don't know why this test is failing. If I use web browser to test it  it's working. It changes the value in database.

I also have try to change test like this:

describe "POST changetipo" do
    it "toggle tipo of tije" do
      tije = FactoryGirl.create(:tije)
      expect {
        post :changetipo, :id => tije.to_param
      }.to change(tije.tipo)
    end
end

but I have this error

Failure/Error: tije.tipo.should == "2"
       expected: "2"
            got: "1" (using ==)

Can anyone tell me what I'm doing wrong?

Thank you very much


Raul



--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
 
 

No comments:

Post a Comment