lhs 5.0.3 → 5.0.4
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fc7129b170c58d2a2ecee0756ca0d33cdd2126fa
|
4
|
+
data.tar.gz: 58922bfe15024065b77b57adc09348cadfd3168c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84dfc1caa23ff9932ff85bff35fab58bb5bbfdd08539ad9503bfb3926d1a44c0cb8d298ec1af94be0cf7841081a7d859aca989771a40df4c7681304a79364f81
|
7
|
+
data.tar.gz: 11f9058905e009790b21abf82e08f11e3a1b11126a2c356c71a39c437395926f69d6b0dba5d8c0afa8534293a3a16980bf0e755f3a03ad96cb3a76c77d1cac5c
|
@@ -33,8 +33,9 @@ class LHS::Collection < LHS::Proxy
|
|
33
33
|
private
|
34
34
|
|
35
35
|
def cast_item(item)
|
36
|
+
record_by_href = LHS::Record.for_url(item[:href]) if item[:href]
|
36
37
|
data = LHS::Data.new(item, @parent, @record)
|
37
|
-
return @record.new(data) if @record
|
38
|
+
return (record_by_href || @record).new(data) if record_by_href || @record
|
38
39
|
data
|
39
40
|
end
|
40
41
|
end
|
data/lib/lhs/version.rb
CHANGED
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'rails_helper'
|
2
|
+
|
3
|
+
describe LHS::Record do
|
4
|
+
context 'cast nested data' do
|
5
|
+
let(:datastore) { 'http://local.ch/v2' }
|
6
|
+
|
7
|
+
before(:each) do
|
8
|
+
LHC.config.placeholder('datastore', datastore)
|
9
|
+
class Customer < LHS::Record
|
10
|
+
endpoint ':datastore/customers'
|
11
|
+
endpoint ':datastore/customers/:id'
|
12
|
+
end
|
13
|
+
class Contract < LHS::Record
|
14
|
+
endpoint ':datastore/contracts'
|
15
|
+
endpoint ':datastore/contracts/:id'
|
16
|
+
end
|
17
|
+
class Address < LHS::Record
|
18
|
+
endpoint ':datastore/addresses'
|
19
|
+
endpoint ':datastore/addresses/:id'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it 'casts nested data properly' do
|
24
|
+
stub_request(:get, "http://local.ch/v2/customers?limit=1")
|
25
|
+
.to_return(
|
26
|
+
body: {
|
27
|
+
items: [
|
28
|
+
{
|
29
|
+
href: "http://local.ch/v2/customers/12",
|
30
|
+
address: {
|
31
|
+
href: "http://local.ch/v2/addresses/3"
|
32
|
+
},
|
33
|
+
contracts: [
|
34
|
+
{
|
35
|
+
href: "http://local.ch/v2/contracts/2"
|
36
|
+
}
|
37
|
+
]
|
38
|
+
}
|
39
|
+
]
|
40
|
+
}.to_json
|
41
|
+
)
|
42
|
+
customer = Customer.first
|
43
|
+
expect(customer).to be_kind_of Customer
|
44
|
+
expect(customer.address).to be_kind_of Address
|
45
|
+
expect(customer.contracts.first).to be_kind_of Contract
|
46
|
+
end
|
47
|
+
end
|
48
|
+
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.0.
|
4
|
+
version: 5.0.4
|
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-05-
|
11
|
+
date: 2016-05-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lhc
|
@@ -279,6 +279,7 @@ files:
|
|
279
279
|
- spec/rails_helper.rb
|
280
280
|
- spec/record/all_spec.rb
|
281
281
|
- spec/record/build_spec.rb
|
282
|
+
- spec/record/cast_nested_data_spec.rb
|
282
283
|
- spec/record/create_spec.rb
|
283
284
|
- spec/record/creation_failed_spec.rb
|
284
285
|
- spec/record/definitions_spec.rb
|
@@ -410,6 +411,7 @@ test_files:
|
|
410
411
|
- spec/rails_helper.rb
|
411
412
|
- spec/record/all_spec.rb
|
412
413
|
- spec/record/build_spec.rb
|
414
|
+
- spec/record/cast_nested_data_spec.rb
|
413
415
|
- spec/record/create_spec.rb
|
414
416
|
- spec/record/creation_failed_spec.rb
|
415
417
|
- spec/record/definitions_spec.rb
|