lhs 5.6.5 → 5.6.6

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: c65a63aa10738241bdb3ba6c085025cee24281c2
4
- data.tar.gz: 5e2dbd3c4d0c7860059728ea694a399b6d53eec4
3
+ metadata.gz: 69913ab2a3b45766bc83f1c9bbe146dc8222ad3b
4
+ data.tar.gz: 12aca78a7334087c9c93fc42b338eb58de74c57b
5
5
  SHA512:
6
- metadata.gz: 37868d94b6f13f08fa2ef796b210e682e4f9162275b1a6770fa37b73984fd1718092dc7c799c81190d8cd74edb4885284ac043ebe33fdf2807cbaa4c91c59b7f
7
- data.tar.gz: fb80f7203c93908654728ba73df28ba159509904d3c665546f6874f73079b6fc6be6d53c909d390b9ae062c87fe52ca9bb8c76401139cd58bfe5963365be2572
6
+ metadata.gz: 829eb8c9a105d0aef36ebcb63878c038db3bbe8aa2fb7444aacdd0b534ddb0496c5e3f2464ea86977be03b1b6ad8c312c62b51cf54826b49fd8795b372f1ec2d
7
+ data.tar.gz: 0bb344b8a4ad023a8aa2deb125cde83bf381f340b3bcbd1bff68855fba7d86b151061a9fcf2887d9725369fa2515111a1715a3c77c2db9af389a3282321278f9
@@ -23,9 +23,9 @@ class LHS::Record
23
23
  batch_size = options[:batch_size] || LHS::Pagination::DEFAULT_LIMIT
24
24
  params = options[:params] || {}
25
25
  loop do # as suggested by Matz
26
- data = request(params: params.merge(limit: batch_size, offset: start))
27
- batch_size = data._raw[:limit]
28
- left = data._raw[:total].to_i - data._raw[:offset].to_i - data._raw[:limit].to_i
26
+ data = request(params: params.merge(limit_key => batch_size, pagination_key => start))
27
+ batch_size = data._raw[limit_key]
28
+ left = data._raw[total_key].to_i - data._raw[pagination_key].to_i - data._raw[limit_key].to_i
29
29
  yield new(data)
30
30
  break if left <= 0
31
31
  start += batch_size
@@ -1,3 +1,3 @@
1
1
  module LHS
2
- VERSION = "5.6.5"
2
+ VERSION = "5.6.6"
3
3
  end
@@ -5,13 +5,13 @@ describe LHS::Collection do
5
5
 
6
6
  let(:limit) { 100 }
7
7
 
8
- def api_response(ids, offset)
8
+ def api_response(ids, offset, options = {})
9
9
  records = ids.map { |i| { id: i } }
10
10
  {
11
- items: records,
12
- total: total,
13
- limit: limit,
14
- offset: offset
11
+ options.fetch(:items_key, :items) => records,
12
+ options.fetch(:total_key, :total) => total,
13
+ options.fetch(:limit_key, :limit) => limit,
14
+ options.fetch(:pagination_key, :offset) => offset
15
15
  }.to_json
16
16
  end
17
17
 
@@ -63,4 +63,31 @@ describe LHS::Collection do
63
63
  end
64
64
  end
65
65
  end
66
+
67
+ context 'configured pagination' do
68
+ before(:each) do
69
+ class Record < LHS::Record
70
+ endpoint ':datastore/:campaign_id/feedbacks'
71
+ endpoint ':datastore/feedbacks'
72
+ configuration items_key: 'docs', limit_key: 'size', pagination_key: 'start', pagination_strategy: 'start', total_key: 'totalResults'
73
+ end
74
+ end
75
+
76
+ let(:options) { { items_key: 'docs', limit_key: 'size', pagination_key: 'start', total_key: 'totalResults' } }
77
+
78
+ it 'capable to do batch processing with configured pagination' do
79
+ stub_request(:get, "#{datastore}/feedbacks?size=230&start=1").to_return(status: 200, body: api_response((1..100).to_a, 1, options))
80
+ stub_request(:get, "#{datastore}/feedbacks?size=100&start=101").to_return(status: 200, body: api_response((101..200).to_a, 101, options))
81
+ stub_request(:get, "#{datastore}/feedbacks?size=100&start=201").to_return(status: 200, body: api_response((201..300).to_a, 201, options))
82
+ stub_request(:get, "#{datastore}/feedbacks?size=100&start=301").to_return(status: 200, body: api_response((301..400).to_a, 301, options))
83
+ stub_request(:get, "#{datastore}/feedbacks?size=100&start=401").to_return(status: 200, body: api_response((401..total).to_a, 401, options))
84
+ length = 0
85
+ Record.find_in_batches(batch_size: 230) do |records|
86
+ length += records.length
87
+ expect(records).to be_kind_of Record
88
+ expect(records._proxy).to be_kind_of LHS::Collection
89
+ end
90
+ expect(length).to eq total
91
+ end
92
+ end
66
93
  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: 5.6.5
4
+ version: 5.6.6
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: 2016-06-15 00:00:00.000000000 Z
11
+ date: 2016-07-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lhc