lhs 19.5.0 → 19.6.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: f710860a3f8422148310faddde72364d0fbf9916c79109b3a00df7c48e2de12d
4
- data.tar.gz: 19fbb0d10e8a240c8312ed97776d0c15f6b03ef2b2bac9b54f0b0ccdb7236a47
3
+ metadata.gz: 27484e8b67d86a110c1e880e53d42f605646754cd0fe7b52369a5dcc381f3d97
4
+ data.tar.gz: b359ed2464317011e78586fbc1804812b269fa6da8f053028d8bbca946acac18
5
5
  SHA512:
6
- metadata.gz: 05ce1a8bab26b8a39cacdb47a0625d5e00d00a69d4ecd0cfc9950951690ccddf726e10e3de6fdea3dfe9aa61d98195a931b57dc3a26d1a1e7c1143c193f28c52
7
- data.tar.gz: fe24c182642d2c5c61e842176a99c5fc1b53656471082c4cabf8edbe8d8d1d3219cd7e10e9db40e1d87e4fad67fdaefb4436c84e7c3ab1b6ba59d7c144ec160a
6
+ metadata.gz: 779e482a39d72b249c30ed2ab82ab9c26d5fcd922c5d8149bfc1d0bd2838daec87ad1ff170503f532962f6bb07e9806c932c00c630ecae77d4af600aa45f2e6c
7
+ data.tar.gz: 85ba8a79e1e6b0c8f66fd7c4592636140f61d8a12b1b2d86333bb5ef86f2a2f48a44aeeae51732e1fd54752bcd90456f6951539a59cc5c4f94f7d2a7a875bb95
data/README.md CHANGED
@@ -1230,6 +1230,44 @@ In parallel:
1230
1230
  GET https://service.example.com/records?limit=100&startAt=201
1231
1231
  ```
1232
1232
 
1233
+ ##### Pagination strategy: link
1234
+
1235
+ The `link` strategy continuously follows in-response embedded links to following pages until the last page is reached (indicated by no more `next` link).
1236
+
1237
+ *WARNING*
1238
+
1239
+ Loading all pages from a resource paginated with links only can result in very poor performance, as pages can only be loaded sequentially!
1240
+
1241
+ ```ruby
1242
+ # app/models/record.rb
1243
+
1244
+ class Search < LHS::Record
1245
+ configuration pagination_strategy: 'link'
1246
+
1247
+ endpoint '{+service}/search'
1248
+ end
1249
+ ```
1250
+
1251
+ ```ruby
1252
+ # app/controllers/some_controller.rb
1253
+
1254
+ Record.all
1255
+
1256
+ ```
1257
+ ```
1258
+ GET https://service.example.com/records?limit=100
1259
+ {
1260
+ items: [{...}, ...],
1261
+ limit: 100,
1262
+ next: {
1263
+ href: 'https://service.example.com/records?from_record_id=p62qM5p0NK_qryO52Ze-eg&limit=100'
1264
+ }
1265
+ }
1266
+ Sequentially:
1267
+ GET https://service.example.com/records?from_record_id=p62qM5p0NK_qryO52Ze-eg&limit=100
1268
+ GET https://service.example.com/records?from_record_id=xcaoXBmuMyFFEcFDSgNgDQ&limit=100
1269
+ ```
1270
+
1233
1271
  #### Pagination keys
1234
1272
 
1235
1273
  ##### limit_key
data/friday.yml ADDED
@@ -0,0 +1,2 @@
1
+ ---
2
+ request_reviews: true
data/lib/lhs.rb CHANGED
@@ -32,6 +32,8 @@ module LHS
32
32
  'lhs/pagination/page'
33
33
  autoload :Start,
34
34
  'lhs/pagination/start'
35
+ autoload :Link,
36
+ 'lhs/pagination/link'
35
37
  end
36
38
  autoload :Problems,
37
39
  'lhs/problems/base'
@@ -24,6 +24,8 @@ class LHS::Record
24
24
  LHS::Pagination::Page
25
25
  when :start
26
26
  LHS::Pagination::Start
27
+ when :link
28
+ LHS::Pagination::Link
27
29
  else
28
30
  LHS::Pagination::Offset
29
31
  end
@@ -35,7 +37,10 @@ class LHS::Record
35
37
 
36
38
  # Checks if given raw is paginated or not
37
39
  def paginated?(raw)
38
- !!(raw.is_a?(Hash) && raw.dig(*total_key))
40
+ raw.is_a?(Hash) && (
41
+ raw.dig(*total_key).present? ||
42
+ raw.dig(*limit_key(:body)).present?
43
+ )
39
44
  end
40
45
  end
41
46
  end
@@ -277,8 +277,16 @@ class LHS::Record
277
277
  def load_and_merge_paginated_collection!(data, options)
278
278
  set_nested_data(data._raw, limit_key(:body), data.length) if data._raw.dig(*limit_key(:body)).blank? && !data.length.zero?
279
279
  pagination = data._record.pagination(data)
280
- return data if pagination.pages_left.zero?
280
+ return data unless pagination.pages_left?
281
281
  record = data._record
282
+ if pagination.parallel?
283
+ load_and_merge_parallel_requests!(record, data, pagination, options)
284
+ else
285
+ load_and_merge_sequential_requests!(record, data, options, data._raw.dig(:next, :href), pagination)
286
+ end
287
+ end
288
+
289
+ def load_and_merge_parallel_requests!(record, data, pagination, options)
282
290
  record.request(
283
291
  options_for_next_batch(record, pagination, options)
284
292
  ).each do |batch_data|
@@ -286,13 +294,24 @@ class LHS::Record
286
294
  end
287
295
  end
288
296
 
297
+ def load_and_merge_sequential_requests!(record, data, options, next_link, pagination)
298
+ warn "[WARNING] You are loading all pages from a resource paginated with links only. As this is performed sequentially, it can result in very poor performance! (https://github.com/local-ch/lhs#pagination-strategy-link)."
299
+ while next_link.present?
300
+ page_data = record.request(
301
+ options.except(:all).merge(url: next_link)
302
+ )
303
+ next_link = page_data._raw.dig(:next, :href)
304
+ merge_batch_data_with_parent!(page_data, data, pagination)
305
+ end
306
+ end
307
+
289
308
  def load_and_merge_set_of_paginated_collections!(data, options)
290
309
  options_for_next_batch = []
291
310
  options.each_with_index do |element, index|
292
311
  next if element.nil?
293
312
  record = data[index]._record
294
313
  pagination = record.pagination(data[index])
295
- next if pagination.pages_left.zero?
314
+ next unless pagination.pages_left?
296
315
  options_for_next_batch.push(
297
316
  options_for_next_batch(record, pagination, options[index]).tap do |options|
298
317
  options.each do |option|
@@ -345,7 +364,8 @@ class LHS::Record
345
364
  # paginates itself to ensure all records are fetched
346
365
  def load_all_included!(record, options)
347
366
  data = record.request(options)
348
- load_and_merge_remaining_objects!(data: data, options: options)
367
+ pagination = data._record.pagination(data)
368
+ load_and_merge_remaining_objects!(data: data, options: options) if pagination.parallel?
349
369
  data
350
370
  end
351
371
 
@@ -386,8 +406,9 @@ class LHS::Record
386
406
  options || {}
387
407
  end
388
408
 
389
- def merge_batch_data_with_parent!(batch_data, parent_data)
409
+ def merge_batch_data_with_parent!(batch_data, parent_data, pagination = nil)
390
410
  parent_data.concat(input: parent_data._raw, items: batch_data.raw_items, record: self)
411
+ return if pagination.present? && pagination.is_a?(LHS::Pagination::Link)
391
412
  [limit_key(:body), total_key, pagination_key(:body)].each do |pagination_attribute|
392
413
  set_nested_data(
393
414
  parent_data._raw,
@@ -35,12 +35,16 @@ module LHS::Pagination
35
35
  total_pages - current_page
36
36
  end
37
37
 
38
+ def pages_left?
39
+ pages_left > 0
40
+ end
41
+
38
42
  def next_offset(_step = 1)
39
43
  raise 'to be implemented in subclass'
40
44
  end
41
45
 
42
46
  def current_page
43
- raise 'to be implemented in subclass'
47
+ # should be implemented in subclass (optional)
44
48
  end
45
49
 
46
50
  def first_page
@@ -51,6 +55,10 @@ module LHS::Pagination
51
55
  total_pages
52
56
  end
53
57
 
58
+ def parallel?
59
+ true
60
+ end
61
+
54
62
  def next?
55
63
  data._raw[:next].present?
56
64
  end
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ class LHS::Pagination::Link < LHS::Pagination::Base
4
+ def total
5
+ data._raw.dig(*_record.items_key).count || 0
6
+ end
7
+
8
+ alias count total
9
+
10
+ def pages_left
11
+ pages_left? ? 1 : 0
12
+ end
13
+
14
+ def pages_left?
15
+ data._raw[:next].present?
16
+ end
17
+
18
+ def parallel?
19
+ false
20
+ end
21
+ end
data/lib/lhs/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module LHS
4
- VERSION = '19.5.0'
4
+ VERSION = '19.6.0'
5
5
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails_helper'
4
+
5
+ describe LHS::Record do
6
+ let(:data_hash) do
7
+ { items: 98.times.map { { foo: 'bar' } }, limit: 10, next: { href: 'http://example.com/users?from_user_id=100&limit=100' } }
8
+ end
9
+
10
+ let(:data) do
11
+ LHS::Data.new(data_hash, nil, Record)
12
+ end
13
+
14
+ let(:pagination) { LHS::Pagination::Link.new(data) }
15
+
16
+ it 'responds to parallel?' do
17
+ expect(pagination.current_page).to be nil
18
+ end
19
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails_helper'
4
+
5
+ describe LHS::Record do
6
+ let(:next_parameter) do
7
+ { next: { href: 'http://example.com/users?from_user_id=100&limit=100' } }
8
+ end
9
+ let(:data_hash) { { items: 98.times.map { { foo: 'bar' } }, limit: 10 }.merge(next_parameter) }
10
+
11
+ let(:data) do
12
+ LHS::Data.new(data_hash, nil, Record)
13
+ end
14
+
15
+ let(:pagination) { LHS::Pagination::Link.new(data) }
16
+
17
+ it 'responds to pages_left' do
18
+ expect(pagination.pages_left).to eq(1)
19
+ end
20
+
21
+ it 'responds to pages_left?' do
22
+ expect(pagination.pages_left?).to be true
23
+ end
24
+
25
+ context 'when there is no next' do
26
+ let(:next_parameter) { {} }
27
+
28
+ it 'responds to pages_left' do
29
+ expect(pagination.pages_left).to eq(0)
30
+ end
31
+
32
+ it 'responds to pages_left?' do
33
+ expect(pagination.pages_left?).to be false
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails_helper'
4
+
5
+ describe LHS::Record do
6
+ let(:data_hash) do
7
+ { items: 98.times.map { { foo: 'bar' } }, limit: 10, next: { href: 'http://example.com/users?from_user_id=100&limit=100' } }
8
+ end
9
+
10
+ let(:data) do
11
+ LHS::Data.new(data_hash, nil, Record)
12
+ end
13
+
14
+ let(:pagination) { LHS::Pagination::Link.new(data) }
15
+
16
+ it 'responds to parallel?' do
17
+ expect(pagination.parallel?).to be false
18
+ end
19
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rails_helper'
4
+ require 'webrick'
5
+
6
+ describe LHS::Record do
7
+
8
+ before do
9
+ class User < LHS::Record
10
+ endpoint 'http://example.com/users'
11
+ configuration(
12
+ limit_key: 'limit',
13
+ items_key: 'items',
14
+ pagination_strategy: 'link'
15
+ )
16
+ end
17
+ end
18
+
19
+ context 'explicit pagination parameters for retrieving pages' do
20
+ it 'uses explicit parameters when retrieving pages' do
21
+ stub_request(:get, "http://example.com/users?limit=100")
22
+ .to_return(body: {
23
+ items: 100.times.map { |_| { name: WEBrick::Utils.random_string(10) } },
24
+ limit: 100,
25
+ next: { href: 'http://example.com/users?from_user_id=100&limit=100' }
26
+ }.to_json)
27
+
28
+ stub_request(:get, 'http://example.com/users?from_user_id=100&limit=100')
29
+ .to_return(body: {
30
+ items: 3.times.map { |_| { name: WEBrick::Utils.random_string(10) } },
31
+ limit: 100,
32
+ next: { href: 'http://example.com/users?from_user_id=200&limit=100' }
33
+ }.to_json)
34
+
35
+ stub_request(:get, 'http://example.com/users?from_user_id=200&limit=100')
36
+ .to_return(body: {
37
+ items: [],
38
+ limit: 100
39
+ }.to_json)
40
+
41
+ users = User.all.fetch
42
+ expect(users.total).to eq 103
43
+ expect(users.count).to eq 103
44
+ end
45
+ end
46
+ end
@@ -12,12 +12,6 @@ describe LHS::Record do
12
12
 
13
13
  let(:pagination) { LHS::Pagination::Offset.new(data) }
14
14
 
15
- before do
16
- class Record < LHS::Record
17
- endpoint '{+datastore}/v2/data'
18
- end
19
- end
20
-
21
15
  it 'responds to pages_left' do
22
16
  expect(pagination.pages_left).to eq(9)
23
17
  end
@@ -26,7 +20,6 @@ describe LHS::Record do
26
20
  let(:offset) { nil }
27
21
 
28
22
  it 'responds to pages_left' do
29
- # TODO i now set the nil offset to zero. Is this ok or wrong?
30
23
  expect(pagination.pages_left).to eq(9)
31
24
  end
32
25
  end
@@ -8,20 +8,33 @@ describe LHS::Record do
8
8
  class Customer < LHS::Record
9
9
  endpoint 'http://datastore/customers/{id}'
10
10
  end
11
+
12
+ class User < LHS::Record
13
+ configuration pagination_strategy: 'link'
14
+ endpoint 'http://datastore/users'
15
+ end
11
16
  end
12
17
 
13
18
  let(:amount_of_contracts) { 33 }
14
19
  let(:amount_of_products) { 22 }
20
+ let(:amount_of_users_1st_page) { 10 }
21
+ let(:amount_of_users_2nd_page) { 3 }
22
+ let(:amount_of_users) { amount_of_users_1st_page + amount_of_users_2nd_page }
15
23
 
16
24
  let!(:customer_request) do
17
25
  stub_request(:get, 'http://datastore/customers/1')
18
26
  .to_return(
19
27
  body: {
20
- contracts: { href: 'http://datastore/customers/1/contracts' }
28
+ contracts: { href: 'http://datastore/customers/1/contracts' },
29
+ users: { href: 'http://datastore/users?limit=10' }
21
30
  }.to_json
22
31
  )
23
32
  end
24
33
 
34
+ #
35
+ # Contracts
36
+ #
37
+
25
38
  let!(:contracts_request) do
26
39
  stub_request(:get, "http://datastore/customers/1/contracts?limit=100")
27
40
  .to_return(
@@ -66,6 +79,10 @@ describe LHS::Record do
66
79
  additional_contracts_request(30, 3)
67
80
  end
68
81
 
82
+ #
83
+ # Products
84
+ #
85
+
69
86
  let!(:products_request) do
70
87
  stub_request(:get, "http://datastore/products?limit=100")
71
88
  .to_return(
@@ -102,10 +119,58 @@ describe LHS::Record do
102
119
  additional_products_request(20, 2)
103
120
  end
104
121
 
122
+ #
123
+ # Users
124
+ #
125
+
126
+ let!(:users_request) do
127
+ stub_request(:get, 'http://datastore/users?limit=10')
128
+ .to_return(
129
+ body: {
130
+ items: amount_of_users_1st_page.times.map do
131
+ { name: 'Hans Muster' }
132
+ end,
133
+ limit: 10,
134
+ next: { href: 'http://datastore/users?for_user_id=10&limit=10' }
135
+ }.to_json
136
+ )
137
+ end
138
+
139
+ let!(:users_request_page_2) do
140
+ stub_request(:get, 'http://datastore/users?for_user_id=10&limit=10')
141
+ .to_return(
142
+ body: {
143
+ items: amount_of_users_2nd_page.times.map do
144
+ { name: 'Lisa Müller' }
145
+ end,
146
+ limit: 10,
147
+ next: { href: 'http://datastore/users?for_user_id=13&limit=10' }
148
+ }.to_json
149
+ )
150
+ end
151
+
152
+ let!(:users_request_page_3) do
153
+ stub_request(:get, 'http://datastore/users?for_user_id=13&limit=10')
154
+ .to_return(
155
+ body: {
156
+ items: [],
157
+ limit: 10
158
+ }.to_json
159
+ )
160
+ end
161
+
105
162
  it 'includes all linked business objects no matter pagination' do
106
- customer = Customer
107
- .includes_all(contracts: :products)
108
- .find(1)
163
+ customer = nil
164
+
165
+ expect(lambda do
166
+ customer = Customer
167
+ .includes_all(:users, contracts: :products)
168
+ .find(1)
169
+ end).to output(
170
+ %r{\[WARNING\] You are loading all pages from a resource paginated with links only. As this is performed sequentially, it can result in very poor performance! \(https://github.com/local-ch/lhs#pagination-strategy-link\).}
171
+ ).to_stderr
172
+
173
+ expect(customer.users.length).to eq amount_of_users
109
174
  expect(customer.contracts.length).to eq amount_of_contracts
110
175
  expect(customer.contracts.first.products.length).to eq amount_of_products
111
176
  expect(customer_request).to have_been_requested.at_least_once
@@ -116,6 +181,9 @@ describe LHS::Record do
116
181
  expect(products_request).to have_been_requested.at_least_once
117
182
  expect(products_request_page_2).to have_been_requested.at_least_once
118
183
  expect(products_request_page_3).to have_been_requested.at_least_once
184
+ expect(users_request).to have_been_requested.at_least_once
185
+ expect(users_request_page_2).to have_been_requested.at_least_once
186
+ expect(users_request_page_3).to have_been_requested.at_least_once
119
187
  end
120
188
 
121
189
  context 'links already contain pagination parameters' do
@@ -284,4 +284,77 @@ describe LHS::Record do
284
284
  expect(all.last).to eq 223
285
285
  end
286
286
  end
287
+
288
+ context 'pagination using links' do
289
+ before do
290
+ class Record < LHS::Record
291
+ configuration pagination_strategy: 'link'
292
+ endpoint '{+datastore}/feedbacks'
293
+ end
294
+ end
295
+
296
+ it 'fetches all records from the backend' do
297
+ stub_request(:get, "#{datastore}/feedbacks?limit=100")
298
+ .to_return(
299
+ status: 200,
300
+ body: { items: (1..100).to_a, limit: 100, next: { href: "#{datastore}/feedbacks?limit=100&cursor=x" } }.to_json
301
+ )
302
+ stub_request(:get, "#{datastore}/feedbacks?limit=100&cursor=x")
303
+ .to_return(
304
+ status: 200,
305
+ body: { items: (101..200).to_a, limit: 100, next: { href: "#{datastore}/feedbacks?limit=100&cursor=y" } }.to_json
306
+ )
307
+ stub_request(:get, "#{datastore}/feedbacks?limit=100&cursor=y")
308
+ .to_return(
309
+ status: 200,
310
+ body: { items: (201..300).to_a, limit: 100, next: { href: "#{datastore}/feedbacks?limit=100&cursor=z" } }.to_json
311
+ )
312
+ stub_request(:get, "#{datastore}/feedbacks?limit=100&cursor=z")
313
+ .to_return(
314
+ status: 200,
315
+ body: { items: [], limit: 100 }.to_json
316
+ )
317
+ all = Record.all
318
+
319
+ expect(all).to be_kind_of Record
320
+ expect(all._data._proxy).to be_kind_of LHS::Collection
321
+ expect(all.count).to eq 300
322
+ expect(all.last).to eq 300
323
+ end
324
+
325
+ it 'fetches all, also if there is a rest and the total is not divideable trough the limit' do
326
+ stub_request(:get, "#{datastore}/feedbacks?limit=100")
327
+ .to_return(
328
+ status: 200,
329
+ body: { items: (1..100).to_a, limit: 100, next: { href: "#{datastore}/feedbacks?limit=100&cursor=x" } }.to_json
330
+ )
331
+ stub_request(:get, "#{datastore}/feedbacks?limit=100&cursor=x")
332
+ .to_return(
333
+ status: 200,
334
+ body: { items: (101..200).to_a, limit: 100, next: { href: "#{datastore}/feedbacks?limit=100&cursor=y" } }.to_json
335
+ )
336
+ stub_request(:get, "#{datastore}/feedbacks?limit=100&cursor=y")
337
+ .to_return(
338
+ status: 200,
339
+ body: { items: (201..300).to_a, limit: 100, next: { href: "#{datastore}/feedbacks?limit=100&cursor=z" } }.to_json
340
+ )
341
+ stub_request(:get, "#{datastore}/feedbacks?limit=100&cursor=z")
342
+ .to_return(
343
+ status: 200,
344
+ body: { items: [301], limit: 100 }.to_json
345
+ )
346
+
347
+ all = nil
348
+ expect(lambda do
349
+ all = Record.all.fetch
350
+ end).to output(
351
+ %r{\[WARNING\] You are loading all pages from a resource paginated with links only. As this is performed sequentially, it can result in very poor performance! \(https://github.com/local-ch/lhs#pagination-strategy-link\).}
352
+ ).to_stderr
353
+
354
+ expect(all).to be_kind_of Record
355
+ expect(all._data._proxy).to be_kind_of LHS::Collection
356
+ expect(all.count).to eq 301
357
+ expect(all.last).to eq 301
358
+ end
359
+ end
287
360
  end
@@ -77,7 +77,6 @@ describe LHS::Record do
77
77
  end
78
78
 
79
79
  it 'forwards tracing options to lhc' do
80
- # binding.pry
81
80
  Place.last
82
81
  end
83
82
  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.5.0
4
+ version: 19.6.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-07-08 00:00:00.000000000 Z
11
+ date: 2019-07-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -215,6 +215,7 @@ files:
215
215
  - cider-ci/task_components/rspec.yml
216
216
  - cider-ci/task_components/rubocop.yml
217
217
  - cider-ci/task_components/ruby.yml
218
+ - friday.yml
218
219
  - lhs.gemspec
219
220
  - lib/lhs.rb
220
221
  - lib/lhs/collection.rb
@@ -266,6 +267,7 @@ files:
266
267
  - lib/lhs/endpoint.rb
267
268
  - lib/lhs/item.rb
268
269
  - lib/lhs/pagination/base.rb
270
+ - lib/lhs/pagination/link.rb
269
271
  - lib/lhs/pagination/offset.rb
270
272
  - lib/lhs/pagination/page.rb
271
273
  - lib/lhs/pagination/start.rb
@@ -380,7 +382,11 @@ files:
380
382
  - spec/item/validation_spec.rb
381
383
  - spec/item/warning_codes_spec.rb
382
384
  - spec/item/warnings_spec.rb
383
- - spec/pagination/pages_left_spec.rb
385
+ - spec/pagination/link/current_page_spec.rb
386
+ - spec/pagination/link/pages_left_spec.rb
387
+ - spec/pagination/link/parallel_spec.rb
388
+ - spec/pagination/link/total_spec.rb
389
+ - spec/pagination/offset/pages_left_spec.rb
384
390
  - spec/pagination/parameters_spec.rb
385
391
  - spec/proxy/create_sub_resource_spec.rb
386
392
  - spec/proxy/load_spec.rb
@@ -584,7 +590,11 @@ test_files:
584
590
  - spec/item/validation_spec.rb
585
591
  - spec/item/warning_codes_spec.rb
586
592
  - spec/item/warnings_spec.rb
587
- - spec/pagination/pages_left_spec.rb
593
+ - spec/pagination/link/current_page_spec.rb
594
+ - spec/pagination/link/pages_left_spec.rb
595
+ - spec/pagination/link/parallel_spec.rb
596
+ - spec/pagination/link/total_spec.rb
597
+ - spec/pagination/offset/pages_left_spec.rb
588
598
  - spec/pagination/parameters_spec.rb
589
599
  - spec/proxy/create_sub_resource_spec.rb
590
600
  - spec/proxy/load_spec.rb