Project
Reverse Dependencies for shoulda
The projects listed here declare shoulda as a runtime or development dependency
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
Activity
0.0
social_engine
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
Activity
0.0
Add social media icons to your Rails 3 using CSS sprites or images
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
0.0
Simple tool that growls new questions from Stack Overflow. Supports filtering by tags.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
0.0
Solicit reviewers for your github pull requests on Slack
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
Activity
0.0
Simple Ruby library for expiring Varnish caches.
It currently relies on my own fork of Typhoeus, and that's not available as a gem...
So this is pretty much unusable. Just throwing it up here as an example until the
fixes I need get into Typhoeus::Easy
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
0.0
Somatsu is a web app with its Rack middleware permits to manage rails apps installationsadding multi database support.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
Activity
0.0
Downloads some nice mp3's to listen to for when your writing real code. first time for me in parsing/nokogiri
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
0.0
reusable menu for navigation and modification or hierarchical categories
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
Activity
0.0
Sort your mp3s into folders
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
Activity
0.0
Rails IDE from Tokak Studio
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
Activity
0.0
Format code with spaces
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
Activity
0.0
Keep your tests DRY. This makes some methods available to avoid repeating yourself during testing
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
0.0
Simple Push Notification Server written with Sinatra and Sequel(Sqlite3)
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
Activity
0.0
Determines the name and version of the browser currently making a request. I forked this because gemcutter did not appear to have the latest version of the gem.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
0.0
This gem provides a convenient Ruby wrapper for the Spreedly Subscriptions API.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
Activity
0.0
Spree Essential Press was designed with spree_essentials in mind but can be used without.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
0.0
"These things aren't gonna scale themselves" -a foolish man
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
Activity
0.0
A helper gem that attaches fingerprint for static assets (js/css) using sprockets in rails 3.0
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
0.0
A gem with some common tasks and code generation tools for users of FlashPunk.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
Activity