| Path: | README |
| Last Update: | Wed Dec 19 01:01:30 +1100 2007 |
Some helpful rspec matchers for testing validations and associations. It is not complete, especially in the case of validations, and a little lacking in documentation, but might be useful nonetheless.
To install:
script/plugin install http://rails-oceania.googlecode.com/svn/patallan/active_matchers/
Make sure, in your spec_helper.rb file, you add an include as follows:
config.include ActiveMatchers::Matchers
I‘d like to make that automatic, but haven‘t figured out how to just yet.
Test validates_presence_of :name
Model.should need(:name).using(@valid_attributes)
Test validates_uniqueness_of :name
Model.should need(:name).to_be_unique.using(@valid_attributes)
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
Model.should limit_length_of(:name).using(@valid_attributes)
Test validates_length_of :name, :maximum => 255
Model.should limit_length_of(:name).to(255).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)
end
Also allows confirmation of the presence of associations
Test belongs_to :parent
Model.should belong_to(:parent)
Test belongs_to :parent, :class_name => "CustomClass", :foreign_key => "some_id"
Model.should belong_to(:parent).with_options(
:class_name => "CustomClass", :foreign_key => "some_id")
Test has_many :items
Model.should have_many(:items)
Test has_many :items, :class_name => "CustomClass", :foreign_key => "some_id"
Model.should have_many(:items).with_options(
: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 (c) 2007 Pat Allan & James Healy, released under the MIT license