chargehound 2.2.2 → 2.3.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
2
  SHA256:
3
- metadata.gz: cf8e5d4adb46300517793dc66475bab9b728ae16155c6a4ed312ba6f1d48a3e7
4
- data.tar.gz: c8fc83fc445984adfa3f03e3c5eb515e1697efdbec155e6473f51310feed5fda
3
+ metadata.gz: 10e5712b827a309931649f02599f15bfadcbf841e51c6dd2d6fdd1e983f45f3c
4
+ data.tar.gz: 465c1d4f2234ff6ee6935d743a02c91a7b297ef5b24bfb7140caa5643379deb1
5
5
  SHA512:
6
- metadata.gz: ab9fa1a35c8dc12718af122d2c4d420f0481a58c161684ef3e5516096329e8afa71d45f9d96372029190391ac57ea15043c4fdb19e29f0830b0f193e80db3e43
7
- data.tar.gz: e95bf47d753b4fea57b7b9997b0c2c8f6902efa98e51b0379f8ad3d33eb91f282f6dc7eaf6591507261e1cc58d9c56a76d0f0e3dea05330f067572738e910e2c
6
+ metadata.gz: 00a639c1ecf429abc9d2a002f54200c0f842e5fba32d81443b593dec097a71c0c09f8922bca0f063ab2834510bb3cfd4a20ec7505cede0fdb5285643dc29488d
7
+ data.tar.gz: 6a1676b358c82754387827303a85d32ac94d87847a4ffd6f01d4551c2d1349a186fb3c7d66ffed80cc76c90ad12e0a09528746e89c8476d8ad06436111be6e65
@@ -12,3 +12,12 @@ Style/SymbolArray:
12
12
 
13
13
  Style/SpecialGlobalVars:
14
14
  Enabled: false
15
+
16
+ Metrics/ClassLength:
17
+ Enabled: false
18
+
19
+ Metrics/AbcSize:
20
+ Enabled: false
21
+
22
+ Style/BlockDelimiters:
23
+ Enabled: false
data/CHANGELOG CHANGED
@@ -18,3 +18,5 @@
18
18
  - Update rubocop version
19
19
  2.2.2 September, 2018
20
20
  - Update docs
21
+ 2.3.0 April, 2019
22
+ - Add Correspondence model
@@ -14,7 +14,7 @@ Gem::Specification.new do |spec|
14
14
  spec.description = 'Automatically fight disputes'
15
15
  spec.license = 'MIT'
16
16
 
17
- spec.add_development_dependency 'bundler', '~> 1.5'
17
+ spec.add_development_dependency 'bundler'
18
18
  spec.add_development_dependency 'minitest', '~> 5.8'
19
19
  spec.add_development_dependency 'rake', '~> 11.1'
20
20
  spec.add_development_dependency 'rubocop', '~> 0.49'
@@ -39,10 +39,7 @@ module Chargehound
39
39
  end
40
40
 
41
41
  def build_http_opts
42
- {
43
- use_ssl: true,
44
- read_timeout: Chargehound.timeout
45
- }
42
+ { use_ssl: true, read_timeout: Chargehound.timeout }
46
43
  end
47
44
 
48
45
  def build_headers(body)
@@ -100,7 +97,12 @@ module Chargehound
100
97
  def convert(dict)
101
98
  case dict['object']
102
99
  when 'dispute'
103
- dict['products'].map! { |item| Product.new(item) }
100
+ dict['products'] = dict.fetch('products', []).map { |item|
101
+ Product.new(item)
102
+ }
103
+ dict['correspondence'] = dict.fetch('correspondence', []).map { |item|
104
+ CorrespondenceItem.new(item)
105
+ }
104
106
  Dispute.new(dict)
105
107
  when 'list'
106
108
  dict['data'].map! { |item| convert item }
@@ -40,6 +40,9 @@ module Chargehound
40
40
  class Product < ChargehoundObject
41
41
  end
42
42
 
43
+ class CorrespondenceItem < ChargehoundObject
44
+ end
45
+
43
46
  # Expose response properties via this struct on response objects
44
47
  HTTPResponse = Struct.new(:status)
45
48
  end
@@ -1,3 +1,3 @@
1
1
  module Chargehound
2
- VERSION = '2.2.2'.freeze
2
+ VERSION = '2.3.0'.freeze
3
3
  end
@@ -75,18 +75,60 @@ dispute_with_product_info_response = {
75
75
  ]
76
76
  }
77
77
 
78
- dispute_response = {
78
+ dispute_with_correspondence_info_update = {
79
+ fields: {
80
+ customer_name: 'Susie'
81
+ },
82
+ correspondence: [
83
+ {
84
+ to: 'customer@example.com',
85
+ from: 'noreply@example.com',
86
+ subject: 'Your Order',
87
+ body: 'Your order was received.',
88
+ caption: 'Order confirmation email.'
89
+ }, {
90
+ to: 'customer@example.com',
91
+ from: 'noreply@example.com',
92
+ subject: 'Your Order',
93
+ body: 'Your order was delivered.',
94
+ caption: 'Delivery confirmation email.'
95
+ }
96
+ ]
97
+ }
98
+
99
+ dispute_with_correspondence_info_response = {
79
100
  id: 'dp_123',
80
101
  object: 'dispute',
81
- products: []
102
+ fields: {
103
+ customer_name: 'Susie'
104
+ },
105
+ correspondence: [
106
+ {
107
+ to: 'customer@example.com',
108
+ from: 'noreply@example.com',
109
+ subject: 'Your Order',
110
+ body: 'Your order was received.',
111
+ caption: 'Order confirmation email.'
112
+ }, {
113
+ to: 'customer@example.com',
114
+ from: 'noreply@example.com',
115
+ subject: 'Your Order',
116
+ body: 'Your order was delivered.',
117
+ caption: 'Delivery confirmation email.'
118
+ }
119
+ ]
120
+ }
121
+
122
+ dispute_response = {
123
+ id: 'dp_123',
124
+ object: 'dispute'
82
125
  }
83
126
 
84
127
  dispute_list_response = {
85
128
  object: 'list',
86
129
  data: [{
87
130
  id: 'dp_123',
88
- object: 'dispute',
89
- products: []
131
+ object: 'dispute'
90
132
  }]
91
133
  }
92
134
 
@@ -145,7 +187,8 @@ describe Chargehound::Disputes do
145
187
  data: [{
146
188
  id: 'dp_123',
147
189
  object: 'dispute',
148
- products: []
190
+ products: [],
191
+ correspondence: []
149
192
  }],
150
193
  response: {
151
194
  status: '200'
@@ -174,6 +217,24 @@ describe Chargehound::Disputes do
174
217
  assert_requested stub
175
218
  end
176
219
 
220
+ it 'can list disputes filtered by state' do
221
+ stub = stub_request(:get, 'https://api.chargehound.com/v1/disputes?state=needs_response')
222
+ .with(headers: get_headers)
223
+ .to_return(body: dispute_list_response.to_json)
224
+
225
+ Chargehound::Disputes.list(state: %w[needs_response])
226
+ assert_requested stub
227
+ end
228
+
229
+ it 'can list disputes filtered by multiple states' do
230
+ stub = stub_request(:get, 'https://api.chargehound.com/v1/disputes?state=needs_response&state=warning_needs_response')
231
+ .with(headers: get_headers)
232
+ .to_return(body: dispute_list_response.to_json)
233
+
234
+ Chargehound::Disputes.list(state: %w[needs_response warning_needs_response])
235
+ assert_requested stub
236
+ end
237
+
177
238
  it 'can retrieve a dispute' do
178
239
  stub = stub_request(:get, 'https://api.chargehound.com/v1/disputes/dp_123')
179
240
  .with(headers: get_headers)
@@ -242,6 +303,34 @@ describe Chargehound::Disputes do
242
303
  assert_requested stub
243
304
  end
244
305
 
306
+ it 'can submit a dispute with correspondence data' do
307
+ stub = stub_request(:post, 'https://api.chargehound.com/v1/disputes/dp_123/submit')
308
+ .with(headers: post_headers,
309
+ body: dispute_with_correspondence_info_update.to_json)
310
+ .to_return(body: dispute_with_correspondence_info_response.to_json,
311
+ status: 201)
312
+
313
+ Chargehound::Disputes.submit('dp_123',
314
+ dispute_with_correspondence_info_update)
315
+ assert_requested stub
316
+ end
317
+
318
+ it 'has a model for correspondence data' do
319
+ stub = stub_request(:post, 'https://api.chargehound.com/v1/disputes/dp_123/submit')
320
+ .with(headers: post_headers,
321
+ body: dispute_with_correspondence_info_update.to_json)
322
+ .to_return(body: dispute_with_correspondence_info_response.to_json,
323
+ status: 201)
324
+
325
+ dispute = Chargehound::Disputes.submit(
326
+ 'dp_123', dispute_with_correspondence_info_update
327
+ )
328
+
329
+ assert_instance_of(Chargehound::CorrespondenceItem,
330
+ dispute.correspondence[0])
331
+ assert_requested stub
332
+ end
333
+
245
334
  it 'can update a dispute' do
246
335
  stub = stub_request(:put, 'https://api.chargehound.com/v1/disputes/dp_123')
247
336
  .with(headers: post_headers, body: dispute_update.to_json)
@@ -260,4 +349,15 @@ describe Chargehound::Disputes do
260
349
  Chargehound::Disputes.update('dp_123', dispute_with_product_info_update)
261
350
  assert_requested stub
262
351
  end
352
+
353
+ it 'can update a dispute with correspondence data' do
354
+ stub = stub_request(:put, 'https://api.chargehound.com/v1/disputes/dp_123')
355
+ .with(headers: post_headers,
356
+ body: dispute_with_correspondence_info_update.to_json)
357
+ .to_return(body: dispute_response.to_json)
358
+
359
+ Chargehound::Disputes.update('dp_123',
360
+ dispute_with_correspondence_info_update)
361
+ assert_requested stub
362
+ end
263
363
  end
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chargehound
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.2
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chargehound
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-11 00:00:00.000000000 Z
11
+ date: 2019-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '1.5'
19
+ version: '0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '1.5'
26
+ version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: minitest
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -127,8 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
127
  - !ruby/object:Gem::Version
128
128
  version: '0'
129
129
  requirements: []
130
- rubyforge_project:
131
- rubygems_version: 2.7.6
130
+ rubygems_version: 3.0.3
132
131
  signing_key:
133
132
  specification_version: 4
134
133
  summary: Ruby bindings for the Chargehound API