lhs 20.1.3.pre.paginationfix.3 → 20.1.4

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
  SHA256:
3
- metadata.gz: b9284aed364b9d0b32bd9341399c4c8309aa3438c4d6e073b89a7d4f3fcaab21
4
- data.tar.gz: d3c50128acf732d233b61d2930f22a38d48102dca92fb13ab2f2f88a03108767
3
+ metadata.gz: 90bb5680db8b584ee9597cf6e3029014f05a56704de09cecb8f4b9788ff0bbdf
4
+ data.tar.gz: 1403e9844367ef3cc13c2987368d219b12db90700178b26bfacba1f3690346f7
5
5
  SHA512:
6
- metadata.gz: f75419036051feb2e65f155a59dfedf1364f2fb23f2f97bab4615fce6152ae8158f249a20f97308a4e8284c70180de920d5dc97ab13fbfd8f8876d2888aee7aa
7
- data.tar.gz: 248054e48c2a757db5575c982f17356038d9d63d475f24fbd320c2bb1732481d7ff9ccc3c70b4baa50bef5c21701bec1ac2d0916ed917fdab30f58737d7472cf
6
+ metadata.gz: 5c8c37a17da7d96fb7f397425dcf74440e3a3d3a562eecf142992546b58c07cefa7527166b8ba26131e3e025ca823b3d78c3f98a1d8cb0c974394e9887b623c6
7
+ data.tar.gz: 187cf1be11baf4d8c32cb9521e4eeb283152b5b026b06e67d2e548deb649c36957fc6fa91b2d5d577e45de90382faf4fed80dd999cdfad161ae647753df28a94
data/Gemfile CHANGED
@@ -1,13 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  source 'https://rubygems.org/'
4
-
5
- # Declare your gem's dependencies in lhs.gemspec.
6
- # Bundler will treat runtime dependencies like base dependencies, and
7
- # development dependencies will be added by default to the :development group.
8
4
  gemspec
9
-
10
- # Declare any dependencies that are still in development here instead of in
11
- # your gemspec. These might include edge Rails or gems from your path or
12
- # Git. Remember to move these dependencies to your gemspec before releasing
13
- # your gem to rubygems.org.
data/lhs.gemspec CHANGED
@@ -25,10 +25,10 @@ Gem::Specification.new do |s|
25
25
  s.add_dependency 'activemodel'
26
26
  s.add_dependency 'activesupport', '>= 4.2.11'
27
27
  s.add_dependency 'lhc', '~> 10.2'
28
+ s.add_dependency 'local_uri'
28
29
 
29
30
  s.add_development_dependency 'capybara'
30
31
  s.add_development_dependency 'json', '>= 1.8.2'
31
- s.add_development_dependency 'local_uri'
32
32
  s.add_development_dependency 'pry'
33
33
  s.add_development_dependency 'pry-byebug'
34
34
  s.add_development_dependency 'rails', '>= 4.2.11'
@@ -36,6 +36,7 @@ Gem::Specification.new do |s|
36
36
  s.add_development_dependency 'rspec-rails', '>= 3.7.0'
37
37
  s.add_development_dependency 'rubocop', '~> 0.57.1'
38
38
  s.add_development_dependency 'rubocop-rspec', '~> 1.26.0'
39
+ s.add_development_dependency 'sprockets', '< 4'
39
40
  s.add_development_dependency 'webmock'
40
41
 
41
42
  s.license = 'GPL-3'
@@ -23,13 +23,7 @@ module LHS::Pagination
23
23
  alias count total
24
24
 
25
25
  def limit
26
- response_limit = data._raw.dig(*_record.limit_key(:body))
27
- requested_limit = data._request.params.dig(*_record.limit_key(:params)).to_i if data&._request&.params.present?
28
- if requested_limit && response_limit && last_page?(response_limit, requested_limit) && response_limit < requested_limit
29
- requested_limit
30
- else
31
- response_limit || DEFAULT_LIMIT
32
- end
26
+ data._raw.dig(*_record.limit_key(:body)) || DEFAULT_LIMIT
33
27
  end
34
28
 
35
29
  def offset
@@ -53,10 +47,6 @@ module LHS::Pagination
53
47
  # should be implemented in subclass (optional)
54
48
  end
55
49
 
56
- def last_page?
57
- raise 'to be implemented in subclass'
58
- end
59
-
60
50
  def first_page
61
51
  1
62
52
  end
@@ -12,10 +12,6 @@ class LHS::Pagination::Offset < LHS::Pagination::Base
12
12
  self.class.next_offset(offset, limit, step)
13
13
  end
14
14
 
15
- def last_page?(response_limit, requested_limit)
16
- offset + response_limit >= total
17
- end
18
-
19
15
  def self.page_to_offset(page, limit = DEFAULT_LIMIT)
20
16
  (page.to_i - 1) * limit.to_i
21
17
  end
@@ -8,10 +8,6 @@ class LHS::Pagination::Page < LHS::Pagination::Base
8
8
  offset
9
9
  end
10
10
 
11
- def last_page?(response_limit, requested_limit)
12
- (offset-1 * requested_limit) + response_limit >= total
13
- end
14
-
15
11
  def next_offset(step = 1)
16
12
  self.class.next_offset(current_page, limit, step)
17
13
  end
@@ -12,10 +12,6 @@ class LHS::Pagination::Start < LHS::Pagination::Base
12
12
  self.class.next_offset(offset, limit, step)
13
13
  end
14
14
 
15
- def last_page?(response_limit, requested_limit)
16
- offset + response_limit > total
17
- end
18
-
19
15
  def self.page_to_offset(page, limit = DEFAULT_LIMIT)
20
16
  (page.to_i - 1) * limit.to_i + 1
21
17
  end
data/lib/lhs/test/stub.rb CHANGED
@@ -13,15 +13,15 @@ module LHS
13
13
  uri = LocalUri::URI.new(url)
14
14
  uri.query.merge!(limit: DEFAULT_LIMIT)
15
15
  uri.query.merge!(offset: DEFAULT_LIMIT * index) unless index.zero?
16
- stub_request(:get, uri.to_s)
17
- .with(options)
18
- .to_return(
19
- body: {
20
- items: batch,
21
- offset: index * DEFAULT_LIMIT,
22
- total: items.length
23
- }.to_json
24
- )
16
+ request_stub = stub_request(:get, uri.to_s)
17
+ request_stub.with(options) if options.present?
18
+ request_stub.to_return(
19
+ body: {
20
+ items: batch,
21
+ offset: index * DEFAULT_LIMIT,
22
+ total: items.length
23
+ }.to_json
24
+ )
25
25
  end
26
26
  end
27
27
  end
data/lib/lhs/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LHS
4
- VERSION = '20.1.3.pre.paginationfix.3'
4
+ VERSION = '20.1.4'
5
5
  end
@@ -67,27 +67,5 @@ describe LHS::Record do
67
67
  expect(record.total_pages).to eq(28)
68
68
  end
69
69
  end
70
-
71
- context 'total_pages calculation for last page' do
72
- before do
73
- class Search < LHS::Record
74
- configuration pagination_strategy: :start, total_key: :totalResult, pagination_key: :start, limit_key: { body: :size, parameter: :limit }
75
- endpoint 'https://search'
76
- end
77
- end
78
-
79
- it 'provides the correct number of total pages for the last page' do
80
- stub_request(:get, "https://search/?limit=10&start=11")
81
- .to_return(body: {
82
- size: 4,
83
- totalResult: 14,
84
- start: 11,
85
- items: [11,12,13,14]
86
- }.to_json)
87
-
88
- results = Search.page(2).limit(10).fetch
89
- expect(results.total_pages).to eq 2
90
- end
91
- end
92
70
  end
93
71
  end
@@ -25,4 +25,25 @@ describe LHS do
25
25
  expect(records.length).to eq 200
26
26
  expect(records.first.name).to eq 'Item 0'
27
27
  end
28
+
29
+ context 'without conditions' do
30
+
31
+ before do
32
+ class Record < LHS::Record
33
+ endpoint 'https://records'
34
+ end
35
+
36
+ LHS.stub.all(
37
+ 'https://records',
38
+ 200.times.map { |index| { name: "Item #{index}" } }
39
+ )
40
+ end
41
+
42
+ it 'stubs all requests without a webmock "with"' do
43
+ records = Record.all.fetch
44
+ expect(records.count).to eq 200
45
+ expect(records.length).to eq 200
46
+ expect(records.first.name).to eq 'Item 0'
47
+ end
48
+ end
28
49
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lhs
3
3
  version: !ruby/object:Gem::Version
4
- version: 20.1.3.pre.paginationfix.3
4
+ version: 20.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - https://github.com/local-ch/lhs/graphs/contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-09-17 00:00:00.000000000 Z
11
+ date: 2019-11-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -53,13 +53,13 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '10.2'
55
55
  - !ruby/object:Gem::Dependency
56
- name: capybara
56
+ name: local_uri
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
- type: :development
62
+ type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
@@ -67,33 +67,33 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: json
70
+ name: capybara
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: 1.8.2
75
+ version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: 1.8.2
82
+ version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: local_uri
84
+ name: json
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: 1.8.2
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: 1.8.2
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: pry
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -192,6 +192,20 @@ dependencies:
192
192
  - - "~>"
193
193
  - !ruby/object:Gem::Version
194
194
  version: 1.26.0
195
+ - !ruby/object:Gem::Dependency
196
+ name: sprockets
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - "<"
200
+ - !ruby/object:Gem::Version
201
+ version: '4'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - "<"
207
+ - !ruby/object:Gem::Version
208
+ version: '4'
195
209
  - !ruby/object:Gem::Dependency
196
210
  name: webmock
197
211
  requirement: !ruby/object:Gem::Requirement
@@ -525,13 +539,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
525
539
  version: 2.3.0
526
540
  required_rubygems_version: !ruby/object:Gem::Requirement
527
541
  requirements:
528
- - - ">"
542
+ - - ">="
529
543
  - !ruby/object:Gem::Version
530
- version: 1.3.1
544
+ version: '0'
531
545
  requirements:
532
546
  - Ruby >= 2.3.0
533
- rubyforge_project:
534
- rubygems_version: 2.7.8
547
+ rubygems_version: 3.0.6
535
548
  signing_key:
536
549
  specification_version: 4
537
550
  summary: 'REST services accelerator: Rails gem providing an easy, active-record-like