killbill-client 0.5.0 → 0.5.1

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: afc7f7b3206167692cc8e770b0d94c7dee22c3fc
4
+ data.tar.gz: 36f151c0680ad5b724e07f24ec285b3ad6fe7d65
5
+ SHA512:
6
+ metadata.gz: ff6427c84fc9e582af9f2439793276478b883feb49c19fbaf4e273b7f3fd9de57342503f1cd0ef94eeab2fadb0a0d0d8cece83ed3643d94f9cfbc62024ccd766
7
+ data.tar.gz: d64f2c1ff40af7acfe76963cba4ca024b021809bc2e200308c45302443afe58579fb02b54dae552aa297a74ff3d7d8c176cf7e1ec6ffdc80ac88915aac9eddc4
@@ -20,12 +20,20 @@ module KillBillClient
20
20
  options
21
21
  end
22
22
 
23
- def find_in_batches_by_search_key(search_key, offset = 0, limit = 100, with_plugin_info = false, options = {})
23
+ def find_in_batches(offset = 0, limit = 100, options = {})
24
+ get "#{KILLBILL_API_PAYMENT_METHODS_PREFIX}/#{Resource::KILLBILL_API_PAGINATION_PREFIX}",
25
+ {
26
+ :offset => offset,
27
+ :limit => limit
28
+ },
29
+ options
30
+ end
31
+
32
+ def find_in_batches_by_search_key(search_key, offset = 0, limit = 100, options = {})
24
33
  get "#{KILLBILL_API_PAYMENT_METHODS_PREFIX}/search/#{search_key}",
25
34
  {
26
35
  :offset => offset,
27
- :limit => limit,
28
- :withPluginInfo => with_plugin_info
36
+ :limit => limit
29
37
  },
30
38
  options
31
39
  end
@@ -4,7 +4,8 @@ module KillBillClient
4
4
  module Model
5
5
  class Resource
6
6
 
7
- attr_reader :etag,
7
+ attr_reader :clazz,
8
+ :etag,
8
9
  :session_id,
9
10
  :response
10
11
 
@@ -53,10 +54,12 @@ module KillBillClient
53
54
  record = from_json resource_class, response.body
54
55
  session_id = extract_session_id(response)
55
56
  record.instance_eval {
57
+ @clazz = resource_class
56
58
  @etag = response['ETag']
57
59
  @session_id = session_id
58
- @pagination_nb_results = response['X-Killbill-Pagination-NbResults']
59
- @pagination_total_nb_results = response['X-Killbill-Pagination-TotalNbResults']
60
+ @pagination_max_nb_records = response['X-Killbill-Pagination-MaxNbRecords'].to_i unless response['X-Killbill-Pagination-MaxNbRecords'].nil?
61
+ @pagination_total_nb_records = response['X-Killbill-Pagination-TotalNbRecords'].to_i unless response['X-Killbill-Pagination-TotalNbRecords'].nil?
62
+ @pagination_next_page = response['X-Killbill-Pagination-NextPageUri']
60
63
  @response = response
61
64
  }
62
65
  record
@@ -2,12 +2,25 @@ module KillBillClient
2
2
  module Model
3
3
  class Resources < ::Array
4
4
 
5
- attr_reader :etag,
6
- :session_id,
7
- :pagination_nb_results,
8
- :pagination_total_nb_results,
9
- :response
5
+ attr_reader :clazz,
6
+ :etag,
7
+ :session_id,
8
+ :pagination_max_nb_records,
9
+ :pagination_total_nb_records,
10
+ :pagination_next_page
11
+ :response
10
12
 
13
+ # Same as .each, but fetch remaining pages as we go
14
+ def each_in_batches(&block)
15
+ each(&block)
16
+
17
+ # Non-pagination usecase or last page reached
18
+ return if @pagination_next_page.nil?
19
+
20
+ # Query the server for the next page
21
+ resources = Resource.get(@pagination_next_page, {}, {}, @clazz)
22
+ resources.each_in_batches(&block)
23
+ end
11
24
  end
12
25
  end
13
26
  end
@@ -2,7 +2,7 @@ module KillBillClient
2
2
  module Version
3
3
  MAJOR = 0
4
4
  MINOR = 5
5
- PATCH = 0
5
+ PATCH = 1
6
6
  PRE = nil
7
7
 
8
8
  VERSION = [MAJOR, MINOR, PATCH, PRE].compact.join('.').freeze
@@ -31,6 +31,34 @@ describe KillBillClient::Model do
31
31
  account.external_key.should == external_key
32
32
  account.payment_method_id.should be_nil
33
33
 
34
+ # Try to retrieve it (bis repetita placent)
35
+ accounts = KillBillClient::Model::Account.find_in_batches
36
+ # Can't test equality if the remote server has extra data
37
+ accounts.pagination_total_nb_records.should >= 1
38
+ accounts.pagination_max_nb_records.should >= 1
39
+ accounts.size.should >= 1
40
+ # If the remote server has lots of data, we need to page through the results (good test!)
41
+ found = nil
42
+ accounts.each_in_batches do |account|
43
+ found = account if account.external_key == external_key
44
+ break unless found.nil?
45
+ end
46
+ found.should_not be_nil
47
+
48
+ # Try to retrieve it via the search API
49
+ accounts = KillBillClient::Model::Account.find_in_batches_by_search_key(account.name)
50
+ # Can't test equality if the remote server has extra data
51
+ accounts.pagination_total_nb_records.should >= 1
52
+ accounts.pagination_max_nb_records.should >= 1
53
+ accounts.size.should >= 1
54
+ # If the remote server has lots of data, we need to page through the results (good test!)
55
+ found = nil
56
+ accounts.each_in_batches do |account|
57
+ found = account if account.external_key == external_key
58
+ break unless found.nil?
59
+ end
60
+ found.should_not be_nil
61
+
34
62
  # Add/Remove a tag
35
63
  account.tags.size.should == 0
36
64
  account.add_tag('TEST', 'KillBill Spec test')
@@ -54,6 +82,20 @@ describe KillBillClient::Model do
54
82
  pm = KillBillClient::Model::PaymentMethod.find_by_id pm.payment_method_id, true
55
83
  pm.account_id.should == account.account_id
56
84
 
85
+ # Try to retrieve it (bis repetita placent)
86
+ pms = KillBillClient::Model::PaymentMethod.find_in_batches
87
+ # Can't test equality if the remote server has extra data
88
+ pms.pagination_total_nb_records.should >= 1
89
+ pms.pagination_max_nb_records.should >= 1
90
+ pms.size.should >= 1
91
+ # If the remote server has lots of data, we need to page through the results (good test!)
92
+ found = nil
93
+ pms.each_in_batches do |payment_method|
94
+ found = payment_method if payment_method.payment_method_id == pm.payment_method_id
95
+ break unless found.nil?
96
+ end
97
+ found.should_not be_nil
98
+
57
99
  account = KillBillClient::Model::Account.find_by_id account.account_id
58
100
  account.payment_method_id.should == pm.payment_method_id
59
101
 
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe KillBillClient::Model::Resources do
4
+ it 'should respect the next page url when calling the .each_in_batches method' do
5
+ stuff = KillBillClient::Model::Resources.new
6
+ 1.upto(10).each { |i| stuff << i }
7
+ stuff.size.should == 10
8
+
9
+ idx = 1
10
+ stuff.each_in_batches do |i|
11
+ i.should == idx
12
+ idx += 1
13
+ end
14
+ end
15
+ end
metadata CHANGED
@@ -1,64 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: killbill-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
5
- prerelease:
4
+ version: 0.5.1
6
5
  platform: ruby
7
6
  authors:
8
7
  - Killbill core team
9
- autorequire:
8
+ autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-10-22 00:00:00.000000000 Z
11
+ date: 2013-10-24 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: json
16
- version_requirements: !ruby/object:Gem::Requirement
15
+ requirement: !ruby/object:Gem::Requirement
17
16
  requirements:
18
17
  - - ~>
19
18
  - !ruby/object:Gem::Version
20
19
  version: 1.8.0
21
- none: false
22
- requirement: !ruby/object:Gem::Requirement
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.8.0
27
- none: false
28
- prerelease: false
29
- type: :runtime
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rake
32
- version_requirements: !ruby/object:Gem::Requirement
29
+ requirement: !ruby/object:Gem::Requirement
33
30
  requirements:
34
31
  - - '>='
35
32
  - !ruby/object:Gem::Version
36
33
  version: 10.0.0
37
- none: false
38
- requirement: !ruby/object:Gem::Requirement
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
39
37
  requirements:
40
38
  - - '>='
41
39
  - !ruby/object:Gem::Version
42
40
  version: 10.0.0
43
- none: false
44
- prerelease: false
45
- type: :development
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rspec
48
- version_requirements: !ruby/object:Gem::Requirement
43
+ requirement: !ruby/object:Gem::Requirement
49
44
  requirements:
50
45
  - - ~>
51
46
  - !ruby/object:Gem::Version
52
47
  version: 2.12.0
53
- none: false
54
- requirement: !ruby/object:Gem::Requirement
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
55
51
  requirements:
56
52
  - - ~>
57
53
  - !ruby/object:Gem::Version
58
54
  version: 2.12.0
59
- none: false
60
- prerelease: false
61
- type: :development
62
55
  description: An API client library for Kill Bill.
63
56
  email: killbilling-users@googlegroups.com
64
57
  executables: []
@@ -139,11 +132,13 @@ files:
139
132
  - spec/killbill_client/model_relation_spec.rb
140
133
  - spec/killbill_client/remote/api_spec.rb
141
134
  - spec/killbill_client/remote/model_spec.rb
135
+ - spec/killbill_client/resources_spec.rb
142
136
  - spec/spec_helper.rb
143
137
  homepage: http://www.killbilling.org
144
138
  licenses:
145
139
  - Apache License (2.0)
146
- post_install_message:
140
+ metadata: {}
141
+ post_install_message:
147
142
  rdoc_options:
148
143
  - --exclude
149
144
  - .
@@ -154,24 +149,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
154
149
  - - '>='
155
150
  - !ruby/object:Gem::Version
156
151
  version: 1.8.6
157
- none: false
158
152
  required_rubygems_version: !ruby/object:Gem::Requirement
159
153
  requirements:
160
154
  - - '>='
161
155
  - !ruby/object:Gem::Version
162
- segments:
163
- - 0
164
156
  version: '0'
165
- hash: 2
166
- none: false
167
157
  requirements: []
168
- rubyforge_project:
169
- rubygems_version: 1.8.24
170
- signing_key:
171
- specification_version: 3
158
+ rubyforge_project:
159
+ rubygems_version: 2.0.3
160
+ signing_key:
161
+ specification_version: 4
172
162
  summary: Kill Bill client library.
173
163
  test_files:
174
164
  - spec/killbill_client/model_relation_spec.rb
175
165
  - spec/killbill_client/remote/api_spec.rb
176
166
  - spec/killbill_client/remote/model_spec.rb
167
+ - spec/killbill_client/resources_spec.rb
177
168
  - spec/spec_helper.rb