lhs 3.0.5 → 3.1.0

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: 1e701d1bc5519eb463bc09d535a131bac92fa3e8
4
- data.tar.gz: 76c44ef06141cb08c4c6d2864848fd027d4174ae
3
+ metadata.gz: 4b4d8da57cb83a4edce0d5a3ced7289528fc3aeb
4
+ data.tar.gz: cd8ca6b468931ce8a677ee0ec686a04c05798d75
5
5
  SHA512:
6
- metadata.gz: 9d39a7da359c587861981788a7a56e9b61deb3736d2f10882762061ee7535f3864cd48acbfe0400ed95dd1eef0eb81fc51cc045cc59d5c944f8d9d0e0ceffa91
7
- data.tar.gz: 0bfd7041d113c1ed1ee8da5321ee9b8ec5d64850225ae7a2020079d1ae8ecbe177bf3df2fe92f85a49dab90f36800f61d851856e2ff6d385e9323cf1a53f968c
6
+ metadata.gz: 4f4f26c5cc042bf73e69c0ff021e5ce5b32d4fabf5afe8b692b5a6ececad255759aa86eda2d78a21031f0bca8481769bce809ebf45535c8eab478b8fdbea37e0
7
+ data.tar.gz: 9672198becdb370e7775f8a922e613ee1ee7f28936f13672b936619e582c0cec3127bec258250e2dd14fa24db439e25d02af25b2a662d34cffd81e7faf1e2f58
data/README.md CHANGED
@@ -331,3 +331,19 @@ Feedback.where(limit: 50, offset: 51)
331
331
  `total` provides total amount of items (even if paginated).
332
332
  `limit` provides amount of items per page.
333
333
  `offset` provides how many items where skipped to start the current page.
334
+
335
+ ## Partial Kaminari support
336
+
337
+ LHS implements an interface that makes it partially working with Kaminari.
338
+
339
+ For example, you can use kaminari to render paginations based on LHS Records:
340
+
341
+ ```ruby
342
+ # controller
343
+ @items = Record.where(offset: offset, limit: limit)
344
+ ```
345
+
346
+ ```ruby
347
+ # view
348
+ = paginate @items
349
+ ```
@@ -0,0 +1,36 @@
1
+ require 'active_support'
2
+
3
+ class LHS::Record
4
+
5
+ module Pagination
6
+ extend ActiveSupport::Concern
7
+
8
+ def current_page
9
+ offset + 1
10
+ end
11
+
12
+ def first_page
13
+ 1
14
+ end
15
+
16
+ def last_page
17
+ total_pages
18
+ end
19
+
20
+ def prev_page
21
+ current_page - 1
22
+ end
23
+
24
+ def next_page
25
+ current_page + 1
26
+ end
27
+
28
+ def limit_value
29
+ limit
30
+ end
31
+
32
+ def total_pages
33
+ total / limit
34
+ end
35
+ end
36
+ end
@@ -13,6 +13,7 @@ class LHS::Record
13
13
  include Includes
14
14
  include Request
15
15
  include Where
16
+ include Pagination
16
17
 
17
18
  delegate :_proxy, to: :_data
18
19
 
@@ -1,3 +1,3 @@
1
1
  module LHS
2
- VERSION = "3.0.5"
2
+ VERSION = "3.1.0"
3
3
  end
@@ -0,0 +1,60 @@
1
+ require 'rails_helper'
2
+
3
+ describe LHS::Record do
4
+ context 'pagination' do
5
+ let(:datastore) { 'http://local.ch/v2' }
6
+ let(:record) { Feedback.where(entry_id: 1) }
7
+ let(:total) { 200 }
8
+ let(:total_pages) { total / limit }
9
+ let(:current_page) { offset + 1 }
10
+ let(:prev_page) { current_page - 1 }
11
+ let(:next_page) { current_page + 1 }
12
+ let(:offset) { 0 }
13
+ let(:limit) { 10 }
14
+ let(:body_json) do
15
+ {
16
+ items: [],
17
+ total: total,
18
+ offset: offset,
19
+ limit: limit
20
+ }.to_json
21
+ end
22
+
23
+ before(:each) do
24
+ LHC.config.placeholder('datastore', datastore)
25
+ class Feedback < LHS::Record
26
+ endpoint ':datastore/feedbacks'
27
+ end
28
+ stub_request(:get, 'http://local.ch/v2/feedbacks?entry_id=1')
29
+ .and_return(body: body_json)
30
+ end
31
+
32
+ it 'responds to limit_value' do
33
+ expect(record.limit_value).to eq(limit)
34
+ end
35
+
36
+ it 'responds to total_pages' do
37
+ expect(record.total_pages).to eq(total_pages)
38
+ end
39
+
40
+ it 'responds to current_page' do
41
+ expect(record.current_page).to eq(current_page)
42
+ end
43
+
44
+ it 'responds to first_page' do
45
+ expect(record.first_page).to eq(1)
46
+ end
47
+
48
+ it 'responds to last_page' do
49
+ expect(record.last_page).to eq(total_pages)
50
+ end
51
+
52
+ it 'responds to prev_page' do
53
+ expect(record.prev_page).to eq(prev_page)
54
+ end
55
+
56
+ it 'responds to next_page' do
57
+ expect(record.next_page).to eq(next_page)
58
+ end
59
+ end
60
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lhs
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.5
4
+ version: 3.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - https://github.com/local-ch/lhs/graphs/contributors
@@ -165,6 +165,7 @@ files:
165
165
  - lib/lhs/concerns/record/includes.rb
166
166
  - lib/lhs/concerns/record/mapping.rb
167
167
  - lib/lhs/concerns/record/model.rb
168
+ - lib/lhs/concerns/record/pagination.rb
168
169
  - lib/lhs/concerns/record/request.rb
169
170
  - lib/lhs/concerns/record/where.rb
170
171
  - lib/lhs/data.rb
@@ -257,6 +258,7 @@ files:
257
258
  - spec/record/mapping_spec.rb
258
259
  - spec/record/model_name_spec.rb
259
260
  - spec/record/new_spec.rb
261
+ - spec/record/pagination_spec.rb
260
262
  - spec/record/request_spec.rb
261
263
  - spec/record/select_spec.rb
262
264
  - spec/record/to_json_spec.rb
@@ -376,6 +378,7 @@ test_files:
376
378
  - spec/record/mapping_spec.rb
377
379
  - spec/record/model_name_spec.rb
378
380
  - spec/record/new_spec.rb
381
+ - spec/record/pagination_spec.rb
379
382
  - spec/record/request_spec.rb
380
383
  - spec/record/select_spec.rb
381
384
  - spec/record/to_json_spec.rb