Some helpful rspec matchers for testing validations and associations. It is not complete, especially in the case of validations, and lacking in documentation, but might be useful nonetheless.
script/plugin install http://github.com/pat/active-matchers.gitMake sure, in your spec_helper.rb file, you add an include as follows:
config.include ActiveMatchers::Matchers
Test validates_presence_of :name
Test validates_uniqueness_of :name
Test presence of at least one field being required
Model.should need.one_of(:first_name, :last_name).using(@valid_attributes)Test validates_length_of :name matches
database field length
Test validates_length_of :name, :maximum => 255
Test validates_length_of :name, :minimum => 3
Model.should limit_length_of(:name).from(3).using(@valid_attributes)
Test validates_length_of :name, :within => 3..40
Test validates_numericality_of :age
Model.should need(:age).to_be_numeric.using(@valid_attributes)
You can group multiple validation checks together like so:
using(@valid_attributes) do Model.should need(:name) Model.should limit_length_of(:name).to(255) endAlso allows confirmation of the presence of associations
Test belongs_to :parent
Test belongs_to :parent, :class_name => "CustomClass", :foreign_key => "some_id"
Test has_many :items
Test has_many :items, :class_name => "CustomClass", :foreign_key => "some_id"
Similar testing available for has_one (Model.should have_one
) and has_and_belongs_to_many
(Model.should have_and_belong_to_many
)
Copyright © 2007 Pat Allan & James Healy, released under the MIT license
- Chris Lloyd
- Gareth Townsend
- Wes Oldenbeuving