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 +4 -4
- data/Gemfile +0 -9
- data/lhs.gemspec +2 -1
- data/lib/lhs/pagination/base.rb +1 -11
- data/lib/lhs/pagination/offset.rb +0 -4
- data/lib/lhs/pagination/page.rb +0 -4
- data/lib/lhs/pagination/start.rb +0 -4
- data/lib/lhs/test/stub.rb +9 -9
- data/lib/lhs/version.rb +1 -1
- data/spec/record/pagination_spec.rb +0 -22
- data/spec/stubs/all_spec.rb +21 -0
- metadata +27 -14
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 90bb5680db8b584ee9597cf6e3029014f05a56704de09cecb8f4b9788ff0bbdf
|
|
4
|
+
data.tar.gz: 1403e9844367ef3cc13c2987368d219b12db90700178b26bfacba1f3690346f7
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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'
|
data/lib/lhs/pagination/base.rb
CHANGED
|
@@ -23,13 +23,7 @@ module LHS::Pagination
|
|
|
23
23
|
alias count total
|
|
24
24
|
|
|
25
25
|
def limit
|
|
26
|
-
|
|
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
|
data/lib/lhs/pagination/page.rb
CHANGED
|
@@ -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
|
data/lib/lhs/pagination/start.rb
CHANGED
|
@@ -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
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
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
|
@@ -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
|
data/spec/stubs/all_spec.rb
CHANGED
|
@@ -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.
|
|
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-
|
|
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:
|
|
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: :
|
|
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:
|
|
70
|
+
name: capybara
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
|
73
73
|
- - ">="
|
|
74
74
|
- !ruby/object:Gem::Version
|
|
75
|
-
version:
|
|
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:
|
|
82
|
+
version: '0'
|
|
83
83
|
- !ruby/object:Gem::Dependency
|
|
84
|
-
name:
|
|
84
|
+
name: json
|
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
|
86
86
|
requirements:
|
|
87
87
|
- - ">="
|
|
88
88
|
- !ruby/object:Gem::Version
|
|
89
|
-
version:
|
|
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:
|
|
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:
|
|
544
|
+
version: '0'
|
|
531
545
|
requirements:
|
|
532
546
|
- Ruby >= 2.3.0
|
|
533
|
-
|
|
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
|