iron_bank 4.4.3 → 5.2.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
- SHA1:
3
- metadata.gz: 83c23241ccd3c9228badb707b4f12c031f3d338d
4
- data.tar.gz: 142aa1b442282003b63012e58d418c8d6dce6ca0
2
+ SHA256:
3
+ metadata.gz: 14e87c406e0f4ae3a6f3c1de8b84039a5d48ccf0ee8a1d208839fc9181160d36
4
+ data.tar.gz: 6b6d4418d571a17bb38a5fd551eaf6f7de5763a5a918e6c933d8e6bca8b20a8b
5
5
  SHA512:
6
- metadata.gz: 010ba8a30e6918ea5d13c6df9bba5860811c4fd14d940a2a1eee89a3c2028029aa1af33771b9eec14b969deef3b68019ec725b95f902af7f27054de510111053
7
- data.tar.gz: d3ba4a439cbf0b307d6cd178f1f0c7a82de78545c47c65212f61759f690c135cd2ef62a150b501c0f7efa6b70f9c99567da4dfc5ba4797db774aef45d35bd35b
6
+ metadata.gz: 1afbd350670d0709e6bcf6b84a33ba1a37525e9254de39dd6efb2af4f2793d467f61e0f175006e246b41f6130784abb67a89112a132d8132b98cfb003c9c4afb
7
+ data.tar.gz: a196e9dcc5c18d3130df47715efa357b400500b9e0a7bbdca4a279642ae99f45f29c169be258b77c1c50f384525bb66fcdee966d0beb036ea6611fffd2c8bbb5
data/.github/CODEOWNERS CHANGED
@@ -1 +1 @@
1
- * @zendesk/narwhals @zendesk/walrus
1
+ * @zendesk/billing
@@ -0,0 +1,50 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - main
7
+ pull_request:
8
+ branches:
9
+ - main
10
+
11
+ jobs:
12
+ test:
13
+ name: Ruby
14
+
15
+ strategy:
16
+ matrix:
17
+ ruby:
18
+ - 2.5
19
+ - 2.6
20
+ - 2.7
21
+ - 3.0
22
+
23
+ runs-on: ubuntu-latest
24
+
25
+ steps:
26
+ - uses: zendesk/checkout@v2
27
+
28
+ - uses: zendesk/setup-ruby@v1
29
+ with:
30
+ ruby-version: ${{ matrix.ruby }}
31
+
32
+ - uses: zendesk/cache@v2
33
+ with:
34
+ path: vendor/bundle
35
+ key: ${{ runner.os }}-gems-${{ matrix.ruby }}-${{ hashFiles('**/Gemfile.lock') }}
36
+ restore-keys: |
37
+ ${{ runner.os }}-gems-
38
+
39
+ - name: Install Dependencies
40
+ run: |
41
+ bundle config deployment true
42
+ bundle config path vendor/bundle
43
+ bundle install --jobs 4
44
+
45
+ - name: Run Tests
46
+ run: bundle exec rake
47
+ env:
48
+ ZUORA_CLIENT_ID: something
49
+ ZUORA_CLIENT_SECRET: secret
50
+ ZUORA_DOMAIN: rest.apisandbox.zuora.com
data/.rubocop.yml CHANGED
@@ -3,15 +3,20 @@ require: rubocop-performance
3
3
  AllCops:
4
4
  DisplayCopNames: true
5
5
  DisplayStyleGuide: true
6
- TargetRubyVersion: 2.4
6
+ NewCops: enable
7
+ SuggestExtensions: false
7
8
 
8
9
  Layout/DotPosition:
9
10
  EnforcedStyle: trailing
10
11
 
11
- Layout/AlignHash:
12
+ Layout/HashAlignment:
12
13
  EnforcedHashRocketStyle: table
13
14
  EnforcedColonStyle: table
14
15
 
16
+ Lint/EmptyBlock:
17
+ Exclude:
18
+ - spec/**/*.rb
19
+
15
20
  Lint/UselessAssignment:
16
21
  Exclude:
17
22
  - bin/console
@@ -39,10 +44,6 @@ Metrics/MethodLength:
39
44
  - lib/iron_bank/error.rb
40
45
  - lib/iron_bank/client.rb
41
46
 
42
- Metrics/LineLength:
43
- Exclude:
44
- - lib/iron_bank.rb
45
-
46
47
  Style/ClassAndModuleChildren:
47
48
  EnforcedStyle: nested
48
49
 
@@ -50,6 +51,9 @@ Style/MixinUsage:
50
51
  Exclude:
51
52
  - lib/iron_bank/resource.rb
52
53
 
54
+ Style/StringLiterals:
55
+ EnforcedStyle: double_quotes
56
+
53
57
  Style/OptionalArguments:
54
58
  Exclude:
55
59
  - lib/iron_bank/local.rb
@@ -63,6 +67,3 @@ Style/RegexpLiteral:
63
67
  Style/RescueStandardError:
64
68
  Exclude:
65
69
  - lib/iron_bank/csv.rb
66
-
67
- Style/StringLiterals:
68
- EnforcedStyle: double_quotes
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.4.6
1
+ 2.5.8
data/Gemfile CHANGED
@@ -4,3 +4,17 @@ source "https://rubygems.org"
4
4
 
5
5
  # Specify your gem's dependencies in zuora.gemspec
6
6
  gemspec
7
+
8
+ gem "bump", "~> 0.5"
9
+ gem "bundler", "~> 2.0"
10
+ gem "dotenv", "~> 2.2"
11
+ gem "factory_bot", "~> 6.0"
12
+ gem "pry-byebug", "~> 3.4"
13
+ gem "rake", "~> 13.0"
14
+ gem "reek", "~> 6.0"
15
+ gem "rspec", "~> 3.0"
16
+ gem "rubocop", "~> 1.0"
17
+ gem "rubocop-performance", "~> 1.0"
18
+ gem "shoulda-matchers", "~> 4.0"
19
+ gem "simplecov", "~> 0.15"
20
+ gem "timecop", "~> 0.9"
data/Gemfile.lock CHANGED
@@ -1,114 +1,109 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- iron_bank (4.4.3)
5
- faraday (~> 0)
6
- faraday_middleware (~> 0)
4
+ iron_bank (5.2.0)
5
+ faraday (~> 1)
6
+ faraday_middleware (~> 1)
7
7
  nokogiri (~> 1)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
- activesupport (5.2.3)
12
+ activesupport (6.1.1)
13
13
  concurrent-ruby (~> 1.0, >= 1.0.2)
14
- i18n (>= 0.7, < 2)
15
- minitest (~> 5.1)
16
- tzinfo (~> 1.1)
17
- ast (2.4.0)
18
- axiom-types (0.1.1)
19
- descendants_tracker (~> 0.0.4)
20
- ice_nine (~> 0.11.0)
21
- thread_safe (~> 0.3, >= 0.3.1)
22
- bump (0.8.0)
23
- byebug (11.0.1)
24
- codeclimate-engine-rb (0.4.1)
25
- virtus (~> 1.0)
26
- coderay (1.1.2)
27
- coercible (1.0.0)
28
- descendants_tracker (~> 0.0.1)
29
- concurrent-ruby (1.1.5)
30
- descendants_tracker (0.0.4)
31
- thread_safe (~> 0.3, >= 0.3.1)
32
- diff-lcs (1.3)
33
- docile (1.3.2)
34
- dotenv (2.7.5)
35
- equalizer (0.0.11)
36
- factory_bot (5.0.2)
37
- activesupport (>= 4.2.0)
38
- faraday (0.17.3)
14
+ i18n (>= 1.6, < 2)
15
+ minitest (>= 5.1)
16
+ tzinfo (~> 2.0)
17
+ zeitwerk (~> 2.3)
18
+ ast (2.4.1)
19
+ bump (0.10.0)
20
+ byebug (11.1.3)
21
+ coderay (1.1.3)
22
+ concurrent-ruby (1.1.7)
23
+ diff-lcs (1.4.4)
24
+ docile (1.3.4)
25
+ dotenv (2.7.6)
26
+ factory_bot (6.1.0)
27
+ activesupport (>= 5.0.0)
28
+ faraday (1.3.0)
29
+ faraday-net_http (~> 1.0)
39
30
  multipart-post (>= 1.2, < 3)
40
- faraday_middleware (0.14.0)
41
- faraday (>= 0.7.4, < 1.0)
42
- i18n (1.6.0)
31
+ ruby2_keywords
32
+ faraday-net_http (1.0.1)
33
+ faraday_middleware (1.0.0)
34
+ faraday (~> 1.0)
35
+ i18n (1.8.7)
43
36
  concurrent-ruby (~> 1.0)
44
- ice_nine (0.11.2)
45
- jaro_winkler (1.5.3)
46
- json (2.2.0)
47
37
  kwalify (0.7.2)
48
- method_source (0.9.2)
49
- mini_portile2 (2.4.0)
50
- minitest (5.11.3)
38
+ method_source (1.0.0)
39
+ mini_portile2 (2.5.0)
40
+ minitest (5.14.3)
51
41
  multipart-post (2.1.1)
52
- nokogiri (1.10.10)
53
- mini_portile2 (~> 2.4.0)
54
- parallel (1.17.0)
55
- parser (2.6.3.0)
56
- ast (~> 2.4.0)
57
- pry (0.12.2)
58
- coderay (~> 1.1.0)
59
- method_source (~> 0.9.0)
60
- pry-byebug (3.7.0)
42
+ nokogiri (1.11.1)
43
+ mini_portile2 (~> 2.5.0)
44
+ racc (~> 1.4)
45
+ parallel (1.20.1)
46
+ parser (3.0.0.0)
47
+ ast (~> 2.4.1)
48
+ pry (0.13.1)
49
+ coderay (~> 1.1)
50
+ method_source (~> 1.0)
51
+ pry-byebug (3.9.0)
61
52
  byebug (~> 11.0)
62
- pry (~> 0.10)
63
- psych (3.1.0)
53
+ pry (~> 0.13.0)
54
+ psych (3.3.0)
55
+ racc (1.5.2)
64
56
  rainbow (3.0.0)
65
- rake (12.3.3)
66
- reek (5.4.0)
67
- codeclimate-engine-rb (~> 0.4.0)
57
+ rake (13.0.3)
58
+ reek (6.0.3)
68
59
  kwalify (~> 0.7.0)
69
- parser (>= 2.5.0.0, < 2.7, != 2.5.1.1)
70
- psych (~> 3.1.0)
60
+ parser (~> 3.0.0)
61
+ psych (~> 3.1)
71
62
  rainbow (>= 2.0, < 4.0)
72
- rspec (3.8.0)
73
- rspec-core (~> 3.8.0)
74
- rspec-expectations (~> 3.8.0)
75
- rspec-mocks (~> 3.8.0)
76
- rspec-core (3.8.2)
77
- rspec-support (~> 3.8.0)
78
- rspec-expectations (3.8.4)
63
+ regexp_parser (2.0.3)
64
+ rexml (3.2.4)
65
+ rspec (3.10.0)
66
+ rspec-core (~> 3.10.0)
67
+ rspec-expectations (~> 3.10.0)
68
+ rspec-mocks (~> 3.10.0)
69
+ rspec-core (3.10.1)
70
+ rspec-support (~> 3.10.0)
71
+ rspec-expectations (3.10.1)
79
72
  diff-lcs (>= 1.2.0, < 2.0)
80
- rspec-support (~> 3.8.0)
81
- rspec-mocks (3.8.1)
73
+ rspec-support (~> 3.10.0)
74
+ rspec-mocks (3.10.1)
82
75
  diff-lcs (>= 1.2.0, < 2.0)
83
- rspec-support (~> 3.8.0)
84
- rspec-support (3.8.2)
85
- rubocop (0.74.0)
86
- jaro_winkler (~> 1.5.1)
76
+ rspec-support (~> 3.10.0)
77
+ rspec-support (3.10.1)
78
+ rubocop (1.8.1)
87
79
  parallel (~> 1.10)
88
- parser (>= 2.6)
80
+ parser (>= 3.0.0.0)
89
81
  rainbow (>= 2.2.2, < 4.0)
82
+ regexp_parser (>= 1.8, < 3.0)
83
+ rexml
84
+ rubocop-ast (>= 1.2.0, < 2.0)
90
85
  ruby-progressbar (~> 1.7)
91
- unicode-display_width (>= 1.4.0, < 1.7)
92
- rubocop-performance (1.4.1)
93
- rubocop (>= 0.71.0)
94
- ruby-progressbar (1.10.1)
95
- shoulda-matchers (4.1.2)
86
+ unicode-display_width (>= 1.4.0, < 3.0)
87
+ rubocop-ast (1.4.0)
88
+ parser (>= 2.7.1.5)
89
+ rubocop-performance (1.9.2)
90
+ rubocop (>= 0.90.0, < 2.0)
91
+ rubocop-ast (>= 0.4.0)
92
+ ruby-progressbar (1.11.0)
93
+ ruby2_keywords (0.0.4)
94
+ shoulda-matchers (4.5.0)
96
95
  activesupport (>= 4.2.0)
97
- simplecov (0.17.0)
96
+ simplecov (0.21.2)
98
97
  docile (~> 1.1)
99
- json (>= 1.8, < 3)
100
- simplecov-html (~> 0.10.0)
101
- simplecov-html (0.10.2)
102
- thread_safe (0.3.6)
103
- timecop (0.9.1)
104
- tzinfo (1.2.5)
105
- thread_safe (~> 0.1)
106
- unicode-display_width (1.6.0)
107
- virtus (1.0.5)
108
- axiom-types (~> 0.1)
109
- coercible (~> 1.0)
110
- descendants_tracker (~> 0.0, >= 0.0.3)
111
- equalizer (~> 0.0, >= 0.0.9)
98
+ simplecov-html (~> 0.11)
99
+ simplecov_json_formatter (~> 0.1)
100
+ simplecov-html (0.12.3)
101
+ simplecov_json_formatter (0.1.2)
102
+ timecop (0.9.2)
103
+ tzinfo (2.0.4)
104
+ concurrent-ruby (~> 1.0)
105
+ unicode-display_width (2.0.0)
106
+ zeitwerk (2.4.2)
112
107
 
113
108
  PLATFORMS
114
109
  ruby
@@ -117,17 +112,17 @@ DEPENDENCIES
117
112
  bump (~> 0.5)
118
113
  bundler (~> 2.0)
119
114
  dotenv (~> 2.2)
120
- factory_bot (~> 5.0)
115
+ factory_bot (~> 6.0)
121
116
  iron_bank!
122
117
  pry-byebug (~> 3.4)
123
- rake (~> 12.0)
124
- reek (~> 5.0)
118
+ rake (~> 13.0)
119
+ reek (~> 6.0)
125
120
  rspec (~> 3.0)
126
- rubocop (~> 0.67)
121
+ rubocop (~> 1.0)
127
122
  rubocop-performance (~> 1.0)
128
123
  shoulda-matchers (~> 4.0)
129
124
  simplecov (~> 0.15)
130
125
  timecop (~> 0.9)
131
126
 
132
127
  BUNDLED WITH
133
- 2.1.4
128
+ 2.2.6
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Iron Bank
2
2
 
3
- [![Build Status][travis-status]][travis-build]
3
+ ![CI](https://github.com/zendesk/iron_bank/workflows/CI/badge.svg?branch=main)
4
4
 
5
5
  An opinionated Ruby interface to the [Zuora REST API][zuora-dev].
6
6
 
@@ -13,7 +13,7 @@ This gem provides opinionated resources to interact with the Zuora API through
13
13
  their REST interface. It defines **associations** between them, as well as a
14
14
  simple **declaration API** (`with_one`, `with_many`) to extend them.
15
15
 
16
- This gem is tested against Ruby `>= 2.4`.
16
+ This gem is tested against Ruby `>= 2.5`.
17
17
 
18
18
  Please use [GitHub Issues][issues] to report bugs.
19
19
 
@@ -23,8 +23,7 @@ You will need:
23
23
 
24
24
  - a **Zuora tenant** (apisandbox, services, performances or production)
25
25
  - an **administrator access** to this tenant (to gain API access)
26
- - and an **OAuth client** for this user
27
- ([Zuora documentation][zuora-doc-oauth])
26
+ - and an **OAuth client** for this user ([Zuora documentation][zuora-doc-oauth])
28
27
 
29
28
  IronBank is a pure Ruby client, but we do provide a generator (for the
30
29
  configuration) when using it within [Rails][rails-website].
@@ -89,9 +88,9 @@ account.active_subscriptions
89
88
 
90
89
  ## Local records
91
90
 
92
- If your product catalog does not change often, you may want to export
93
- it locally so that product catalog and related object queries look for
94
- **local records** first, then **fallback** to the API if no records are found.
91
+ If your product catalog does not change often, you may want to export it locally
92
+ so that product catalog and related object queries look for **local records**
93
+ first, then **fallback** to the API if no records are found.
95
94
 
96
95
  You can export your product catalog locally using the `LocalRecords` class:
97
96
 
@@ -155,10 +154,9 @@ CONDITIONS OF ANY KIND, either express or implied. See the License for the
155
154
  specific language governing permissions and limitations under the License.
156
155
 
157
156
  [issues]: https://github.com/zendesk/iron_bank/issues
158
- [travis-status]: https://travis-ci.com/zendesk/iron_bank.svg?token=Qzkq5papoR7sdedznjeb&branch=master
159
- [travis-build]: https://travis-ci.com/zendesk/iron_bank
160
157
  [zuora-describe]: https://www.zuora.com/developer/api-reference/#tag/Describe
161
158
  [zuora-dev]: https://developer.zuora.com
162
- [zuora-doc-oauth]: https://knowledgecenter.zuora.com/CF_Users_and_Administrators/A_Administrator_Settings/Manage_Users#Create_an_OAuth_Client_for_a_User
159
+ [zuora-doc-oauth]:
160
+ https://knowledgecenter.zuora.com/CF_Users_and_Administrators/A_Administrator_Settings/Manage_Users#Create_an_OAuth_Client_for_a_User
163
161
  [zuora-website]: https://www.zuora.com
164
162
  [rails-website]: https://rubyonrails.org/
data/iron_bank.gemspec CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |spec|
19
19
  "mturan@zendesk.com"
20
20
  ]
21
21
 
22
- spec.required_ruby_version = ">= 2.4"
22
+ spec.required_ruby_version = ">= 2.5"
23
23
 
24
24
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
25
25
  f.match(%r{^(test|spec|features)/})
@@ -29,21 +29,7 @@ Gem::Specification.new do |spec|
29
29
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
30
30
  spec.require_paths = ["lib"]
31
31
 
32
- spec.add_development_dependency "bump", "~> 0.5"
33
- spec.add_development_dependency "bundler", "~> 2.0"
34
- spec.add_development_dependency "dotenv", "~> 2.2"
35
- spec.add_development_dependency "factory_bot", "~> 5.0"
36
- spec.add_development_dependency "pry-byebug", "~> 3.4"
37
- spec.add_development_dependency "rake", "~> 12.0"
38
- spec.add_development_dependency "reek", "~> 5.0"
39
- spec.add_development_dependency "rspec", "~> 3.0"
40
- spec.add_development_dependency "rubocop", "~> 0.67"
41
- spec.add_development_dependency "rubocop-performance", "~> 1.0"
42
- spec.add_development_dependency "shoulda-matchers", "~> 4.0"
43
- spec.add_development_dependency "simplecov", "~> 0.15"
44
- spec.add_development_dependency "timecop", "~> 0.9"
45
-
46
- spec.add_runtime_dependency "faraday", "~> 0"
47
- spec.add_runtime_dependency "faraday_middleware", "~> 0"
48
- spec.add_runtime_dependency "nokogiri", "~> 1"
32
+ spec.add_dependency "faraday", "~> 1"
33
+ spec.add_dependency "faraday_middleware", "~> 1"
34
+ spec.add_dependency "nokogiri", "~> 1"
49
35
  end
data/lib/iron_bank.rb CHANGED
@@ -25,7 +25,7 @@ module IronBank
25
25
 
26
26
  return unless configuration.credentials?
27
27
 
28
- self.client ||= IronBank::Client.new(configuration.credentials)
28
+ self.client ||= IronBank::Client.new(**configuration.credentials)
29
29
  end
30
30
 
31
31
  def self.logger
@@ -60,7 +60,9 @@ require "iron_bank/faraday_middleware/response/raise_error"
60
60
  require "iron_bank/faraday_middleware/response/renew_auth"
61
61
 
62
62
  # Use default configuration
63
+ # rubocop:disable Lint/EmptyBlock
63
64
  IronBank.configure {}
65
+ # rubocop:enable Lint/EmptyBlock
64
66
 
65
67
  # Actions
66
68
  require "iron_bank/action"
@@ -40,9 +40,11 @@ module IronBank
40
40
 
41
41
  def response_object
42
42
  @response_object ||= begin
43
- return {} unless body.is_a?(Array)
44
-
45
- ::IronBank::Object.new(body.first).deep_underscore
43
+ if body.is_a?(Array)
44
+ ::IronBank::Object.new(body.first).deep_underscore
45
+ else
46
+ {}
47
+ end
46
48
  end
47
49
  end
48
50
 
@@ -24,6 +24,8 @@ module IronBank
24
24
  def initialize(zoql, limit)
25
25
  @zoql = zoql
26
26
  @limit = limit
27
+
28
+ super(zoql: zoql, limit: limit)
27
29
  end
28
30
 
29
31
  def params
@@ -12,7 +12,7 @@ module IronBank
12
12
  :resource_name,
13
13
  IronBank::Utils.camelize(name)
14
14
  )
15
- foreign_key = options.fetch(:foreign_key, name.to_s + "_id")
15
+ foreign_key = options.fetch(:foreign_key, "#{name}_id")
16
16
 
17
17
  define_method(name) do
18
18
  return unless (foreign_key_value = public_send(foreign_key))
@@ -37,7 +37,7 @@ module IronBank
37
37
 
38
38
  foreign_key = options.fetch(
39
39
  :foreign_key,
40
- IronBank::Utils.underscore(object_name) + "_id"
40
+ "#{IronBank::Utils.underscore(object_name)}_id"
41
41
  )
42
42
 
43
43
  define_method(name) do
@@ -60,9 +60,7 @@ module IronBank
60
60
  def with_memoization(name)
61
61
  # NOTE: We use `instance_variables.include?` instead of `defined?`.
62
62
  # Later it will always evaluate to `true` because it's an expression.
63
- if instance_variables.include?(:"@#{name}")
64
- return instance_variable_get(:"@#{name}")
65
- end
63
+ return instance_variable_get(:"@#{name}") if instance_variables.include?(:"@#{name}")
66
64
 
67
65
  memoizable = yield
68
66
  instance_variable_set(:"@#{name}", memoizable)
@@ -17,7 +17,7 @@ module IronBank
17
17
  end
18
18
 
19
19
  def create_session
20
- @session = adapter.new(params)
20
+ @session = adapter.new(**params)
21
21
  end
22
22
  alias renew_session create_session
23
23
 
@@ -43,7 +43,7 @@ module IronBank
43
43
  alias refetch_cookie fetch_cookie
44
44
 
45
45
  def fetch_zsession
46
- /ZSession=([^\;]+)/.match(cookie)[0]
46
+ /ZSession=([^;]+)/.match(cookie)[0]
47
47
  end
48
48
 
49
49
  def authenticate
@@ -51,7 +51,7 @@ module IronBank
51
51
  end
52
52
 
53
53
  def connection
54
- @connection ||= Faraday.new(faraday_config) do |conn|
54
+ @connection ||= Faraday.new(**faraday_config) do |conn|
55
55
  IronBank.configuration.middlewares.each do |klass, options|
56
56
  conn.use klass, options
57
57
  end
@@ -63,7 +63,7 @@ module IronBank
63
63
  @export_directory = value
64
64
  return unless defined? IronBank::Product
65
65
 
66
- IronBank::LocalRecords::RESOURCE_QUERY_FIELDS.keys.each do |resource|
66
+ IronBank::LocalRecords::RESOURCE_QUERY_FIELDS.each_key do |resource|
67
67
  IronBank::Resources.const_get(resource).reset_store
68
68
  end
69
69
  end
@@ -82,12 +82,12 @@ module IronBank
82
82
  def valid_query?
83
83
  # Querying using the ID (which is an indexed field) should return an
84
84
  # empty collection very quickly when successful
85
- object.where(id: INVALID_OBJECT_ID)
85
+ object.where({ id: INVALID_OBJECT_ID })
86
86
 
87
87
  info "Successful query for #{object_name}"
88
88
 
89
89
  true
90
- rescue IronBank::InternalServerError => e
90
+ rescue IronBank::InternalServerError, IronBank::BadRequestError => e
91
91
  @last_failed_fields = extract_fields_from_exception(e)
92
92
 
93
93
  false
@@ -96,9 +96,7 @@ module IronBank
96
96
  def extract_fields_from_exception(exception)
97
97
  message = exception.message
98
98
 
99
- unless FAULT_FIELD_MESSAGES.match(message)
100
- raise "Could not parse error message: #{message}"
101
- end
99
+ raise "Could not parse error message: #{message}" unless FAULT_FIELD_MESSAGES.match(message)
102
100
 
103
101
  failed_fields = Regexp.last_match.
104
102
  captures.
@@ -9,8 +9,6 @@ module IronBank
9
9
  # This class raises an exception based on the HTTP status code and the
10
10
  # `success` flag (if present in the response) from Zuora.
11
11
  class RaiseError < Faraday::Response::Middleware
12
- private
13
-
14
12
  def on_complete(env)
15
13
  (error = IronBank::Error.from_response(env.response)) && raise(error)
16
14
  end
@@ -8,11 +8,11 @@ module IronBank
8
8
  store[id] || super
9
9
  end
10
10
 
11
- def find_each
12
- return enum_for(:find_each) unless block_given?
11
+ def find_each(&block)
12
+ return enum_for(:find_each) unless block
13
13
 
14
14
  values = store.values
15
- values.any? ? values.each { |record| yield record } : super
15
+ values.any? ? values.each(&block) : super
16
16
  end
17
17
 
18
18
  def all
@@ -25,7 +25,9 @@ module IronBank
25
25
 
26
26
  def where(conditions, limit: IronBank::Actions::Query::DEFAULT_ZUORA_LIMIT)
27
27
  records = store.values.select do |record|
28
- conditions.all? { |field, value| record.public_send(field) == value }
28
+ conditions.all? do |field, match_value|
29
+ value_matches?(record.public_send(field), match_value)
30
+ end
29
31
  end
30
32
 
31
33
  records.any? ? records : super
@@ -55,7 +57,7 @@ module IronBank
55
57
  end
56
58
 
57
59
  def load_records
58
- CSV.foreach(file_path, csv_options).with_object({}) do |row, store|
60
+ CSV.foreach(file_path, **csv_options).with_object({}) do |row, store|
59
61
  store[row[:id]] = new(row.to_h.compact)
60
62
  end
61
63
  end
@@ -81,5 +83,14 @@ module IronBank
81
83
  IronBank.configuration.export_directory
82
84
  )
83
85
  end
86
+
87
+ # :reek:UtilityFunction
88
+ def value_matches?(record_value, match_value)
89
+ if match_value.is_a? Array
90
+ match_value.include? record_value
91
+ else
92
+ record_value == match_value
93
+ end
94
+ end
84
95
  end
85
96
  end
@@ -19,7 +19,7 @@ module IronBank
19
19
 
20
20
  def self.export
21
21
  FileUtils.mkdir_p(directory) unless Dir.exist?(directory)
22
- RESOURCE_QUERY_FIELDS.keys.each { |resource| new(resource).save_file }
22
+ RESOURCE_QUERY_FIELDS.each_key { |resource| new(resource).save_file }
23
23
  end
24
24
 
25
25
  def save_file
@@ -14,7 +14,7 @@ module IronBank
14
14
 
15
15
  def_delegators :@logger, :debug, :info, :warn, :error, :fatal
16
16
 
17
- def initialize(logger: ::Logger.new(STDOUT), level: LEVEL)
17
+ def initialize(logger: ::Logger.new($stdout), level: LEVEL)
18
18
  @logger = logger
19
19
  @logger.progname = PROGNAME
20
20
  @logger.level = level
@@ -49,12 +49,10 @@ module IronBank
49
49
 
50
50
  def export
51
51
  tenant.objects.compact.each do |object|
52
- begin
53
- object.export
54
- rescue IronBank::Describe::Object::InvalidXML
55
- # TODO: log the object error
56
- next
57
- end
52
+ object.export
53
+ rescue IronBank::Describe::Object::InvalidXML
54
+ # TODO: log the object error
55
+ next
58
56
  end
59
57
  end
60
58
 
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module IronBank
4
- VERSION = "4.4.3"
4
+ VERSION = "5.2.0"
5
5
  API_VERSION = "v1"
6
6
  end
metadata CHANGED
@@ -1,228 +1,46 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: iron_bank
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.4.3
4
+ version: 5.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mickael Pham
8
8
  - Cheng Cui
9
9
  - Ryan Ringler
10
10
  - Mustafa Turan
11
- autorequire:
11
+ autorequire:
12
12
  bindir: exe
13
13
  cert_chain: []
14
- date: 2020-08-27 00:00:00.000000000 Z
14
+ date: 2021-03-03 00:00:00.000000000 Z
15
15
  dependencies:
16
- - !ruby/object:Gem::Dependency
17
- name: bump
18
- requirement: !ruby/object:Gem::Requirement
19
- requirements:
20
- - - "~>"
21
- - !ruby/object:Gem::Version
22
- version: '0.5'
23
- type: :development
24
- prerelease: false
25
- version_requirements: !ruby/object:Gem::Requirement
26
- requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '0.5'
30
- - !ruby/object:Gem::Dependency
31
- name: bundler
32
- requirement: !ruby/object:Gem::Requirement
33
- requirements:
34
- - - "~>"
35
- - !ruby/object:Gem::Version
36
- version: '2.0'
37
- type: :development
38
- prerelease: false
39
- version_requirements: !ruby/object:Gem::Requirement
40
- requirements:
41
- - - "~>"
42
- - !ruby/object:Gem::Version
43
- version: '2.0'
44
- - !ruby/object:Gem::Dependency
45
- name: dotenv
46
- requirement: !ruby/object:Gem::Requirement
47
- requirements:
48
- - - "~>"
49
- - !ruby/object:Gem::Version
50
- version: '2.2'
51
- type: :development
52
- prerelease: false
53
- version_requirements: !ruby/object:Gem::Requirement
54
- requirements:
55
- - - "~>"
56
- - !ruby/object:Gem::Version
57
- version: '2.2'
58
- - !ruby/object:Gem::Dependency
59
- name: factory_bot
60
- requirement: !ruby/object:Gem::Requirement
61
- requirements:
62
- - - "~>"
63
- - !ruby/object:Gem::Version
64
- version: '5.0'
65
- type: :development
66
- prerelease: false
67
- version_requirements: !ruby/object:Gem::Requirement
68
- requirements:
69
- - - "~>"
70
- - !ruby/object:Gem::Version
71
- version: '5.0'
72
- - !ruby/object:Gem::Dependency
73
- name: pry-byebug
74
- requirement: !ruby/object:Gem::Requirement
75
- requirements:
76
- - - "~>"
77
- - !ruby/object:Gem::Version
78
- version: '3.4'
79
- type: :development
80
- prerelease: false
81
- version_requirements: !ruby/object:Gem::Requirement
82
- requirements:
83
- - - "~>"
84
- - !ruby/object:Gem::Version
85
- version: '3.4'
86
- - !ruby/object:Gem::Dependency
87
- name: rake
88
- requirement: !ruby/object:Gem::Requirement
89
- requirements:
90
- - - "~>"
91
- - !ruby/object:Gem::Version
92
- version: '12.0'
93
- type: :development
94
- prerelease: false
95
- version_requirements: !ruby/object:Gem::Requirement
96
- requirements:
97
- - - "~>"
98
- - !ruby/object:Gem::Version
99
- version: '12.0'
100
- - !ruby/object:Gem::Dependency
101
- name: reek
102
- requirement: !ruby/object:Gem::Requirement
103
- requirements:
104
- - - "~>"
105
- - !ruby/object:Gem::Version
106
- version: '5.0'
107
- type: :development
108
- prerelease: false
109
- version_requirements: !ruby/object:Gem::Requirement
110
- requirements:
111
- - - "~>"
112
- - !ruby/object:Gem::Version
113
- version: '5.0'
114
- - !ruby/object:Gem::Dependency
115
- name: rspec
116
- requirement: !ruby/object:Gem::Requirement
117
- requirements:
118
- - - "~>"
119
- - !ruby/object:Gem::Version
120
- version: '3.0'
121
- type: :development
122
- prerelease: false
123
- version_requirements: !ruby/object:Gem::Requirement
124
- requirements:
125
- - - "~>"
126
- - !ruby/object:Gem::Version
127
- version: '3.0'
128
- - !ruby/object:Gem::Dependency
129
- name: rubocop
130
- requirement: !ruby/object:Gem::Requirement
131
- requirements:
132
- - - "~>"
133
- - !ruby/object:Gem::Version
134
- version: '0.67'
135
- type: :development
136
- prerelease: false
137
- version_requirements: !ruby/object:Gem::Requirement
138
- requirements:
139
- - - "~>"
140
- - !ruby/object:Gem::Version
141
- version: '0.67'
142
- - !ruby/object:Gem::Dependency
143
- name: rubocop-performance
144
- requirement: !ruby/object:Gem::Requirement
145
- requirements:
146
- - - "~>"
147
- - !ruby/object:Gem::Version
148
- version: '1.0'
149
- type: :development
150
- prerelease: false
151
- version_requirements: !ruby/object:Gem::Requirement
152
- requirements:
153
- - - "~>"
154
- - !ruby/object:Gem::Version
155
- version: '1.0'
156
- - !ruby/object:Gem::Dependency
157
- name: shoulda-matchers
158
- requirement: !ruby/object:Gem::Requirement
159
- requirements:
160
- - - "~>"
161
- - !ruby/object:Gem::Version
162
- version: '4.0'
163
- type: :development
164
- prerelease: false
165
- version_requirements: !ruby/object:Gem::Requirement
166
- requirements:
167
- - - "~>"
168
- - !ruby/object:Gem::Version
169
- version: '4.0'
170
- - !ruby/object:Gem::Dependency
171
- name: simplecov
172
- requirement: !ruby/object:Gem::Requirement
173
- requirements:
174
- - - "~>"
175
- - !ruby/object:Gem::Version
176
- version: '0.15'
177
- type: :development
178
- prerelease: false
179
- version_requirements: !ruby/object:Gem::Requirement
180
- requirements:
181
- - - "~>"
182
- - !ruby/object:Gem::Version
183
- version: '0.15'
184
- - !ruby/object:Gem::Dependency
185
- name: timecop
186
- requirement: !ruby/object:Gem::Requirement
187
- requirements:
188
- - - "~>"
189
- - !ruby/object:Gem::Version
190
- version: '0.9'
191
- type: :development
192
- prerelease: false
193
- version_requirements: !ruby/object:Gem::Requirement
194
- requirements:
195
- - - "~>"
196
- - !ruby/object:Gem::Version
197
- version: '0.9'
198
16
  - !ruby/object:Gem::Dependency
199
17
  name: faraday
200
18
  requirement: !ruby/object:Gem::Requirement
201
19
  requirements:
202
20
  - - "~>"
203
21
  - !ruby/object:Gem::Version
204
- version: '0'
22
+ version: '1'
205
23
  type: :runtime
206
24
  prerelease: false
207
25
  version_requirements: !ruby/object:Gem::Requirement
208
26
  requirements:
209
27
  - - "~>"
210
28
  - !ruby/object:Gem::Version
211
- version: '0'
29
+ version: '1'
212
30
  - !ruby/object:Gem::Dependency
213
31
  name: faraday_middleware
214
32
  requirement: !ruby/object:Gem::Requirement
215
33
  requirements:
216
34
  - - "~>"
217
35
  - !ruby/object:Gem::Version
218
- version: '0'
36
+ version: '1'
219
37
  type: :runtime
220
38
  prerelease: false
221
39
  version_requirements: !ruby/object:Gem::Requirement
222
40
  requirements:
223
41
  - - "~>"
224
42
  - !ruby/object:Gem::Version
225
- version: '0'
43
+ version: '1'
226
44
  - !ruby/object:Gem::Dependency
227
45
  name: nokogiri
228
46
  requirement: !ruby/object:Gem::Requirement
@@ -237,7 +55,7 @@ dependencies:
237
55
  - - "~>"
238
56
  - !ruby/object:Gem::Version
239
57
  version: '1'
240
- description:
58
+ description:
241
59
  email:
242
60
  - mickael@zendesk.com
243
61
  - ccui@zendesk.com
@@ -250,12 +68,12 @@ files:
250
68
  - ".env.example"
251
69
  - ".github/CODEOWNERS"
252
70
  - ".github/PULL_REQUEST_TEMPLATE.md"
71
+ - ".github/workflows/ci.yml"
253
72
  - ".gitignore"
254
73
  - ".reek.yml"
255
74
  - ".rspec"
256
75
  - ".rubocop.yml"
257
76
  - ".ruby-version"
258
- - ".travis.yml"
259
77
  - Gemfile
260
78
  - Gemfile.lock
261
79
  - LICENSE
@@ -337,7 +155,7 @@ homepage: https://github.com/zendesk/iron_bank
337
155
  licenses:
338
156
  - Apache-2.0
339
157
  metadata: {}
340
- post_install_message:
158
+ post_install_message:
341
159
  rdoc_options: []
342
160
  require_paths:
343
161
  - lib
@@ -345,16 +163,16 @@ required_ruby_version: !ruby/object:Gem::Requirement
345
163
  requirements:
346
164
  - - ">="
347
165
  - !ruby/object:Gem::Version
348
- version: '2.4'
166
+ version: '2.5'
349
167
  required_rubygems_version: !ruby/object:Gem::Requirement
350
168
  requirements:
351
169
  - - ">="
352
170
  - !ruby/object:Gem::Version
353
171
  version: '0'
354
172
  requirements: []
355
- rubyforge_project:
356
- rubygems_version: 2.6.14.4
357
- signing_key:
173
+ rubyforge_project:
174
+ rubygems_version: 2.7.6.2
175
+ signing_key:
358
176
  specification_version: 4
359
177
  summary: An opinionated Ruby interface to the Zuora API.
360
178
  test_files: []
data/.travis.yml DELETED
@@ -1,23 +0,0 @@
1
- cache: bundler
2
-
3
- language: ruby
4
-
5
- rvm:
6
- - 2.4.6
7
- - 2.5.5
8
- - 2.6.2
9
-
10
- sudo: false
11
-
12
- branches:
13
- only: master
14
-
15
- before_install:
16
- - gem update --system
17
- - gem install bundler --no-document
18
-
19
- env:
20
- global:
21
- - ZUORA_CLIENT_ID=something
22
- - ZUORA_CLIENT_SECRET=secret
23
- - ZUORA_DOMAIN=rest.apisandbox.zuora.com