Hola, estoy quemandome la cabeza y ya no se que estoy haciendo bien y
que no, asi que consulto :)

Tengo 2 clases User y Operation, Operation tiene un valor en puntos, y
User tiene una columna points que cachea los puntos del usuario.

El test que hice seria :

it "should change the users points" do
  @user = User.create ....
  lambda {
     @user.operations.create ..... :points => 100
  }.should change(@user, :points).by(100)
end

En operations tengo un after create que hace un
User.update_counters(user.id, points) que en el log se ve que se
ejecuta bien, modificando la DB y el user tiene 100 puntos mas ahora,
pero el test falla.

El problema es que update_counters no hace un reload de la clase user,
por lo que el test nunca ve el cambio.

Si pongo un reload en el after_save, no funciona porque la instancia
de User que tiene la operacion no es la misma que @user. por lo que lo
unico que me queda es hacer un feo @user.reload en el lamda y
realmente lo odio :)

Alguno tuvo alguna situacion similar? con callbacks y rspec?

Gracias!
-- 
--
Ricardo Markiewicz
http://www.gazer.com.ar/
http://www.voyovoy.com/ - ¿Qué hay para hacer?
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a