lhs 15.2.3.pre.favorites.1 → 15.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/lhs/concerns/record/request.rb +4 -7
- data/lib/lhs/version.rb +1 -1
- data/spec/concerns/record/request_spec.rb +0 -36
- data/spec/record/includes_all_spec.rb +74 -18
- metadata +5 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ab8ba71d671d0e6b04f578b81bd6988a3caa5b28
|
4
|
+
data.tar.gz: 17222267f2563042bb2975fdc2c778662d1594db
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79414764f2beed745b3dcaa21cd9d9f099c432715080a54cfa0463d9c2d91ea4ccc55ac098353df21234b60a2661463152c984669b0590154c62aab8ac010757
|
7
|
+
data.tar.gz: 13cc0ab0000e9fde6e731835b8343a434dd4e2d64cd70f3a4a3c9ef6cdf5d707853e0dea6956b108297dfd804af5d7d98f99f317691fe5dea547c972dccbd9d0
|
@@ -267,18 +267,15 @@ class LHS::Record
|
|
267
267
|
|
268
268
|
def load_and_merge_set_of_paginated_collections!(data, options)
|
269
269
|
options_for_this_batch = []
|
270
|
-
|
271
|
-
|
272
|
-
options.compact.each_with_index do |_, index|
|
270
|
+
options.each_with_index do |element, index|
|
271
|
+
next if element.nil?
|
273
272
|
record = data[index]._record
|
274
273
|
pagination = record.pagination(data[index])
|
275
274
|
next if pagination.pages_left.zero?
|
276
275
|
options_for_this_batch.push(options_for_next_batch(record, pagination, options[index], data[index]))
|
277
276
|
end
|
278
|
-
|
279
|
-
|
280
|
-
merge_batch_data_with_parent!(batch_data, batch_data._request.options[:parent_data])
|
281
|
-
end
|
277
|
+
data._record.request(options_for_this_batch.flatten).each do |batch_data|
|
278
|
+
merge_batch_data_with_parent!(batch_data, batch_data._request.options[:parent_data])
|
282
279
|
end
|
283
280
|
end
|
284
281
|
|
data/lib/lhs/version.rb
CHANGED
@@ -73,40 +73,4 @@ describe LHS::Record::Request do
|
|
73
73
|
params: { limit: 100 })
|
74
74
|
end
|
75
75
|
end
|
76
|
-
|
77
|
-
describe 'load_and_merge_set_of_paginated_collections!' do
|
78
|
-
let(:options) do
|
79
|
-
[
|
80
|
-
{
|
81
|
-
url: 'http://localhost:3000/test/resource?abc=def&limit=1&offset=3&test=1',
|
82
|
-
all: true,
|
83
|
-
auth: { bearer: 'xxx' },
|
84
|
-
params: { limit: 100 }
|
85
|
-
},
|
86
|
-
nil,
|
87
|
-
{
|
88
|
-
url: 'http://localhost:3000/test/resource?abc=def&limit=1&offset=3&test=3',
|
89
|
-
all: true,
|
90
|
-
auth: { bearer: 'xxx' },
|
91
|
-
params: { limit: 100 }
|
92
|
-
},
|
93
|
-
]
|
94
|
-
end
|
95
|
-
|
96
|
-
let(:data_array) do
|
97
|
-
[
|
98
|
-
LHS::Record.new,
|
99
|
-
nil,
|
100
|
-
LHS::Record.new,
|
101
|
-
]
|
102
|
-
end
|
103
|
-
|
104
|
-
let(:data) do
|
105
|
-
LHS::Record.new(data_array)
|
106
|
-
end
|
107
|
-
|
108
|
-
it 'does not raise an error when data has nil objects' do
|
109
|
-
expect(subject.send(:load_and_merge_set_of_paginated_collections!, data, options)).to_not be_nil
|
110
|
-
end
|
111
|
-
end
|
112
76
|
end
|
@@ -384,19 +384,8 @@ describe LHS::Record do
|
|
384
384
|
|
385
385
|
context 'nested includes_all' do
|
386
386
|
context 'with optional children' do
|
387
|
-
before do
|
388
|
-
class Favorite < LHS::Record
|
389
|
-
endpoint 'http://datastore/favorites'
|
390
|
-
end
|
391
|
-
|
392
|
-
class Place < LHS::Record
|
393
|
-
endpoint 'http://datastore/places/{id}'
|
394
|
-
end
|
395
|
-
|
396
|
-
class Contract < LHS::Record
|
397
|
-
endpoint 'http://datastore/places/{place_id}/contracts'
|
398
|
-
end
|
399
387
|
|
388
|
+
let(:favorites_request_stub) do
|
400
389
|
stub_request(:get, %r{http://datastore/favorites})
|
401
390
|
.to_return(
|
402
391
|
body: {
|
@@ -410,13 +399,20 @@ describe LHS::Record do
|
|
410
399
|
place: {
|
411
400
|
href: "http://datastore/places/2"
|
412
401
|
}
|
402
|
+
}, {
|
403
|
+
href: "http://datastore/favorite/3",
|
404
|
+
place: {
|
405
|
+
href: "http://datastore/places/3"
|
406
|
+
}
|
413
407
|
}],
|
414
|
-
total:
|
408
|
+
total: 3,
|
415
409
|
offset: 0,
|
416
410
|
limit: 100
|
417
411
|
}.to_json
|
418
412
|
)
|
413
|
+
end
|
419
414
|
|
415
|
+
let(:place1_request_stub) do
|
420
416
|
stub_request(:get, %r{http://datastore/places/1})
|
421
417
|
.to_return(
|
422
418
|
body: {
|
@@ -427,7 +423,32 @@ describe LHS::Record do
|
|
427
423
|
}
|
428
424
|
}.to_json
|
429
425
|
)
|
426
|
+
end
|
427
|
+
|
428
|
+
let(:place2_request_stub) do
|
429
|
+
stub_request(:get, %r{http://datastore/places/2})
|
430
|
+
.to_return(
|
431
|
+
body: {
|
432
|
+
href: "http://datastore/places/2",
|
433
|
+
name: 'Place 2'
|
434
|
+
}.to_json
|
435
|
+
)
|
436
|
+
end
|
430
437
|
|
438
|
+
let(:place3_request_stub) do
|
439
|
+
stub_request(:get, %r{http://datastore/places/3})
|
440
|
+
.to_return(
|
441
|
+
body: {
|
442
|
+
href: "http://datastore/places/3",
|
443
|
+
name: 'Place 3',
|
444
|
+
contracts: {
|
445
|
+
href: "http://datastore/places/3/contracts"
|
446
|
+
}
|
447
|
+
}.to_json
|
448
|
+
)
|
449
|
+
end
|
450
|
+
|
451
|
+
let(:contracts_request_for_place1_stub) do
|
431
452
|
stub_request(:get, %r{http://datastore/places/1/contracts})
|
432
453
|
.to_return(
|
433
454
|
body: {
|
@@ -440,16 +461,44 @@ describe LHS::Record do
|
|
440
461
|
limit: 10
|
441
462
|
}.to_json
|
442
463
|
)
|
464
|
+
end
|
443
465
|
|
444
|
-
|
466
|
+
let(:contracts_request_for_place3_stub) do
|
467
|
+
stub_request(:get, %r{http://datastore/places/3/contracts})
|
445
468
|
.to_return(
|
446
469
|
body: {
|
447
|
-
|
448
|
-
|
470
|
+
items: [{
|
471
|
+
href: "http://datastore/places/3/contracts/1",
|
472
|
+
name: 'Contract 3'
|
473
|
+
}],
|
474
|
+
total: 1,
|
475
|
+
offset: 0,
|
476
|
+
limit: 10
|
449
477
|
}.to_json
|
450
478
|
)
|
451
479
|
end
|
452
480
|
|
481
|
+
before do
|
482
|
+
class Favorite < LHS::Record
|
483
|
+
endpoint 'http://datastore/favorites'
|
484
|
+
end
|
485
|
+
|
486
|
+
class Place < LHS::Record
|
487
|
+
endpoint 'http://datastore/places/{id}'
|
488
|
+
end
|
489
|
+
|
490
|
+
class Contract < LHS::Record
|
491
|
+
endpoint 'http://datastore/places/{place_id}/contracts'
|
492
|
+
end
|
493
|
+
|
494
|
+
favorites_request_stub
|
495
|
+
place1_request_stub
|
496
|
+
place2_request_stub
|
497
|
+
place3_request_stub
|
498
|
+
contracts_request_for_place1_stub
|
499
|
+
contracts_request_for_place3_stub
|
500
|
+
end
|
501
|
+
|
453
502
|
it 'includes nested objects when they exist' do
|
454
503
|
favorites = Favorite.includes(:place).includes_all(place: :contracts).all
|
455
504
|
|
@@ -460,8 +509,15 @@ describe LHS::Record do
|
|
460
509
|
it 'does not include nested objects when they are not there' do
|
461
510
|
favorites = Favorite.includes(:place).includes_all(place: :contracts).all
|
462
511
|
|
463
|
-
expect(favorites.
|
464
|
-
expect(favorites.
|
512
|
+
expect(favorites[1].place.name).to eq('Place 2')
|
513
|
+
expect(favorites[1].place.contracts).to be(nil)
|
514
|
+
end
|
515
|
+
|
516
|
+
it 'does include and merges objects after nil objects in collections' do
|
517
|
+
favorites = Favorite.includes(:place).includes_all(place: :contracts).all
|
518
|
+
|
519
|
+
expect(favorites.last.place.name).to eq('Place 3')
|
520
|
+
expect(favorites.last.place.contracts.first.name).to eq('Contract 3')
|
465
521
|
end
|
466
522
|
end
|
467
523
|
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: 15.2.3
|
4
|
+
version: 15.2.3
|
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: 2018-
|
11
|
+
date: 2018-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: lhc
|
@@ -431,13 +431,13 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
431
431
|
version: 2.3.0
|
432
432
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
433
433
|
requirements:
|
434
|
-
- - "
|
434
|
+
- - ">="
|
435
435
|
- !ruby/object:Gem::Version
|
436
|
-
version:
|
436
|
+
version: '0'
|
437
437
|
requirements:
|
438
438
|
- Ruby >= 2.3.0
|
439
439
|
rubyforge_project:
|
440
|
-
rubygems_version: 2.
|
440
|
+
rubygems_version: 2.6.14
|
441
441
|
signing_key:
|
442
442
|
specification_version: 4
|
443
443
|
summary: Rails gem providing an easy, active-record-like interface for http json services
|