Simple one-liner tests for common Rails functionality
Go to file
Prem Sichanugrist 44847c6a87 Add Appraisals to the project to handle testing against multiple Rails version
Note that we also bump RSpec to 2.6.1.beta1 because the incompatibility with Rails 3.1.0.rc1
2011-05-25 14:59:01 -04:00
features Add Appraisals to the project to handle testing against multiple Rails version 2011-05-25 14:59:01 -04:00
gemfiles Add Appraisals to the project to handle testing against multiple Rails version 2011-05-25 14:59:01 -04:00
lib Add Appraisals to the project to handle testing against multiple Rails version 2011-05-25 14:59:01 -04:00
spec Merge pull request #7 from chendry/master 2011-05-20 07:34:17 -07:00
.autotest fixed foreign key determination (http://tammer.lighthouseapp.com/projects/5807/tickets/8) 2008-01-21 14:30:10 +00:00
.gitignore Removed and gitignored Gemfile.lock and .bundle from the repository 2011-01-31 15:56:10 -05:00
Appraisals Add Appraisals to the project to handle testing against multiple Rails version 2011-05-25 14:59:01 -04:00
CONTRIBUTION_GUIDELINES.rdoc Cosmetic: Whitespace 2010-06-22 14:59:33 -04:00
Gemfile Add Appraisals to the project to handle testing against multiple Rails version 2011-05-25 14:59:01 -04:00
MIT-LICENSE converted to the MIT license 2007-11-26 15:18:29 +00:00
README.rdoc Merge pull request #6 from lukeledet/master 2011-05-20 07:28:48 -07:00
Rakefile Add Appraisals to the project to handle testing against multiple Rails version 2011-05-25 14:59:01 -04:00
shoulda-matchers.gemspec Add Appraisals to the project to handle testing against multiple Rails version 2011-05-25 14:59:01 -04:00

README.rdoc

= shoulda-matchers

{Official Documentation}[http://rubydoc.info/github/thoughtbot/shoulda-matchers/master/frames]

Test::Unit- and RSpec-compatible one-liners that test common Rails functionality.
These tests would otherwise be much longer, more complex, and error-prone.

Refer to the {shoulda}[https://github.com/thoughtbot/shoulda] gem if you want to know more
about using shoulda with Test::Unit.

=== ActiveRecord Matchers

Matchers to test associations:

  describe Post do
    it { should belong_to(:user) }
    it { should have_many(:tags).through(:taggings) }
  end

  describe User do
    it { should have_many(:posts) }
  end

=== ActiveModel Matchers

Matchers to test validations and mass assignments:

  describe Post do
    it { should validate_uniqueness_of(:title) }
    it { should validate_presence_of(:body).with_message(/wtf/) }
    it { should validate_presence_of(:title) }
    it { should validate_numericality_of(:user_id) }
  end

  describe User do
    it { should_not allow_value("blah").for(:email) }
    it { should allow_value("a@b.com").for(:email) }
    it { should ensure_inclusion_of(:age).in_range(1..100) }
    it { should_not allow_mass_assignment_of(:password) }
  end

=== ActionController Matchers

Matchers to test common patterns:

  describe PostsController, "#show" do
    context "for a fictional user" do
      before do
        get :show, :id => 1
      end

      it { should assign_to(:user) }
      it { should respond_with(:success) }
      it { should render_template(:show) }
      it { should_not set_the_flash }
    end
  end

= Installation

In Rails 3 and Bundler, add the following to your Gemfile:

  group :test do
    gem "rspec-rails"
    gem "shoulda-matchers"
  end

Shoulda will automatically include matchers into the appropriate example groups.

= Credits

Shoulda is maintained and funded by {thoughtbot}[http://thoughtbot.com/community].
Thank you to all the {contributors}[https://github.com/thoughtbot/shoulda-matchers/contributors].

= License

Shoulda is Copyright © 2006-2010 thoughtbot, inc.
It is free software, and may be redistributed under the terms specified in the MIT-LICENSE file.