[rspec-users] controller spec with model that validates_uniqueness

s.ross cwdinfo at gmail.com
Thu Aug 23 13:57:06 EDT 2007


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


More information about the rspec-users mailing list