dhs 1.4.1 → 1.4.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
  SHA256:
3
- metadata.gz: 690186fffb1221bbc432b5a502bdfecb895b1f117e42602e6bef6b2c55cd7bd1
4
- data.tar.gz: 7f544c63db8a4db092a6c3980b3cb2f437879876db145a6ac7d8c6cfc7647a05
3
+ metadata.gz: 8ef9be83e5148eedcda73523574e4d53684aecbf906e9034b12f52c9b8881a7b
4
+ data.tar.gz: c8195c1668a305f9e9fcc723ba2464de9b87f17d2eaaa57ec3d4787ec36d8e45
5
5
  SHA512:
6
- metadata.gz: '087dacf286f24b6860419759c5ea7cd443d69e2cd8f4900b2ee17fdf93d2d9f55918534ec0aff8294e6a4906c2dad51d3c4eb2b6ad8b3f19111a4133ed15f6c5'
7
- data.tar.gz: f14b0dad8dffb72c65cd6b785469a59c590a99187639e554865e99bcf8e696434f262c4e95d64b1241bfd997180ef278ce2f0f0f5b91c6e5f11a673466f7eff8
6
+ metadata.gz: be55a13a577be249b76b1eaeb7baec3a307b94f4a7c2c4643ea1fcf66edb3f8df3927386886babe211b687821229180d33f0cf5e5af04f1af9534ccd67c20ffd
7
+ data.tar.gz: 5ab39a51ac32085b8cb71e183c34edd64a7c5e78c86e6e08faabdd03d196a5aadbbfeba8e7b2ac8dc571d59b2ad7281cda2a20c5d8c131e3fbafdf061c6a0adc
@@ -387,6 +387,7 @@ class DHS::Record
387
387
  end
388
388
 
389
389
  def merge_batch_data_with_parent!(batch_data, parent_data, pagination = nil)
390
+ return if batch_data.raw_items.blank?
390
391
  parent_data.concat(input: parent_data._raw, items: batch_data.raw_items, record: self)
391
392
  return if pagination.present? && pagination.is_a?(DHS::Pagination::Link)
392
393
  [limit_key(:body), total_key, pagination_key(:body)].each do |pagination_attribute|
data/lib/dhs/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module DHS
4
- VERSION = '1.4.1'
4
+ VERSION = '1.4.2'
5
5
  end
@@ -3,7 +3,7 @@
3
3
  require 'rails_helper'
4
4
 
5
5
  describe DHS::Record do
6
- context 'pagination' do
6
+ context 'next offset pagination' do
7
7
  def stub_api_request(next_offset:, items: [], offset: nil)
8
8
  stub_request(:get, ['http://depay.fi/v2/transactions?limit=100', offset ? "offset=#{offset}" : nil].compact.join('&'))
9
9
  .to_return(body: { items: items, next_offset: next_offset }.to_json)
@@ -28,4 +28,56 @@ describe DHS::Record do
28
28
  expect(transactions.to_a).to eq (0...300).to_a
29
29
  end
30
30
  end
31
+
32
+ context 'next offset pagination with items configuration' do
33
+ def stub_api_request(next_offset:, items: [], offset: nil)
34
+ stub_request(:get, ['http://depay.fi/v2/transactions?limit=100', offset ? "offset=#{offset}" : nil].compact.join('&'))
35
+ .to_return(body: { assets: items, next_offset: next_offset }.to_json)
36
+ end
37
+
38
+ let!(:requests) do
39
+ stub_api_request(items: (0...100).to_a, next_offset: 99)
40
+ stub_api_request(items: (100...200).to_a, offset: 99, next_offset: 199)
41
+ stub_api_request(items: (200...300).to_a, offset: 199, next_offset: 0)
42
+ end
43
+
44
+ before do
45
+ class Transaction < DHS::Record
46
+ configuration items_key: :assets, pagination_strategy: :next_offset, pagination_key: { body: :next_offset, parameter: :offset }
47
+
48
+ endpoint 'http://depay.fi/v2/transactions'
49
+ end
50
+ end
51
+
52
+ it 'fetches and merges all the assets/items' do
53
+ transactions = Transaction.all.fetch
54
+ expect(transactions.to_a).to eq (0...300).to_a
55
+ end
56
+ end
57
+
58
+ context 'next offset pagination with items configuration and nil response' do
59
+ def stub_api_request(next_offset:, items: [], offset: nil)
60
+ stub_request(:get, ['http://depay.fi/v2/transactions?limit=100', offset ? "offset=#{offset}" : nil].compact.join('&'))
61
+ .to_return(body: { assets: items, next_offset: next_offset }.to_json)
62
+ end
63
+
64
+ let!(:requests) do
65
+ stub_api_request(items: (0...100).to_a, next_offset: 99)
66
+ stub_api_request(items: (100...200).to_a, offset: 99, next_offset: 199)
67
+ stub_api_request(items: nil, offset: 199, next_offset: 0)
68
+ end
69
+
70
+ before do
71
+ class Transaction < DHS::Record
72
+ configuration items_key: :assets, pagination_strategy: :next_offset, pagination_key: { body: :next_offset, parameter: :offset }
73
+
74
+ endpoint 'http://depay.fi/v2/transactions'
75
+ end
76
+ end
77
+
78
+ it 'fetches and merges all the assets/items' do
79
+ transactions = Transaction.all.fetch
80
+ expect(transactions.to_a).to eq (0...200).to_a
81
+ end
82
+ end
31
83
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dhs
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - https://github.com/DePayFi/dhs/graphs/contributors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-04-25 00:00:00.000000000 Z
11
+ date: 2023-04-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel