lhs 4.2.0 → 4.2.1

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: 9054af3b33bec8e693c84c84e44ba80845e4525c
4
- data.tar.gz: 6ebd3acdaa73985d3f1845c92fe3cf57803c604f
3
+ metadata.gz: 97ecd71fe1e08636cbe1a790d4bd8c0787facbdd
4
+ data.tar.gz: 932f5f517996f854e619f12dbaaea58f21205c20
5
5
  SHA512:
6
- metadata.gz: 51165a2c4256deb6cf82f445c8a597b7c1830a40edc1004239c32b34bf629bd5e81417590351e0f88159c5a60aebaf68f79199042ccffb8b80a078096879fe1e
7
- data.tar.gz: ee0fe6d834cf6194276852903e7a33215fba61eb6b0b1715bea3da2b9a2c8478c465c32c8c13fb9371131c907d09d506bb7e20efcce5e32cb438498d7aba6d80
6
+ metadata.gz: b1768124ad016dd853334bd431d267cf45857b68d2964695b4ce0f0475f516bb01d40b3c137a4b2d93fb8d7868ccd29a830e6401953c5a4a979769feb47cd22d
7
+ data.tar.gz: b6351fc5cfee078fc8c3f64b911548e10ab72a197650f4838a666286715764a457bec28d5710229882553050bfcd84342aad3b4160fb42730adcd0d29cda4212
@@ -16,12 +16,16 @@ class LHS::Record
16
16
  def all(params = {})
17
17
  limit = params[limit_key] || DEFAULT_LIMIT
18
18
  data = request(params: params.merge(limit_key => limit))
19
- request_all_the_rest(data, params) if data._raw.is_a?(Hash) && data._raw[total_key]
19
+ request_all_the_rest(data, params) if paginated?(data._raw)
20
20
  data._record.new(LHS::Data.new(data, nil, self))
21
21
  end
22
22
 
23
23
  private
24
24
 
25
+ def paginated?(raw)
26
+ raw.is_a?(Hash) && raw[total_key] && raw[pagination_key]
27
+ end
28
+
25
29
  def all_items_from(data)
26
30
  if data._raw.is_a?(Array)
27
31
  data._raw
@@ -15,25 +15,25 @@ class LHS::Record
15
15
  end
16
16
 
17
17
  def items_key
18
- @configuration.try(:[], :items_key) || :items
18
+ (@configuration.try(:[], :items_key) || :items).to_sym
19
19
  end
20
20
 
21
21
  def limit_key
22
- @configuration.try(:[], :limit_key) || :limit
22
+ (@configuration.try(:[], :limit_key) || :limit).to_sym
23
23
  end
24
24
 
25
25
  def total_key
26
- @configuration.try(:[], :total_key) || :total
26
+ (@configuration.try(:[], :total_key) || :total).to_sym
27
27
  end
28
28
 
29
29
  # Key used for determine current page
30
30
  def pagination_key
31
- @configuration.try(:[], :pagination_key) || :offset
31
+ (@configuration.try(:[], :pagination_key) || :offset).to_sym
32
32
  end
33
33
 
34
34
  # Strategy used for calculationg next pages and navigate pages
35
35
  def pagination_strategy
36
- @configuration.try(:[], :pagination_strategy) || :offset
36
+ (@configuration.try(:[], :pagination_strategy) || :offset).to_sym
37
37
  end
38
38
  end
39
39
  end
@@ -22,7 +22,7 @@ class Pagination
22
22
  end
23
23
 
24
24
  def offset
25
- data._raw[_record.pagination_key.to_sym]
25
+ data._raw[_record.pagination_key.to_sym].presence || 0
26
26
  end
27
27
  alias current_page offset
28
28
  alias start offset
@@ -1,3 +1,3 @@
1
1
  module LHS
2
- VERSION = "4.2.0"
2
+ VERSION = "4.2.1"
3
3
  end
@@ -0,0 +1,31 @@
1
+ require 'rails_helper'
2
+
3
+ describe LHS::Record do
4
+ let(:offset) { 0 }
5
+ let(:data_hash) { { items: 98.times.map { { foo: 'bar' } }, total: 98, offset: offset, limit: 10 } }
6
+
7
+ let(:data) do
8
+ LHS::Data.new(data_hash, nil, Record)
9
+ end
10
+
11
+ let(:pagination) { OffsetPagination.new(data) }
12
+
13
+ before(:each) do
14
+ class Record < LHS::Record
15
+ endpoint ':datastore/v2/data'
16
+ end
17
+ end
18
+
19
+ it 'responds to pages_left' do
20
+ expect(pagination.pages_left).to eq(9)
21
+ end
22
+
23
+ context 'when there is no offset' do
24
+ let(:offset) { nil }
25
+
26
+ it 'responds to pages_left' do
27
+ # TODO i now set the nil offset to zero. Is this ok or wrong?
28
+ expect(pagination.pages_left).to eq(9)
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,23 @@
1
+ require 'rails_helper'
2
+
3
+ describe LHS::Record do
4
+ let(:datastore) do
5
+ 'http://datastore/v2'
6
+ end
7
+
8
+ before(:each) do
9
+ LHC.config.placeholder('datastore', datastore)
10
+ class Record < LHS::Record
11
+ endpoint ':datastore/feedbacks'
12
+ end
13
+ end
14
+
15
+ context 'all' do
16
+ it 'is querying endpoint without pagination when using all' do
17
+ stub_request(:get, "#{datastore}/feedbacks?limit=100").to_return(status: 200, body: { items: 300.times.map { { foo: 'bar' } }, total: 300 }.to_json)
18
+ records = Record.all
19
+ expect(records).to be_kind_of Record
20
+ expect(records.size).to eq(300)
21
+ end
22
+ end
23
+ end
@@ -96,7 +96,7 @@ describe LHS::Record do
96
96
  expect(all.last).to eq 223
97
97
  end
98
98
 
99
- it 'also fetches all when there is not meta information for limit' do
99
+ it 'also fetches all when there is no meta information for limit' do
100
100
  stub_request(:get, "#{datastore}/feedbacks?limit=100")
101
101
  .to_return(
102
102
  status: 200,
@@ -151,7 +151,7 @@ describe LHS::Record do
151
151
  expect(all.last).to eq 300
152
152
  end
153
153
 
154
- it 'also fetches all when there is not meta information for limit' do
154
+ it 'also fetches all when there is no meta information for limit' do
155
155
  stub_request(:get, "#{datastore}/feedbacks?limit=100")
156
156
  .to_return(
157
157
  status: 200,
@@ -229,7 +229,7 @@ describe LHS::Record do
229
229
  expect(all.last).to eq 300
230
230
  end
231
231
 
232
- it 'also fetches all when there is not meta information for limit' do
232
+ it 'also fetches all when there is no meta information for limit' do
233
233
  stub_request(:get, "#{datastore}/feedbacks?limit=100")
234
234
  .to_return(
235
235
  status: 200,
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: 4.2.0
4
+ version: 4.2.1
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-04-19 00:00:00.000000000 Z
11
+ date: 2016-04-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lhc
@@ -273,8 +273,10 @@ files:
273
273
  - spec/item/setter_spec.rb
274
274
  - spec/item/update_spec.rb
275
275
  - spec/item/validation_spec.rb
276
+ - spec/pagination/pages_left_spec.rb
276
277
  - spec/proxy/load_spec.rb
277
278
  - spec/rails_helper.rb
279
+ - spec/record/all_spec.rb
278
280
  - spec/record/build_spec.rb
279
281
  - spec/record/create_spec.rb
280
282
  - spec/record/creation_failed_spec.rb
@@ -328,7 +330,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
328
330
  requirements:
329
331
  - Ruby >= 1.9.2
330
332
  rubyforge_project:
331
- rubygems_version: 2.2.2
333
+ rubygems_version: 2.4.8
332
334
  signing_key:
333
335
  specification_version: 4
334
336
  summary: Rails gem providing an easy, active-record-like interface for http json services
@@ -398,8 +400,10 @@ test_files:
398
400
  - spec/item/setter_spec.rb
399
401
  - spec/item/update_spec.rb
400
402
  - spec/item/validation_spec.rb
403
+ - spec/pagination/pages_left_spec.rb
401
404
  - spec/proxy/load_spec.rb
402
405
  - spec/rails_helper.rb
406
+ - spec/record/all_spec.rb
403
407
  - spec/record/build_spec.rb
404
408
  - spec/record/create_spec.rb
405
409
  - spec/record/creation_failed_spec.rb