mirror of
https://github.com/thoughtbot/shoulda-matchers.git
synced 2022-11-09 12:01:38 -05:00
Simple one-liner tests for common Rails functionality
.bundle | ||
features | ||
lib | ||
spec | ||
.autotest | ||
.gitignore | ||
CONTRIBUTION_GUIDELINES.rdoc | ||
Gemfile | ||
Gemfile.lock | ||
MIT-LICENSE | ||
Rakefile | ||
README.rdoc | ||
shoulda-matchers.gemspec |
= shoulda-matchers Test::Unit- and RSpec-compatible one-liners that test common Rails functionality. These tests would otherwise be much longer, more complex, and error-prone. === ActiveRecord Matchers Matchers to test associations and validations: class PostTest < Test::Unit::TestCase should belong_to(:user) should have_many(:tags).through(:taggings) should validate_uniqueness_of(:title) should validate_presence_of(:body).with_message(/wtf/) should validate_presence_of(:title) should validate_numericality_of(:user_id) end class UserTest < Test::Unit::TestCase should have_many(:posts) should_not allow_value("blah").for(:email) should_not allow_value("b lah").for(:email) should allow_value("a@b.com").for(:email) should allow_value("asdf@asdf.com").for(:email) should ensure_inclusion_of(:email).in_range(1..100) should ensure_inclusion_of(:age).in_range(1..100) should_not allow_mass_assignment_of(:password) end === Controller Matchers Matchers to test common patterns: class PostsControllerTest < ActionController::TestCase context "on GET to :show for first record" do setup do get :show, :id => 1 end should assign_to(:user) should respond_with(:success) should render_template(:show) should_not set_the_flash should "do something else really cool" do assert_equal 1, assigns(:user).id end end end = Installation In Rails 3 and Bundler, add the following to your Gemfile: group :test do gem "shoulda-matchers" gem "rspec-rails" end Shoulda will automatically include matchers into the appropriate example groups. = Credits Shoulda is maintained and funded by {thoughtbot}[http://thoughtbot.com/community]. = 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.