lhs 11.3.1 → 11.3.2

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: e5038abb8bd075bd7aba160cdcf81b0e3de7cda4
4
- data.tar.gz: 297b1925f5aedc7973493511a1ae318e39064a01
3
+ metadata.gz: 5bbf841e955ed23fe6c7efbf8f8fe7b05fc35538
4
+ data.tar.gz: d331ac41f574be37f783b10ff7c53fe43c592a8f
5
5
  SHA512:
6
- metadata.gz: a252ae3732d5dc6e93e5ea5a625d8ec01d2f1e857b0e1f2e22146f1ec6d4a0057d2ef1f8ae0f42b4fce5ca0bf22ceadac3e6656b2c03f3ecbeadcf97383224ae
7
- data.tar.gz: cbd5a929459c15e3bc02cd3094228215e63d3f987f851729a174045c0522f21c8e16a82ec55a7568b210bfc29856d0330a5660f1c0ceb4b007c88183c10a2ff2
6
+ metadata.gz: 3c0a3fee58998e8c51a25c16702a17b20cec97498979863040b2120d51a776e6333733c807e1940105f24e15b987d2d84e50a50c7fbf4846e1aff472b1e840d2
7
+ data.tar.gz: 6cb8b54105e3579b76e3ff9d9a26c3d738a85e73eb4ded2a93343a176b3231a99fc88bb7f39cc956faf3375bbc7bf46edd8b51088632ad7eb6cacb3aab8926d1
@@ -87,16 +87,16 @@ class LHS::Record
87
87
  end
88
88
 
89
89
  def extend_base_collection!(data, addition, key)
90
- data.each_with_index do |item, i|
91
- item = item[i] if item.is_a? LHS::Collection
92
- link = item[key.to_sym]
93
- next if link.blank?
94
- link.merge_raw!(addition[i]) && next if !link.collection?
95
-
96
- link.each_with_index do |item, j|
97
- item.merge_raw!(addition[i + j]) if item.present?
98
- end
90
+ data.map do |item|
91
+ item_raw = item._raw[key]
92
+ item_raw.blank? ? [nil] : item_raw
99
93
  end
94
+ .flatten
95
+ .each_with_index do |item, index|
96
+ item_addition = addition[index]
97
+ next if item_addition.nil? || item.nil?
98
+ item.merge! item_addition._raw
99
+ end
100
100
  end
101
101
 
102
102
  def extend_base_array!(data, addition, key)
@@ -301,7 +301,7 @@ class LHS::Record
301
301
  # When including all resources on one level, don't forward :includes & :references
302
302
  # as we have to fetch all resources on this level first, before we continue_including
303
303
  def prepare_option_for_include_all_request!(option)
304
- return option if option.empty? || option[:url].nil?
304
+ return option if option.blank? || option[:url].nil?
305
305
  uri = parse_uri(option[:url], option)
306
306
  get_params = Rack::Utils.parse_nested_query(uri.query)
307
307
  .symbolize_keys
data/lib/lhs/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module LHS
2
- VERSION = "11.3.1"
2
+ VERSION = "11.3.2"
3
3
  end
@@ -260,5 +260,83 @@ describe LHS::Record do
260
260
  expect(customer.contracts.first.entry.name).to eq 'Casa Ferlin'
261
261
  end
262
262
  end
263
+
264
+ context 'includes all for parallel loaded ids' do
265
+ before(:each) do
266
+ class Place < LHS::Record
267
+ endpoint 'http://datastore/places/:id'
268
+ end
269
+ end
270
+
271
+ let!(:place_request_1) do
272
+ stub_request(:get, %r{http://datastore/places/1})
273
+ .to_return(
274
+ body: {
275
+ category_relations: [
276
+ { href: 'http://datastore/category_relations/1' },
277
+ { href: 'http://datastore/category_relations/2' }
278
+ ]
279
+ }.to_json
280
+ )
281
+ end
282
+
283
+ let!(:place_request_2) do
284
+ stub_request(:get, %r{http://datastore/places/2})
285
+ .to_return(
286
+ body: {
287
+ category_relations: []
288
+ }.to_json
289
+ )
290
+ end
291
+
292
+ let!(:place_request_3) do
293
+ stub_request(:get, %r{http://datastore/places/3})
294
+ .to_return(
295
+ body: {
296
+ category_relations: [
297
+ { href: 'http://datastore/category_relations/1' },
298
+ { href: 'http://datastore/category_relations/3' }
299
+ ]
300
+ }.to_json
301
+ )
302
+ end
303
+
304
+ let!(:category_relation_request_1) do
305
+ stub_request(:get, %r{http://datastore/category_relations/1})
306
+ .to_return(
307
+ body: {
308
+ name: "Category 1"
309
+ }.to_json
310
+ )
311
+ end
312
+
313
+ let!(:category_relation_request_2) do
314
+ stub_request(:get, %r{http://datastore/category_relations/2})
315
+ .to_return(
316
+ body: {
317
+ name: "Category 2"
318
+ }.to_json
319
+ )
320
+ end
321
+
322
+ let!(:category_relation_request_3) do
323
+ stub_request(:get, %r{http://datastore/category_relations/3})
324
+ .to_return(
325
+ body: {
326
+ name: "Category 3"
327
+ }.to_json
328
+ )
329
+ end
330
+
331
+ let(:category_name) { 'Category Relation' }
332
+
333
+ it 'requests places in parallel and includes category relation' do
334
+ places = Place.includes_all(:category_relations).find(1, 2, 3)
335
+ expect(places[0].category_relations[0].name).to eq 'Category 1'
336
+ expect(places[0].category_relations[1].name).to eq 'Category 2'
337
+ expect(places[2].category_relations[0].name).to eq 'Category 1'
338
+ expect(places[2].category_relations[1].name).to eq 'Category 3'
339
+ end
340
+ end
263
341
  end
264
342
  end
@@ -264,12 +264,14 @@ describe LHS::Record do
264
264
  end
265
265
 
266
266
  context 'arrays' do
267
- it 'includes items of arrays' do
267
+ before(:each) do
268
268
  class Place < LHS::Record
269
269
  endpoint ':datastore/place'
270
270
  endpoint ':datastore/place/:id'
271
271
  end
272
+ end
272
273
 
274
+ let!(:place_request) do
273
275
  stub_request(:get, "#{datastore}/place/1")
274
276
  .to_return(body: {
275
277
  'relations' => [
@@ -277,16 +279,39 @@ describe LHS::Record do
277
279
  { 'href' => "#{datastore}/place/relations/3" }
278
280
  ]
279
281
  }.to_json)
282
+ end
280
283
 
284
+ let!(:relation_request_1) do
281
285
  stub_request(:get, "#{datastore}/place/relations/2")
282
286
  .to_return(body: { name: 'Category' }.to_json)
287
+ end
288
+
289
+ let!(:relation_request_2) do
283
290
  stub_request(:get, "#{datastore}/place/relations/3")
284
291
  .to_return(body: { name: 'ZeFrank' }.to_json)
292
+ end
285
293
 
294
+ it 'includes items of arrays' do
286
295
  place = Place.includes(:relations).find(1)
287
296
  expect(place.relations.first.name).to eq 'Category'
288
297
  expect(place.relations[1].name).to eq 'ZeFrank'
289
298
  end
299
+
300
+ context 'parallel with empty links' do
301
+ let!(:place_request_2) do
302
+ stub_request(:get, "#{datastore}/place/2")
303
+ .to_return(body: {
304
+ 'relations' => []
305
+ }.to_json)
306
+ end
307
+
308
+ it 'loads places in parallel and merges included data properly' do
309
+ place = Place.includes(:relations).find(2, 1)
310
+ expect(place[0].relations.empty?)
311
+ expect(place[1].relations[0].name).to eq 'Category'
312
+ expect(place[1].relations[1].name).to eq 'ZeFrank'
313
+ end
314
+ end
290
315
  end
291
316
 
292
317
  context 'empty collections' 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: 11.3.1
4
+ version: 11.3.2
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: 2017-06-20 00:00:00.000000000 Z
11
+ date: 2017-06-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: lhc