lhs 1.6.1 → 2.0.0

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
  SHA1:
3
- metadata.gz: 803f2217b1ffc03a2bc4616749a30488f3f22cec
4
- data.tar.gz: b85d7cb23ca19ede404500f728361bb12ad3b6f1
3
+ metadata.gz: 911fecf1a1b1e1d5a011b185b4d6ba8fb63f7445
4
+ data.tar.gz: 24b82515d4cfe87227d949afe0cd23048962bce7
5
5
  SHA512:
6
- metadata.gz: 53f23df937f8d461e4b9d416f6e8ceb2d846fccc8896ec4005e136bc3a7c16ebe03c202e702a0e4af563f024f403852d18be21a1a0f64ea317ba24da1636e6f4
7
- data.tar.gz: 236dff73bd2c94a5bb3cd7d01989c5ff255ea81e68dc6670809d27e9f5c2ade9499a67eb7191b3d6ccaf5b3010c50c9163837c237d7c737df0af52f3efc719aa
6
+ metadata.gz: 43a4a6f1605313a18ce9f26e00aafa80e11530d99c2f52e3fab6bf26fd40a4e249af9ab87f854e76a4b335df26940deb27e1a5ad8bbdc39481bb9a0aa80ca46e
7
+ data.tar.gz: 66e736a905f730e2216fe676051f16436437c45e7ca1f393c0169e13204d511b3f44f3d8c2b66ef66f5fbd9024cf7046fd13f0dbd7920213538667ee13948bd4
@@ -39,6 +39,7 @@ You can persist changes like you would usually do with `save`.
39
39
  ## Update
40
40
 
41
41
  `update` will return false if persisting fails. `update!` instead will an raise exception.
42
+ Update always updates the data of the local object first, before it tries to sync with an endpoint.
42
43
 
43
44
  ```ruby
44
45
  feedback = Feedback.find('1z-5r1fkaj')
@@ -15,9 +15,14 @@ class LHS::Item < LHS::Proxy
15
15
 
16
16
  def update!(params)
17
17
  service = _data._root._service
18
- data = _data._raw.dup
19
- data = service.instance.request(method: :post, url: href, body: data.merge(params).to_json, headers: {'Content-Type' => 'application/json'})
20
- self._data.merge_raw!(data)
18
+ _data.merge_raw!(LHS::Data.new(params))
19
+ response_data = service.instance.request(
20
+ method: :post,
21
+ url: href,
22
+ body: _data.to_json,
23
+ headers: {'Content-Type' => 'application/json'}
24
+ )
25
+ _data.merge_raw!(response_data)
21
26
  true
22
27
  end
23
28
  end
@@ -33,34 +33,6 @@ class LHS::Data
33
33
  _root._service
34
34
  end
35
35
 
36
- def current_page
37
- offset + 1
38
- end
39
-
40
- def first_page
41
- 1
42
- end
43
-
44
- def last_page
45
- total_pages
46
- end
47
-
48
- def prev_page
49
- current_page - 1
50
- end
51
-
52
- def next_page
53
- current_page + 1
54
- end
55
-
56
- def limit_value
57
- limit
58
- end
59
-
60
- def total_pages
61
- total / limit
62
- end
63
-
64
36
  protected
65
37
 
66
38
  # Use existing mapping to provide data
@@ -81,6 +81,6 @@ class LHS::Item < LHS::Proxy
81
81
  end
82
82
 
83
83
  def date_time_regex
84
- /(?<date>\d{4}-\d{2}-\d{2})?(?<time>T\d{2}:\d{2}:\d{2}(\.\d*.\d{2}:\d{2})*)?/
84
+ /(?<date>\d{4}-\d{2}-\d{2})?(?<time>T\d{2}:\d{2}:\d{2}\.\d*.\d{2}:\d{2})?/
85
85
  end
86
86
  end
@@ -1,3 +1,3 @@
1
1
  module LHS
2
- VERSION = "1.6.1"
2
+ VERSION = "2.0.0"
3
3
  end
@@ -41,16 +41,4 @@ describe LHS::Data do
41
41
  expect(item.valid_from).to be_kind_of Date
42
42
  end
43
43
  end
44
-
45
- context 'different date time formats' do
46
- let(:item) do
47
- item = data[0]
48
- item._raw[:created_date] = '2016-07-09T13:45:00+00:00'
49
- item
50
- end
51
-
52
- it 'returns TimeWithZone if string can be parsed as date_time' do
53
- expect(item.created_date).to be_kind_of ActiveSupport::TimeWithZone
54
- end
55
- end
56
44
  end
@@ -38,10 +38,18 @@ describe LHS::Item do
38
38
 
39
39
  it 'merges reponse data with object' do
40
40
  stub_request(:post, item.href)
41
- .to_return(status: 200, body: item._raw.merge(likes: 'Banana').to_json)
41
+ .to_return(status: 200, body: item._raw.merge(likes: 'Banana').to_json)
42
42
  item.update(name: 'Steve')
43
43
  expect(item.likes).to eq 'Banana'
44
44
  end
45
+
46
+ it 'updates local version of an object even if BE request fails' do
47
+ stub_request(:post, item.href)
48
+ .to_return(status: 400, body: item._raw.merge(likes: 'Banana').to_json)
49
+ item.update(name: 'Andrea')
50
+ expect(item.name).to eq 'Andrea'
51
+ expect(item.likes).to_not eq 'Banana'
52
+ end
45
53
  end
46
54
 
47
55
  context 'update!' do
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: 1.6.1
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - local.ch
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-23 00:00:00.000000000 Z
11
+ date: 2015-12-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lhc
@@ -167,7 +167,6 @@ files:
167
167
  - spec/data/collection_spec.rb
168
168
  - spec/data/item_spec.rb
169
169
  - spec/data/merge_spec.rb
170
- - spec/data/pagination_spec.rb
171
170
  - spec/data/raw_spec.rb
172
171
  - spec/data/respond_to_spec.rb
173
172
  - spec/data/root_spec.rb
@@ -280,7 +279,6 @@ test_files:
280
279
  - spec/data/collection_spec.rb
281
280
  - spec/data/item_spec.rb
282
281
  - spec/data/merge_spec.rb
283
- - spec/data/pagination_spec.rb
284
282
  - spec/data/raw_spec.rb
285
283
  - spec/data/respond_to_spec.rb
286
284
  - spec/data/root_spec.rb
@@ -1,60 +0,0 @@
1
- require 'rails_helper'
2
-
3
- describe LHS::Data do
4
- context 'pagination' do
5
- let(:datastore) { 'http://local.ch/v2' }
6
- let(:record) { Feedback.where(entry_id: 1) }
7
- let(:total) { 200 }
8
- let(:total_pages) { total / limit }
9
- let(:current_page) { offset + 1 }
10
- let(:prev_page) { current_page - 1 }
11
- let(:next_page) { current_page + 1 }
12
- let(:offset) { 0 }
13
- let(:limit) { 10 }
14
- let(:body_json) do
15
- {
16
- items: [],
17
- total: total,
18
- offset: offset,
19
- limit: limit
20
- }.to_json
21
- end
22
-
23
- before(:each) do
24
- LHC.config.placeholder('datastore', datastore)
25
- class Feedback < LHS::Service
26
- endpoint ':datastore/feedbacks'
27
- end
28
- stub_request(:get, 'http://local.ch/v2/feedbacks?entry_id=1')
29
- .to_return(body: body_json)
30
- end
31
-
32
- it 'responds to limit_value' do
33
- expect(record.limit_value).to eq(limit)
34
- end
35
-
36
- it 'responds to total_pages' do
37
- expect(record.total_pages).to eq(total_pages)
38
- end
39
-
40
- it 'responds to current_page' do
41
- expect(record.current_page).to eq(current_page)
42
- end
43
-
44
- it 'responds to first_page' do
45
- expect(record.first_page).to eq(1)
46
- end
47
-
48
- it 'responds to last_page' do
49
- expect(record.last_page).to eq(total_pages)
50
- end
51
-
52
- it 'responds to prev_page' do
53
- expect(record.prev_page).to eq(prev_page)
54
- end
55
-
56
- it 'responds to next_page' do
57
- expect(record.next_page).to eq(next_page)
58
- end
59
- end
60
- end