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