Skip to content

Commit

Permalink
Merge pull request #81 from magnusfiorepalm/mfp/pass_through_will_pag…
Browse files Browse the repository at this point in the history
…inate_options

Adding will_paginate support for total_entries being passed in as an option
  • Loading branch information
davidcelis committed May 18, 2017
2 parents dbe1d99 + 54580dc commit 89f89ca
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 27 deletions.
2 changes: 1 addition & 1 deletion lib/api-pagination.rb
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ def paginate_with_will_paginate(collection, options)
if defined?(Sequel::Dataset) && collection.kind_of?(Sequel::Dataset)
collection.paginate(options[:page], options[:per_page])
else
collection.paginate(:page => options[:page], :per_page => options[:per_page])
collection.paginate(options)
end
end

Expand Down
78 changes: 52 additions & 26 deletions spec/api-pagination_spec.rb
Original file line number Diff line number Diff line change
@@ -1,39 +1,65 @@
require 'spec_helper'

describe ApiPagination do
let(:collection) { (1..100).to_a }
let(:paginate_array_options) { { total_count: 1000 } }
let(:collection) {(1..100).to_a}
let(:paginate_array_options) {{ total_count: 1000 }}

context 'Using kaminari' do
before do
ApiPagination.config.paginator = :kaminari
end
describe "#paginate" do
context 'Using kaminari' do
before do
ApiPagination.config.paginator = :kaminari
end

after do
ApiPagination.config.paginator = ENV['PAGINATOR'].to_sym
end
after do
ApiPagination.config.paginator = ENV['PAGINATOR'].to_sym
end

it 'should accept paginate_array_options option' do
expect(Kaminari).to receive(:paginate_array)
.with(collection, paginate_array_options)
.and_call_original

ApiPagination.paginate(
collection,
{
per_page: 30,
paginate_array_options: paginate_array_options
}
)
end

it 'should accept paginate_array_options option' do
expect(Kaminari).to receive(:paginate_array)
.with(collection, paginate_array_options)
.and_call_original

ApiPagination.paginate(
collection,
{
per_page: 30,
paginate_array_options: paginate_array_options
}
)
describe '.pages_from' do
subject {described_class.pages_from collection}

context 'on empty collection' do
let(:collection) {ApiPagination.paginate [], page: 1}

it {is_expected.to be_empty}
end
end
end

describe '.pages_from' do
subject { described_class.pages_from collection }
context 'Using will_paginate' do
before do
ApiPagination.config.paginator = :will_paginate
end

context 'on empty collection' do
let(:collection) { ApiPagination.paginate [], page: 1 }
after do
ApiPagination.config.paginator = ENV['PAGINATOR'].to_sym
end

context 'passing in total_entries in options' do
it 'should set total_entries using the passed in value' do
paginated_collection = ApiPagination.paginate(collection, total_entries: 3000)
expect(paginated_collection.total_entries).to eq(3000)
end
end

it { is_expected.to be_empty }
context 'passing in collection only' do
it 'should set total_entries using the size of the collection ' do
paginated_collection = ApiPagination.paginate(collection)
expect(paginated_collection.total_entries).to eq(100)
end
end
end
end
Expand Down

0 comments on commit 89f89ca

Please sign in to comment.