ruby-on-rails - describe - run rspec tests rails
¿Cómo probar los alcances? (2)
David Chelimsky (el creador de Rspec) ofreció el siguiente ejemplo en el Grupo de Google Rspec :
describe User, ".admins" do
it "includes users with admin flag" do
admin = User.create! :admin => true
User.admin.should include(admin)
end
it "excludes users without admin flag" do
non_admin = User.create! :admin => false
User.admin.should_not include(non_admin)
end
end
class User < ActiveRecord::Base
named_scope :admins, :conditions => {:admin => true}
end
Obviamente no es el mismo ejemplo que el tuyo, pero debería darte una idea de cómo hacerlo. El hilo relevante para el contexto está aquí: http://groups.google.com/group/rspec/browse_thread/thread/6706c3f2cceef97f
Intenté encontrarlo pero sin éxito. Solo me preguntaba cómo podría probar los alcances en Rails 3.
Podría estar usando rspec, shoulda o simplemente una unidad de prueba.
Gracias.
En realidad, lo intento de esta manera, pero no es una prueba completa, ya que todavía es necesario poner el método order ().
El alcance:
scope :recents_available, where(:available => true, :locked => false).order("created_at DESC")
describe Job, ":recents_available" do
it "should have the scope" do
Job.should respond_to(:recents_available)
end
it "should include recents jobs that are available and unlocked" do
@job = Factory(:job, :available => true, :locked => false )
Job.recents_available.should include(@job)
end
fin
Estoy seguro de que hay una solución más elegante, pero siempre he configurado algunos objetos que deberían y no deberían estar en mi alcance. Después de llamar al ámbito, compruebo que el objeto devuelto tiene el objeto que debería y no tiene el objeto que no debería.
En todo caso, espero ser iluminado por otras respuestas.