Hola lista… No se qué me pasa hoy pero no consigo testear una cosa
que creo que es una tontería.
Supongamos el típico escenario de un modelo que has_many otro. Por
ejemplo, para una tienda de discos, tenemos el modelo Disco y el
modelo Caratula:
class Disco < ActiveRecord::Base
has_many :caratulas
end
class Caratula < ActiveRecord::Base
belongs_to :disco
end
Bien, quiero testear que cuando se crea un nuevo Disco, se le crea
automáticamente una primera carátula. Para ello uso este test en el
test unitario de Disco:
def test_crear_primera_caratula
disco = Disco.create(:titulo => ‘Remain in Light’)
assert_equal 1, disco.caratulas.size
end
Siguiendo TDD, el test falla, y entonces voy al modelo Disco y
programo esto con after_create:
class Disco < ActiveRecord::Base
has_many :caratulas
after_create :crear_primera_caratula
protected
def create_primera_caratula
self.caratulas.create()
end
end
Pero nada… el test me dice que disco.caratulas.size es 0, y esperaba
1.
Lo curioso es que desde script/console o directamente desde la web, sí
que funciona, hace el after_create y se crea la carátula.
Me da la impresión de que en los tests unitarios no se lanzan los
callbacks… ¿Cómo hacerlo entonces?