README.md in kaminari-rspec-0.14.1.b0 vs README.md in kaminari-rspec-0.14.1.b1

- old
+ new

@@ -1,70 +1,78 @@ -Kaminari Rspec Library -========================= +# Kaminari Rspec Library +[![Gem Version](https://badge.fury.io/rb/kaminari-rspec.png)](http://badge.fury.io/rb/kaminari-rspec) +[![Build Status](https://travis-ci.org/nessche/kaminari-rspec.png)](https://travis-ci.org/nessche/kaminari-rspec) + + `kaminari-rspec` is a ruby gem that aims at simplifying writing the specs for views where Kaminari is used for pagination -Installing ----------- +## Installing + Simply install the gem to your system -`gem install kaminari-rspec` + gem install kaminari-rspec or if you are using Bundler add it to your gemspec file and run `bundle install`. -Gem Versioning --------------- +## Gem Versioning The gem version reflects the kaminari version that is supports. Please notice that this gem is maintained in my spare time so delays occur between the release of a new Kaminari version and the release of a new version of this gem. Feel free to fork this repo and update the version and the code as needed. -Rendering views with RSpec's render_view ----------------------------------------- +## Rendering views with RSpec's render_view If you are rendering the views from your controller spec using render_views AND you are mocking the data returned from the db with something along the lines of - `Model.stub_chain(:order, :page, :per).and_return([model_mock])` + Model.stub_chain(:order, :page, :per).and_return([model_mock]) you may want to also stub the methods needed by the pagination partials, in order to do that, just add the following to your `spec_helper` - `config.include KaminariRspec::TestHelpers, :type => :controller` + config.include KaminariRspec::TestHelpers, :type => :controller and then modify your controller spec to look like - `Model.stub_chain(:order, :page, :per).and_return(stub_pagination([model_mock]))` + Model.stub_chain(:order, :page, :per).and_return(stub_pagination([model_mock])) the stubs will return the values needed to set the pagination as being on the first and only page. -If specific pagination values are needed they can be defined using a hash +### Pagination options - `stub_pagination(mocked_result, :total_count => 50, :current_page => 3, :per_page => 10)` +If specific pagination values are needed they can be defined using a hash. The following values are supported: -will create the same pagination links as a total count of 50 elements are available, with 10 -elements per page and page 3 being the current_page. Notice that `current_page` is anyway always -set such that it respects the values passed in `total_count` and `per_page`, i.e. if you pass a -total count of 95 and a per page value of 10, current page will be capped to 10 +* `:total_count` : the total number of elements to be paginated. It defaults to `resource.length` if resource is a collection, +otherwise to 1 +* `:per_page` : the amount of elements per page, defaults to 25 +* `:current_page` : the current page of the pagination. Defaults to 1. Notice that `current_page` is anyway always + set such that it respects the values passed in `total_count` and `per_page`, i.e. if you pass a + total count of 95 and a per page value of 10, current page will be capped to 10 -Detecting mocking framework ---------------------------- +As an example + stub_pagination(resource, :total_count => 50, :current_page => 3, :per_page => 10) + +will create the pagination links for a total count of 50 elements, with 10 +elements per page and page 3 being the current_page. + +## Detecting mocking framework + If you are using RSpec >= 2.5.2 there is no need to explicitly pass the mocking framework you are using to the stub_pagination method, as it is automatically detected by the TestHelpers. For earlier versions you are required to explicitly use the same string you would pass to `RSpec.configuration.mock_with` , so the actual method call is - `stub_pagination(mocked_result, :mock => :rspec, :total_count => 50, :current_page => 3, :per_page => 10)` + stub_pagination(mocked_result, :mock => :rspec, :total_count => 50, :current_page => 3, :per_page => 10) -Default values --------------- +### Supported mocking frameworks -The TestHelpers will also try to guess values so that you don't need to explicitly pass them all. -* `:per_page` will default to 25 -* `:current_page` will default to 1 -* `:total_count` will default to 1 if the object passed as resource is not a collection, otherwise it will - invoke get the value from resource.length +Currently supported mocking frameworks are: +* RSpec's built-in doubles +* RR (Double Ruby) +* Mocha +* Flexmock