active-matchers
active-matchers copied to clipboard
Helpful rspec matchers for testing validations and associations.
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.
h2. Install
script/plugin install http://github.com/pat/active-matchers.git
Make sure, in your spec_helper.rb file, you add an include as follows: config.include ActiveMatchers::Matchers
h2. Usage
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)
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@
Model.should limit_length_of(:name).from(3).to(40).using(@valid_attributes)
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) 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@)
h2. Authors
Copyright (c) 2007 Pat Allan & James Healy, released under the MIT license
h2. Contributors
- Chris Lloyd
- Gareth Townsend
- Wes Oldenbeuving