[Ror-es] before_save y test

David Flores ruby-forum-incoming at andreas-s.net
Wed Dec 20 22:47:39 GMT 2006


Hola a todos

Primero quiero saludar al foro puesto que es mi primer mensaje.

Una vez presentado :), quisiera preguntaros un asunto relacionado con
los test en rails (Sí, aquí hay uno que ha empezado a hacer tests).

Tengo un modelo llamado User en el que he utilizado before_save para
cifrar la clave del usuario antes de guardarlo:

class User < ActiveRecord::Base
[..]
  before_save :encrypt_password
[..]
  protected

    def encrypt_password
      if !password.blank?
        self.hashed_password = User.hash_password(password)
      end
    end
[..]
end

He empezado a hacer un test, y me gustaría probar que el modelo realiza
el cambio de clave del usuario correctamente. En uno de los test tengo
lo siguiente:

  def test_password_management
    [..]
    @user.password = "newpw"
    @user.password_confirmation = "newpw"
    assert(@user.valid?)
  end

Este assert lo que comprueba es que el usuario ha pasado correctamente
las validaciones. Pero también me gustaría es comprobar que hace el
cifrado de la nueva clave. Tendría que ser algo así.

   [..]
   assert_equal(@user.hashed_password,"95c4c0b728c563a1ddab068ea2166e983eedd528")
   [..]

Pero este assert solo será valido si hago un @user.save, el caso es que
creo que en una versión anterior de rails se utilizaba transacciones
entre los diferentes test, pero que por cuestiones de rendimiento ya no
es así. Si salvo los datos a la base de datos, entonces podría llegar a
tener unos tests que sean dependientes de otros y del orden en que se
ejecuten.

No se muy bien como debería hacer esta comprobación. He probado a hacer
un @user.before_save, pero no ha resultado. Alguna idea sería agradecida
:-)

Me ha quedado un poco largo, gracias por adelantado.

saludotes

-- 
Posted via http://www.ruby-forum.com/.


More information about the Ror-es mailing list