README in remarkable_rails-3.1.8 vs README in remarkable_rails-3.1.9

- old
+ new

@@ -1,13 +1,13 @@ -= Remarkable Rails - -Remarkable Rails is a collection of matchers to Rails. This package has some -ActionController matchers and soon some ActionView matchers. - += Remarkable Rails + +Remarkable Rails is a collection of matchers to Rails. This package has some +ActionController matchers and soon some ActionView matchers. + Whenever using the Remarkable Rails gem, it will automatically add your ActiveRecord -matchers. So just one line is needed to install both: - +matchers. So just one line is needed to install both: + sudo gem install remarkable_rails If you are using Rails 2.3, you need to have this configuration on your config/environments/test.rb: @@ -16,85 +16,85 @@ config.gem "remarkable_rails", :lib => false And then require remarkable inside your spec_helper.rb, after "spec/rails": require 'spec/rails' - require 'remarkable_rails' - -== Matchers & Macros - -The supported matchers and macros are: - - assign_to, filter_params, render_with_layout, respond_with, - respond_with_content_type, route, set_session and set_the_flash matchers. - -In Remarkable 3.0, we also ported and extended redirect to and render template -from rspec rails matchers to provide I18n. You can also do: - - render_template 'edit', :layout => 'default' - respond_with 404, :content_type => Mime::XML, :body => /Not found/ - -== Macro stubs - -Another cool feature in Remarkable 3.0 is macro stubs, which makes your mocks -and stubs DRY and easier to maintain. An rspec default scaffold would be: - - describe TasksController do - def mock_task(stubs={}) - @task ||= mock_model(Task, stubs) - end - - describe “responding to #POST create” do - it "exposes a newly created task as @task" do - Task.should_receive(:new).with({'these' => 'params'}). - and_return(mock_task(:save => true)) - post :create, :task => {:these => 'params'} - assigns[:task].should equal(mock_task) - end - - it "redirects to the created task" do - Task.stub!(:new).and_return(mock_task(:save => true)) - post :create, :task => {} - response.should redirect_to(task_url(mock_task)) - end - end - end - -An equivalent in remarkable would be: - - 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 => task_proc, :returns => true - - should_assign_to :task, :with => task_proc - should_redirect_to { task_url(task_proc) } - end - end - + require 'remarkable_rails' + +== Matchers & Macros + +The supported matchers and macros are: + + assign_to, filter_params, render_with_layout, respond_with, + respond_with_content_type, route, set_session and set_the_flash matchers. + +In Remarkable 3.0, we also ported and extended redirect to and render template +from rspec rails matchers to provide I18n. You can also do: + + render_template 'edit', :layout => 'default' + respond_with 404, :content_type => Mime::XML, :body => /Not found/ + +== Macro stubs + +Another cool feature in Remarkable 3.0 is macro stubs, which makes your mocks +and stubs DRY and easier to maintain. An rspec default scaffold would be: + + describe TasksController do + def mock_task(stubs={}) + @task ||= mock_model(Task, stubs) + end + + describe “responding to #POST create” do + it "exposes a newly created task as @task" do + Task.should_receive(:new).with({'these' => 'params'}). + and_return(mock_task(:save => true)) + post :create, :task => {:these => 'params'} + assigns[:task].should equal(mock_task) + end + + it "redirects to the created task" do + Task.stub!(:new).and_return(mock_task(:save => true)) + post :create, :task => {} + response.should redirect_to(task_url(mock_task)) + end + end + end + +An equivalent in remarkable would be: + + 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 => task_proc, :returns => true + + should_assign_to :task, :with => task_proc + should_redirect_to { task_url(task_proc) } + end + end + It automatically performs the action before running each macro. It executes the expects as expectations (:should_receive), but you can supply :with_stubs => true -if you want it to be executed with stubs. - -There are also params and mime methods: - - describe TasksController - params :project_id => 42 - mime Mime::HTML - - describe :get => :show, :id => 37 do - should_assign_to :project, :task - - describe Mime::XML do - should_assign_to :project, :task - end - end - end - +if you want it to be executed with stubs. + +There are also params and mime methods: + + describe TasksController + params :project_id => 42 + mime Mime::HTML + + describe :get => :show, :id => 37 do + should_assign_to :project, :task + + describe Mime::XML do + should_assign_to :project, :task + end + end + end + And much more. Be sure to check macro stubs documentation. - + == Rails plugin developers Remarkable automatically loads files at the remarkable directory on your plugins and frozen gems if RAILS_ROOT is defined. The lookup happens like this: