Skip to content
Helpful rspec matchers for testing validations and associations.
Ruby
Find file
Pull request Compare This branch is 2 commits ahead, 1 commit behind pat:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.
lib
.gitignore
LICENSE
README.textile
Rakefile
active-matchers.gemspec
init.rb

README.textile

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.

Install

script/plugin install http://github.com/freelancing-god/active-matchers.git

Make sure, in your spec_helper.rb file, you add an include as follows:
config.include ActiveMatchers::Matchers

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)

Authors

Copyright © 2007 Pat Allan & James Healy, released under the MIT license

Contributors

  • Chris Lloyd
  • Gareth Townsend
  • Wes Oldenbeuving
Something went wrong with that request. Please try again.