[rspec-users] controller spec with model that validates_uniqueness

Courtenay court3nay at gmail.com
Thu Aug 23 20:11:17 EDT 2007


Does this work?

   Image.stub!(:validates_uniqueness_of).and_return(true)


On 8/23/07, s.ross <cwdinfo at gmail.com> wrote:
> I want to use mocks and stubs to test the controller, but am having
> trouble getting my validation not to trigger. Here's the code:
>
> # spec:
>
>      Image.stub!(:find).and_return(@image)
>      @image.should_receive(:save!).once.with(:any_args)
>      put :update, :id => @image.id, :category_id =>
> @category.id, :image => {:name => 'test', :image_number => 13554}
>
> #model
>
>    validates_presence_of :name
>    validates_uniqueness_of :name, :allow_nil => true
>
> # rspec output
>
> ActiveRecord::RecordInvalid in 'ImagesController should update a
> database record when it receives a PUT'
> Validation failed: Name has already been taken, Image number has
> already been taken
>
>
> It seems AR is not detecting that this is an edit/update that will
> not cause a uniqueness conflict. I believe the code in the model
> needs to remain in place because I don't want a user creating a name
> conflict by editing an existing name into one that already exists in
> the database. Any thoughts on how better to spec this?
>
> Thanks
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list