[Ror-es] factory_girl + :uniquessness => true

Daniel Rodriguez Troitiño
Thu Feb 18 11:30:02 GMT 2010


On Wed, Feb 17, 2010 at 23:50, Marcelino Llano  wrote:
> Tengo un test que está resistiéndose.
> No pretendo testear los modelos en el test de controlador,
> pero no consigo generar titles únicos.
> # episode.rb
> class Episode < ActiveRecord::Base
>   validates :title, :uniqueness => true
> end
> #factories.rb
> Factory.sequence :title do |n|
>   "Foo #{n}"
> end
> Factory.define :episode do |f|
>   f.title { Factory.next(:title) }
> end
> #episode_controller_test.rb
> class Admin::EpisodesControllerTest < ActionController::TestCase
>   def setup
>     @episode = Factory.create(:episode)
>   end
>
>   test "should create episode" do
>     assert_difference('Episode.count') do
>       post :create, :episode => Factory.attributes_for(:episode)
>     end
>     assert_redirected_to admin_episodes_path
>     assert_equal "El episodio ha sido creado", flash[:notice]
>   end
> end
> ¿Qué puede fallar?
>

¿Qué es lo que falla? Supongo que el assert_difference ¿no?

El código parece correcto, y suponiendo que el funcionamiento de
Factory Girl lo es también… ¿has probado a eliminar la base de datos
de testing y recrearla de nuevo? Quizá tras alguna excepción se quedó
un "Foo 2" o "Foo 1" por ahí que es lo que hace que falle.