iron_bank 4.4.3 → 5.2.0

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
- 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