public
Fork of freelancing-god/active-matchers
Description: Helpful rspec matchers for testing validations and associations.
Homepage: http://am.freelancing-gods.com
Clone URL: git://github.com/sneakin/active-matchers.git
Search Repo:
README
== Active Matchers

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.

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.

=== Examples

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