lhs 7.2.5 → 7.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c375618ed280267c2a1dbf38604b1924c43fa6e4
4
- data.tar.gz: 88d0a5d78565d170db988070b4968dfe7dc9adcc
3
+ metadata.gz: af216b090a45a83dea5acd0a3af1492932999f59
4
+ data.tar.gz: a46a8f31fe3f31f577fcb97585c13f23739128da
5
5
  SHA512:
6
- metadata.gz: ecf2eb96d8f92288659c89fa838567ac4125929268ff5bb63fe2a4fd46fb7723808687f0c6deefad86aa8cd128574118211f8e3e0730ef4fbae05b84014fcd95
7
- data.tar.gz: bdb3fb946afc13ef8f726fbae6b1b32c2fb50be840c3fdd43bebca8812b954636ba6e150bd98b6b3c37bc94d5c9f418faa31aaa1c9bc8d57b0ebd8790d198c59
6
+ metadata.gz: ca258fd031bec87565cc8db528d7aeb6887719cba1bc96eb62b6a9ed09b3c70d0b3c9d99c92750bd187cf26ea70e1d381c7be641ee8c27e1fe772ef5eead1fcd
7
+ data.tar.gz: 863c29e31f101e9b8acb69d274998e48503d71176ac26bcd3001e18d6f05fce49daf0c85462fec705e12482b1589aedfaee8bc626056c62afea7f99e8caa21fd
data/README.md CHANGED
@@ -766,6 +766,15 @@ The kaminari’s page parameter is in params[:page]. For example, you can use ka
766
766
  = paginate @items
767
767
  ```
768
768
 
769
+ ### Pagination Links
770
+
771
+ When endpoints provide indicators for current page position with links (like `next` and `previous`), LHS provides some functionalities to interact/use those links/information:
772
+
773
+ `next?` Tells you if there is a next link or not.
774
+
775
+ `previous?` Tells you if there is a previous link or not.
776
+
777
+
769
778
  ## Automatic Detection of Collections
770
779
 
771
780
  How to configure endpoints for automatic collection detection?
@@ -9,7 +9,8 @@ class LHS::Collection < LHS::Proxy
9
9
 
10
10
  delegate :select, :length, :size, to: :_collection
11
11
  delegate :_record, :_raw, to: :_data
12
- delegate :limit, :count, :total, :limit, :offset, :current_page, :start, to: :_pagination
12
+ delegate :limit, :count, :total, :offset, :current_page, :start,
13
+ :next?, :previous?, to: :_pagination
13
14
 
14
15
  def _pagination
15
16
  _record.pagination(_data)
@@ -49,6 +49,14 @@ class LHS::Pagination
49
49
  total_pages
50
50
  end
51
51
 
52
+ def next?
53
+ data._raw[:next].present?
54
+ end
55
+
56
+ def previous?
57
+ data._raw[:previous].present?
58
+ end
59
+
52
60
  def prev_page
53
61
  current_page - 1
54
62
  end
@@ -1,3 +1,3 @@
1
1
  module LHS
2
- VERSION = "7.2.5"
2
+ VERSION = "7.3.0"
3
3
  end
@@ -0,0 +1,70 @@
1
+ require 'rails_helper'
2
+
3
+ describe LHS::Record do
4
+ context 'pagination links' do
5
+ before(:each) do
6
+ class Customer < LHS::Record
7
+ endpoint 'http://datastore/customer'
8
+ end
9
+ end
10
+
11
+ let!(:request) do
12
+ stub_request(:get, "http://datastore/customer#{query}")
13
+ .to_return(body: body)
14
+ end
15
+
16
+ let(:query) { "?name=#{name}&page=#{page}" }
17
+
18
+ let(:customers) do
19
+ Customer.where(name: name, page: page)
20
+ end
21
+
22
+ context 'next and previous link is present' do
23
+ let(:name) { 'Simpl' }
24
+ let(:page) { 2 }
25
+ let(:body) do
26
+ {
27
+ next: "http://datastore/customer?name=#{name}&page=3",
28
+ previous: "http://datastore/customer?name=#{name}&page=1",
29
+ items: [{ name: 'Simplificator' }]
30
+ }.to_json
31
+ end
32
+
33
+ it 'tells me that there is a next link' do
34
+ expect(customers.next?).to eq true
35
+ expect(customers.previous?).to eq true
36
+ end
37
+ end
38
+
39
+ context 'next link is present, previous is not' do
40
+ let(:name) { 'Simpl' }
41
+ let(:page) { 2 }
42
+ let(:body) do
43
+ {
44
+ next: "http://datastore/customer?name=#{name}&page=3",
45
+ items: [{ name: 'Simplificator' }]
46
+ }.to_json
47
+ end
48
+
49
+ it 'tells me that there is a next link' do
50
+ expect(customers.next?).to eq true
51
+ expect(customers.previous?).to eq false
52
+ end
53
+ end
54
+
55
+ context 'no next link and no previous link is present' do
56
+ let(:name) { 'Simplificator' }
57
+ let(:page) { 1 }
58
+ let(:body) do
59
+ {
60
+ items: [{ name: 'Simplificator' }]
61
+ }.to_json
62
+ end
63
+
64
+ it 'tells me that there is no next link' do
65
+ expect(customers.next?).to eq false
66
+ expect(customers.previous?).to eq false
67
+ end
68
+ end
69
+ end
70
+ 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: 7.2.5
4
+ version: 7.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - https://github.com/local-ch/lhs/graphs/contributors
@@ -335,6 +335,7 @@ files:
335
335
  - spec/record/options_spec.rb
336
336
  - spec/record/paginatable_collection_spec.rb
337
337
  - spec/record/pagination_chain_spec.rb
338
+ - spec/record/pagination_links_spec.rb
338
339
  - spec/record/pagination_spec.rb
339
340
  - spec/record/persisted_spec.rb
340
341
  - spec/record/references_spec.rb
@@ -487,6 +488,7 @@ test_files:
487
488
  - spec/record/options_spec.rb
488
489
  - spec/record/paginatable_collection_spec.rb
489
490
  - spec/record/pagination_chain_spec.rb
491
+ - spec/record/pagination_links_spec.rb
490
492
  - spec/record/pagination_spec.rb
491
493
  - spec/record/persisted_spec.rb
492
494
  - spec/record/references_spec.rb