lhs 20.1.3.pre.paginationfix.3 → 20.1.4

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
  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