Switch branches/tags
Find file
Fetching contributors…
Cannot retrieve contributors at this time
106 lines (69 sloc) 3.47 KB
* Allow should route(:get, :action => :show, :id => 1).to("/projects/1") and
should route(:get, "/projects/1").from(:action => :show, :id => 1) syntax.
* Plugin files are automatically loaded [#86]
* Allow should_route to use environment configuration [#88] (thanks to Lawrence Pit)
* Allow mock model class to be set using :as option.
* [DEPRECATION] By default all matchers perform expectations, use with_stubs => true
if you want otherwise.
* [DEPRECATION] mock_models now creates model_proc instead of mock_model.
Altough this won't fire any deprecation warning, all the documentation was changed.
* assert_valid_keys on expects
* mock_models now creates a second class method to be used on the index action [#71]
In other words, mock_models :project will create:
def self.mock_project
proc { mock_project }
# This was added to be used on index actions
def self.mock_projects
proc { [ mock_project ] }
def mock_project(stubs={})
@project ||= mock_model(Project, stubs)
* Allow multiple args to be given to :with in expects. If you need to verify that
an array is being sent, you need to send an array inside another array [#70]
* Allow procs or blocks to be given to respond_with_body and respond_with :body [#67]
* Allow ordered to be given to macro stubs as option [#66]
# v3.1
* Ensure set_cookies and set_session work with arrays [#55]
* Added set_cookies matcher [#51]
* Add a helper to declare that a XmlHttpRequest should be performed:
describe :get => :show do
* Macro stubs now supports blocks too [#50]
expects :human_attribute_name, :on => Project, :with => :title do |attr|
* :to option in set_session and set_the_flash now accepts Regexp [#46]
* render_template now works with partials [#43]
* Added to support for routing example group (inside spec/routing) [#26]
# v3.0
* redirect_to and render_template were ported from rspec-rails to
remarkable to provide I18n. The second was also extended to deal with :with,
:layout and :content_type as options.
render_with_layout, render_without_layout delegate their logic to render_template
so they share the same options.
respond_with_content_type and respond_wity_body delegate their logic to
respond_with matcher, so they also share the same options.
:set_the_flash was also redesign to inherit from :set_session, providing a
consistent API.
* remarkable_rails now ships with a new feature, called macro stubs.
This allows you to declare just once your mocks and/or expectations, and each
matcher will know how to deal with properly. A TasksController could have your
specs for a create action rewritten like this:
describe TasksController do
mock_models :task
describe :post => :create, :task => { :these => 'params' } do
expects :new, :on => Task, with => {'these' => 'params'}, :returns => task_proc
expects :save, :on => mock_task, :returns => true
should_assign_to :task, :with => task_proc
should_redirect_to { task_url(mock_task) }
It automatically performs the action before running each macro. In assign_to,
it executes the expects as expectations (:should_receive), and in redirect_to
it executes the expects as stubs (:stub!), just as above.
For more options, information and configuration, check macro stubs documentation.
# v2.x
* Added assign_to, filter_params, render_with_layout, respond_with
respond_with_content_type, route, set_session and set_the_flash matchers.