lhs 19.3.1 → 19.4.0

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: 669cef0e159dd9cf27896026b327a188039ccf72c5174f3f6deb2d7b76145e19
4
- data.tar.gz: 37dab1444e3a13ac30dd1550b3c23615dbabfc180d6c2341ed4650cc2c07d6cc
3
+ metadata.gz: eec02ca16e6732bb24ad68d18099937f48734dd000326fdfa07cd0365d3a0622
4
+ data.tar.gz: 2e327627fdd24ae4588499376847512ff76d514f90666cbb9115bdcecae0403a
5
5
  SHA512:
6
- metadata.gz: 942329f656407706aff6d47913c5dde509faa4947cc368d9fd45255dd048724c98cf5747564e74e0a2ee2cfff6a9755f2e6a5bd73cc35f486faa5bfb777d8fab
7
- data.tar.gz: 2e3ea61a601b67d8018a9c9d7e0c5ba480c11185662703b316c11134eb4aa9c5e4feccbb12bda0af84d9a293d331e2fa9a2766e08166152e5bcabf654d8ac666
6
+ metadata.gz: b31fd1517f82df7b7d789888c2f878a9a9ce2f6ac6686b2193210f9a3c5d156f705852bac48974ae495dca7b6da374cec44dd3f0188cdea26891237c459465ea
7
+ data.tar.gz: cf095950ddf9e8e00369f73051b8350dc86e5d3922679d50121983f9414bd343eae85d3e1d44e5a768daa2ba4b2eb24bdbe33737230ecdd5d63ec9cf6b3cf52d
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'active_support'
4
+
5
+ class LHS::Record
6
+
7
+ module Merge
8
+ extend ActiveSupport::Concern
9
+
10
+ def merge(other)
11
+ _record.new(_data.to_h.merge(other.to_h))
12
+ end
13
+
14
+ def merge!(other)
15
+ _data._raw.merge!(other.to_h)
16
+ end
17
+
18
+ def deep_merge(other)
19
+ _record.new(_data.to_h.deep_merge(other.to_h))
20
+ end
21
+
22
+ def deep_merge!(other)
23
+ _data._raw.deep_merge!(other.to_h)
24
+ end
25
+ end
26
+ end
@@ -27,6 +27,8 @@ class LHS::Record
27
27
  'lhs/concerns/record/last'
28
28
  autoload :Mapping,
29
29
  'lhs/concerns/record/mapping'
30
+ autoload :Merge,
31
+ 'lhs/concerns/record/merge'
30
32
  autoload :Model,
31
33
  'lhs/concerns/record/model'
32
34
  autoload :Pagination,
@@ -63,6 +65,7 @@ class LHS::Record
63
65
  include Last
64
66
  include LHS::Inspect
65
67
  include Mapping
68
+ include Merge
66
69
  include Model
67
70
  include Pagination
68
71
  include Request
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LHS
4
- VERSION = '19.3.1'
4
+ VERSION = '19.4.0'
5
5
  end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails_helper'
4
+
5
+ describe LHS::Record do
6
+ context 'merge' do
7
+
8
+ before do
9
+ class Change < LHS::Record
10
+ endpoint 'https://onboarding/places/{id}/change'
11
+ end
12
+ end
13
+
14
+ it 'merges a given hash' do
15
+ stub_request(:get, "https://onboarding/places/1/change")
16
+ .to_return(body: { entry: { name: 'Steve', address: 'Zurich' }, products: ['LBP'] }.to_json)
17
+ record = Change.find(1)
18
+ record.merge!(entry: { name: 'Paul' })
19
+ expect(record.entry.name).to eq 'Paul'
20
+ expect(record.entry.address).to eq nil
21
+ expect(record.products.to_a).to eq ['LBP']
22
+ end
23
+
24
+ it 'merges! a given hash' do
25
+ stub_request(:get, "https://onboarding/places/1/change")
26
+ .to_return(body: { entry: { name: 'Steve', address: 'Zurich' }, products: ['LBP'] }.to_json)
27
+ record = Change.find(1)
28
+ new_record = record.merge(entry: { name: 'Paul' })
29
+ expect(new_record.entry.name).to eq 'Paul'
30
+ expect(new_record.entry.address).to eq nil
31
+ expect(new_record.products.to_a).to eq ['LBP']
32
+ expect(record.entry.name).to eq 'Steve'
33
+ expect(record.entry.address).to eq 'Zurich'
34
+ expect(record.products.to_a).to eq ['LBP']
35
+ end
36
+
37
+ it 'deep_merge! a given hash' do
38
+ stub_request(:get, "https://onboarding/places/1/change")
39
+ .to_return(body: { entry: { name: 'Steve', address: 'Zurich' } }.to_json)
40
+ record = Change.find(1)
41
+ record.deep_merge!(entry: { name: 'Paul' })
42
+ expect(record.entry.name).to eq 'Paul'
43
+ expect(record.entry.address).to eq 'Zurich'
44
+ end
45
+
46
+ it 'deep_merge a given hash' do
47
+ stub_request(:get, "https://onboarding/places/1/change")
48
+ .to_return(body: { entry: { name: 'Steve', address: 'Zurich' } }.to_json)
49
+ record = Change.find(1)
50
+ new_record = record.deep_merge(entry: { name: 'Paul' })
51
+ expect(new_record.entry.name).to eq 'Paul'
52
+ expect(new_record.entry.address).to eq 'Zurich'
53
+ expect(record.entry.name).to eq 'Steve'
54
+ end
55
+ end
56
+ 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: 19.3.1
4
+ version: 19.4.0
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-05-23 00:00:00.000000000 Z
11
+ date: 2019-06-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -251,6 +251,7 @@ files:
251
251
  - lib/lhs/concerns/record/first.rb
252
252
  - lib/lhs/concerns/record/last.rb
253
253
  - lib/lhs/concerns/record/mapping.rb
254
+ - lib/lhs/concerns/record/merge.rb
254
255
  - lib/lhs/concerns/record/model.rb
255
256
  - lib/lhs/concerns/record/pagination.rb
256
257
  - lib/lhs/concerns/record/relations.rb
@@ -410,6 +411,7 @@ files:
410
411
  - spec/record/find_in_parallel_spec.rb
411
412
  - spec/record/find_spec.rb
412
413
  - spec/record/first_spec.rb
414
+ - spec/record/force_merge_spec.rb
413
415
  - spec/record/handle_includes_errors_spec.rb
414
416
  - spec/record/has_many_spec.rb
415
417
  - spec/record/has_one_spec.rb
@@ -613,6 +615,7 @@ test_files:
613
615
  - spec/record/find_in_parallel_spec.rb
614
616
  - spec/record/find_spec.rb
615
617
  - spec/record/first_spec.rb
618
+ - spec/record/force_merge_spec.rb
616
619
  - spec/record/handle_includes_errors_spec.rb
617
620
  - spec/record/has_many_spec.rb
618
621
  - spec/record/has_one_spec.rb