her-kaminari 0.0.1 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8ffa99110a7233d0838f61953d48c94981debe48
4
- data.tar.gz: d3bde921ef86247057bd5d1de920e58988d208f0
3
+ metadata.gz: 694afb1827a0f8f8bd4f5469e7473d5a291795ca
4
+ data.tar.gz: a434facbcd31256d3c0409fa8c376797d6ad4c11
5
5
  SHA512:
6
- metadata.gz: c74a8d242f69d2ce6f2662d05acc7f3b0a9211270353197ee2221a29ff60c07547a1fcf80cfecc36a96cf8399b34c14711619238aad05b94c5060e752edd81d9
7
- data.tar.gz: 54867a070c7a429fee9a1a74135b7d5473b4cf178f523d96c69279d28c814fcaf83c4e4026915a9991d90160e15c230f1b3fb5ac95debf4589547aca444476f6
6
+ metadata.gz: b0a5bfe54b4c9147f8d39fb65b6cc6ba968a586a234d9c82cd367756beba18449f9b9a506e44e9766a19efc8d92f52b99fd9212a0ed406f1153c98fbeabb7049
7
+ data.tar.gz: 26024559865abc3da6695d9c717638fe11eb7aa8d207b1f402287205d3888296cdca5941f278ba13df0a6ca0c70630cda73ce26be65b29f03f961b0c58fe7337
data/.coveralls.yml ADDED
@@ -0,0 +1 @@
1
+ service_name: travis-ci
data/.travis.yml ADDED
@@ -0,0 +1,17 @@
1
+ language: ruby
2
+ cache: bundler
3
+ sudo: false
4
+
5
+ rvm:
6
+ - 2.1.1
7
+ - ruby-head
8
+
9
+ script: 'bundle exec rake'
10
+
11
+ notifications:
12
+ email:
13
+ recipients:
14
+ - daniel.blancorojas@gmail.com
15
+ on_failure: change
16
+ on_success: never
17
+
data/README.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # Her::Kaminari
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/her-kaminari.svg)](http://badge.fury.io/rb/her-kaminari)
4
+ [![Build Status](https://travis-ci.org/DanielBlanco/her-kaminari.svg?branch=db%2Ftravis-coverall)](https://travis-ci.org/DanielBlanco/her-kaminari)
5
+ [![Code Climate](https://codeclimate.com/github/DanielBlanco/her-kaminari/badges/gpa.svg)](https://codeclimate.com/github/DanielBlanco/her-kaminari)
6
+ [![Coverage Status](https://coveralls.io/repos/DanielBlanco/her-kaminari/badge.svg)](https://coveralls.io/r/DanielBlanco/her-kaminari)
7
+
3
8
  Makes [Her](https://github.com/remiprev/her "ORM that maps REST resources to Ruby objects") aware of APIs that return pagination headers like [grape-kaminari](https://github.com/monterail/grape-kaminari "kaminari paginator integration for grape API framework") gem.
4
9
 
5
10
  Her models can now query these APIs like any other kaminari model:
data/her-kaminari.gemspec CHANGED
@@ -21,6 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_runtime_dependency 'her', '~> 0.7', '>= 0.7.2'
22
22
  spec.add_runtime_dependency 'kaminari', '~> 0.16.1', '>= 0.16.1'
23
23
 
24
+ spec.add_development_dependency 'coveralls'
24
25
  spec.add_development_dependency 'bundler', '~> 1.7'
25
26
  spec.add_development_dependency 'rake', '~> 10.0'
26
27
  spec.add_development_dependency 'minitest', '~> 5.0'
@@ -13,6 +13,7 @@ module Her
13
13
  scope :per, ->(per_page) { where(per_page: per_page || 50) }
14
14
  end
15
15
  base.extend(ClassMethods)
16
+ base::Relation.include(Her::Kaminari::RelationExtension)
16
17
  end
17
18
 
18
19
  module ClassMethods
@@ -0,0 +1,38 @@
1
+ # -*- encoding : utf-8 -*-
2
+ # lib/her/kaminari/relation_extension.rb
3
+ module Her
4
+ module Kaminari
5
+ module RelationExtension
6
+ def self.included(base)
7
+ base.class_eval do
8
+ # Iterates through each page.
9
+ #
10
+ # Useful for stitching together an array of all records, across every
11
+ # page. For example:
12
+ #
13
+ # users = User.all.each_page.flat_map(&:to_a)
14
+ #
15
+ # If there are 3 total pages, it would result in these HTTP requests:
16
+ #
17
+ # GET /v1/users
18
+ # GET /v1/users?page=2
19
+ # GET /v1/users?page=3
20
+ #
21
+ # ...and this array of users (25 records per page):
22
+ #
23
+ # users.count
24
+ # # => 75
25
+ #
26
+ # With the exception of the first one, pages are lazily fetched.
27
+ def each_page
28
+ return to_enum(:each_page) unless block_given?
29
+
30
+ (current_page..total_pages).each do |number|
31
+ yield (number == current_page) ? self : page(number)
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -1,6 +1,6 @@
1
1
  # -*- encoding : utf-8 -*-
2
2
  module Her
3
3
  module Kaminari
4
- VERSION = "0.0.1"
4
+ VERSION = "0.0.3"
5
5
  end
6
6
  end
data/lib/her/kaminari.rb CHANGED
@@ -11,3 +11,4 @@ end
11
11
  require 'her/kaminari/collection'
12
12
  require 'her/kaminari/header_parser'
13
13
  require 'her/kaminari/version'
14
+ require 'her/kaminari/relation_extension'
@@ -0,0 +1,24 @@
1
+ # -*- encoding : utf-8 -*-
2
+ # test/lib/her/kaminari/relation_extension_test.rb
3
+ require 'test_helper'
4
+
5
+ describe Her::Kaminari::RelationExtension do
6
+ before do
7
+ @model = Class.new do
8
+ include Her::Model
9
+ include Her::Kaminari::Collection
10
+
11
+ root_element :champion
12
+ end
13
+ end
14
+
15
+ describe '.each_page' do
16
+ before { @subject = @model.all.each_page }
17
+
18
+ it 'yields each page' do
19
+ @subject.count.must_equal 2
20
+ @subject.map(&:current_page).must_equal [1, 2]
21
+ @subject.map(&:count).must_equal [5, 4]
22
+ end
23
+ end
24
+ end
data/test/test_helper.rb CHANGED
@@ -2,6 +2,9 @@
2
2
  # test/test_helper.rb
3
3
  ENV['RACK_ENV'] = 'test'
4
4
 
5
+ require 'coveralls'
6
+ Coveralls.wear!
7
+
5
8
  require 'minitest/spec'
6
9
  require 'minitest/autorun'
7
10
  require 'minitest/pride'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: her-kaminari
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Blanco Rojas, Artur Hebda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-10-27 00:00:00.000000000 Z
11
+ date: 2015-03-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: her
@@ -50,6 +50,20 @@ dependencies:
50
50
  - - ">="
51
51
  - !ruby/object:Gem::Version
52
52
  version: 0.16.1
53
+ - !ruby/object:Gem::Dependency
54
+ name: coveralls
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ type: :development
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
53
67
  - !ruby/object:Gem::Dependency
54
68
  name: bundler
55
69
  requirement: !ruby/object:Gem::Requirement
@@ -179,7 +193,9 @@ executables: []
179
193
  extensions: []
180
194
  extra_rdoc_files: []
181
195
  files:
196
+ - ".coveralls.yml"
182
197
  - ".gitignore"
198
+ - ".travis.yml"
183
199
  - Gemfile
184
200
  - Guardfile
185
201
  - LICENSE
@@ -190,9 +206,11 @@ files:
190
206
  - lib/her/kaminari.rb
191
207
  - lib/her/kaminari/collection.rb
192
208
  - lib/her/kaminari/header_parser.rb
209
+ - lib/her/kaminari/relation_extension.rb
193
210
  - lib/her/kaminari/version.rb
194
211
  - test/lib/her/kaminari/collection_test.rb
195
212
  - test/lib/her/kaminari/header_parser_test.rb
213
+ - test/lib/her/kaminari/relation_extension_test.rb
196
214
  - test/lib/her/kaminari_test.rb
197
215
  - test/support/.keep
198
216
  - test/support/her_api.rb
@@ -224,7 +242,9 @@ summary: Kaminari pagination for Her models.
224
242
  test_files:
225
243
  - test/lib/her/kaminari/collection_test.rb
226
244
  - test/lib/her/kaminari/header_parser_test.rb
245
+ - test/lib/her/kaminari/relation_extension_test.rb
227
246
  - test/lib/her/kaminari_test.rb
228
247
  - test/support/.keep
229
248
  - test/support/her_api.rb
230
249
  - test/test_helper.rb
250
+ has_rdoc: