module Shoulda::Matchers::ActiveModel

Matchers for your active record models

These matchers will test most of the validations of ActiveModel::Validations.

describe User do
  it { should validate_presence_of(:name) }
  it { should validate_presence_of(:phone_number) }
  %w(abcd 1234).each do |value|
    it { should_not allow_value(value).for(:phone_number) }
  end
  it { should allow_value('(123) 456-7890').for(:phone_number) }
  it { should_not allow_mass_assignment_of(:password) }
  it { should allow_value('Activated', 'Pending').for(:status).strict }
  it { should_not allow_value('Amazing').for(:status).strict }
end

These tests work with the following model:

class User < ActiveRecord::Base

validates_presence_of :name
validates_presence_of :phone_number
validates_inclusion_of :status, :in => %w(Activated Pending), :strict => true
attr_accessible :name, :phone_number

end