Compare projects
Project comparisons allow you to view any selection of projects side by side just like they're shown on regular categories or in search results. You can try out an example or start yourself by adding a library to the comparison via the input below. You can also easily share your current comparison with others by sending the URL of the current page.
0.0
{<img src="https://secure.travis-ci.org/socialcast/socialcast-shoulda-ext.png?branch=master" alt="Build Status" />}[http://travis-ci.org/socialcast/socialcast-shoulda-ext]
= Socialcast Shoulda Extensions
Adds new matchers and functionality to the shoulda test library
= Installation
In your Gemfile:
  group :test do
    gem 'socialcast_shoulda_ext', :git => 'git@github.com:socialcast/socialcast-shoulda-ext.git', :require => 'shoulda_ext'
  end
  
If you want to include the trigger_callbacks matcher, also add the following to your test helper:
  ShouldaExt::Matchers::TriggerCallbackMatcher.attach_active_record_callback_hooks!
= Matchers
== RecordCountChangeMatcher
Test if the count for a model has changed, and by how much.  Requires the context_with_matcher_before_hooks patch, which is included by default.
Provides the following matcher methods:
- create_record(klass_or_symbol)
  Alias for change_record_count.for(klass_or_symbol).by(1)
- create_records(klass_or_symbol, amount)
  Alias for change_record_count.for(klass_or_symbol).by(amount)
- destroy_record(klass_or_symbol)
  Alias for change_record_count.for(klass_or_symbol).by(-1)
- destroy_records(klass_or_symbol, amount) 
  Alias for change_record_count.for(klass_or_symbol).by(-amount)
- change_record_count
  Tests the difference in record count before and after the current setup/subject block
  Can be used with the follow methods:
  - for(klass_or_symbol)
    Provides the class which the test is being performed on.  Can be a constant or a symbol
  - by(amount)
    Provides an expected difference for the number of records for the specified class.
    Excluding this number will allow the matcher to check for any difference
Examples:
  context "creating a blog article" do
    context "with good parameters" do
      setup do
        post :create, :blog => {:title => 'my blog post', :body => 'Ipsum lorem...'}
      end
      should create_record :blog
    end
    context "without a body" do
      setup do
        post :create, :blog => {:title => 'my blog post' }
      end
      should_not create_record Blog
    end
  end
  
== RespondWithJson
Check if the controller's response is json
   
Examples:
  context ":index.json" do
    setup do
      get :index, :format => 'json'
    end
    # Just check to see that the response was json
    should respond_with_json  
    # Evaluate the hash produced by the json yourself
    should respond_with_json { |json| json.first['blog']['title'] == 'blog post 1'}
  
    # Provide an exact match
    should respond_with_json.exactly(['blog' => {'id' => 1, 'title' => 'blog post 1'}])
    # Provide an exact match with a block
    should response_with_json.exactly{ |json| JSON.parse(Blog.all.to_json)}
  end
 
  context ":index.html" do
    setup do
      get :index
    end
 
    # or the negation
    should_not respond_with_json
  end
== TriggerCallbackMatcher
Test if create, update, destroy, or save callbacks were triggered.
Requires running
ShouldaExt::Matchers::TriggerCallbackMatcher.attach_active_record_callback_hooks!
in your test suite in order to work properly.
Examples:
  context "doing nothing to a record" do
    subject { Blog.new :title => 'blog title' }
    should_not trigger_callbacks
  end
  context "creating a record" do
    subject { Blog.create! :title => 'blog title' }
    should trigger_callbacks.for :create
    should_not trigger_callbacks.for :update, :destroy
  end
= Integrations
Currently only integrates with test/unit.  RSpec support to come.
= Shoulda Extensions
== ContextWithMatcherBeforeHooks
Adds the ability to define a 'before' method on any method which will be run before each context's setup/subject block.  Used by RecordCountChangeMatcher to record the number of records before the tested operation takes place.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
 Activity