lhs 12.1.0 → 12.2.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 +4 -4
- data/README.md +22 -0
- data/lib/lhs/concerns/item/becomes.rb +12 -0
- data/lib/lhs/item.rb +3 -0
- data/lib/lhs/version.rb +1 -1
- data/spec/item/becomes_spec.rb +36 -0
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73ccff4b48445ae9b548d688af83448b607dd635
|
4
|
+
data.tar.gz: d786114a63d3d8d8eeb87495d84e1823c0cfcd50
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2320ec4f39b5255536ab3d5a1819aac8919b4199e852b8968e3866d5a7144edb53c3a64ccdce11b4627de8bd990b360b5a5069f7ac4ac95624235e7aa5b5d38
|
7
|
+
data.tar.gz: 03af49fcdce27f7000e3446429f532b2d005dcc1de19cc17e1de177da534cb859e8dfba6ea29c9cfe49b32007e338a82c975c0304ce8b0686e0a179a56407396
|
data/README.md
CHANGED
@@ -670,6 +670,28 @@ record = Record.find('1z-5r1fkaj')
|
|
670
670
|
record.update(recommended: false)
|
671
671
|
```
|
672
672
|
|
673
|
+
## Becomes
|
674
|
+
|
675
|
+
Based on [ActiveRecord's implementation](http://api.rubyonrails.org/classes/ActiveRecord/Persistence.html#method-i-becomes), LHS implements `becomes`, too.
|
676
|
+
It's a way to convert records of a certain type A to another certain type B.
|
677
|
+
|
678
|
+
_NOTE: RPC-style actions, that are discouraged in REST anyway, are utilizable with this functionality, too. See the following example:_
|
679
|
+
|
680
|
+
```ruby
|
681
|
+
class Location < LHS::Record
|
682
|
+
endpoint 'http://sync/locations'
|
683
|
+
endpoint 'http://sync/locations/:id'
|
684
|
+
end
|
685
|
+
|
686
|
+
class Synchronization < LHS::Record
|
687
|
+
endpoint 'http://sync/locations/:id/sync'
|
688
|
+
end
|
689
|
+
|
690
|
+
location = Location.find(1)
|
691
|
+
synchronization = location.becomes(Synchronization)
|
692
|
+
synchronization.save!
|
693
|
+
```
|
694
|
+
|
673
695
|
## Destroy
|
674
696
|
|
675
697
|
You can delete records remotely by calling `destroy` on an LHS::Record.
|
data/lib/lhs/item.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# An item is a concrete record.
|
2
2
|
# It can be part of another proxy like collection.
|
3
3
|
class LHS::Item < LHS::Proxy
|
4
|
+
autoload :Becomes,
|
5
|
+
'lhs/concerns/item/becomes'
|
4
6
|
autoload :Destroy,
|
5
7
|
'lhs/concerns/item/destroy'
|
6
8
|
autoload :Save,
|
@@ -10,6 +12,7 @@ class LHS::Item < LHS::Proxy
|
|
10
12
|
autoload :Validation,
|
11
13
|
'lhs/concerns/item/validation'
|
12
14
|
|
15
|
+
include Becomes
|
13
16
|
include Create
|
14
17
|
include Destroy
|
15
18
|
include Save
|
data/lib/lhs/version.rb
CHANGED
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
describe LHS::Item do
|
4
|
+
before(:each) do
|
5
|
+
class Location < LHS::Record
|
6
|
+
endpoint 'http://sync/locations'
|
7
|
+
endpoint 'http://sync/locations/:id'
|
8
|
+
end
|
9
|
+
|
10
|
+
class Synchronization < LHS::Record
|
11
|
+
endpoint 'http://sync/locations/:id/sync'
|
12
|
+
end
|
13
|
+
|
14
|
+
stub_request(:get, "http://sync/locations/1")
|
15
|
+
.to_return(body: {
|
16
|
+
id: 1,
|
17
|
+
name: 'localsearch'
|
18
|
+
}.to_json)
|
19
|
+
|
20
|
+
stub_request(:post, "http://sync/locations/1/sync")
|
21
|
+
.with(body: {
|
22
|
+
name: 'localsearch'
|
23
|
+
}.to_json)
|
24
|
+
.to_return(status: 201)
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'convert records from class A to class B' do
|
28
|
+
it "becomes a record of another class" do
|
29
|
+
location = Location.find(1)
|
30
|
+
synchronization = location.becomes(Synchronization)
|
31
|
+
expect(synchronization).to be_kind_of(Synchronization)
|
32
|
+
synchronization.save!
|
33
|
+
expect(synchronization).to be_kind_of(Synchronization)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: lhs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 12.
|
4
|
+
version: 12.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- https://github.com/local-ch/lhs/graphs/contributors
|
@@ -205,6 +205,7 @@ files:
|
|
205
205
|
- lib/lhs/concerns/data/json.rb
|
206
206
|
- lib/lhs/concerns/data/to_hash.rb
|
207
207
|
- lib/lhs/concerns/inspect.rb
|
208
|
+
- lib/lhs/concerns/item/becomes.rb
|
208
209
|
- lib/lhs/concerns/item/destroy.rb
|
209
210
|
- lib/lhs/concerns/item/save.rb
|
210
211
|
- lib/lhs/concerns/item/update.rb
|
@@ -316,6 +317,7 @@ files:
|
|
316
317
|
- spec/endpoint/for_url_spec.rb
|
317
318
|
- spec/item/accessors_spec.rb
|
318
319
|
- spec/item/add_error_spec.rb
|
320
|
+
- spec/item/becomes_spec.rb
|
319
321
|
- spec/item/delegate_spec.rb
|
320
322
|
- spec/item/destroy_spec.rb
|
321
323
|
- spec/item/dig_spec.rb
|
@@ -485,6 +487,7 @@ test_files:
|
|
485
487
|
- spec/endpoint/for_url_spec.rb
|
486
488
|
- spec/item/accessors_spec.rb
|
487
489
|
- spec/item/add_error_spec.rb
|
490
|
+
- spec/item/becomes_spec.rb
|
488
491
|
- spec/item/delegate_spec.rb
|
489
492
|
- spec/item/destroy_spec.rb
|
490
493
|
- spec/item/dig_spec.rb
|