gocardless_pro 2.1.0 → 2.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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +5 -0
  3. data/circle.yml +11 -3
  4. data/demo.rb +3 -3
  5. data/gocardless_pro.gemspec +6 -6
  6. data/lib/gocardless_pro.rb +2 -1
  7. data/lib/gocardless_pro/api_service.rb +3 -2
  8. data/lib/gocardless_pro/client.rb +6 -6
  9. data/lib/gocardless_pro/error.rb +4 -4
  10. data/lib/gocardless_pro/middlewares/raise_gocardless_errors.rb +4 -4
  11. data/lib/gocardless_pro/request.rb +2 -2
  12. data/lib/gocardless_pro/resources/bank_details_lookup.rb +1 -0
  13. data/lib/gocardless_pro/resources/creditor.rb +1 -0
  14. data/lib/gocardless_pro/resources/creditor_bank_account.rb +1 -0
  15. data/lib/gocardless_pro/resources/customer.rb +1 -0
  16. data/lib/gocardless_pro/resources/customer_bank_account.rb +1 -0
  17. data/lib/gocardless_pro/resources/event.rb +1 -0
  18. data/lib/gocardless_pro/resources/mandate.rb +1 -0
  19. data/lib/gocardless_pro/resources/mandate_pdf.rb +1 -0
  20. data/lib/gocardless_pro/resources/payment.rb +1 -0
  21. data/lib/gocardless_pro/resources/payout.rb +1 -0
  22. data/lib/gocardless_pro/resources/redirect_flow.rb +1 -0
  23. data/lib/gocardless_pro/resources/refund.rb +1 -0
  24. data/lib/gocardless_pro/resources/subscription.rb +1 -0
  25. data/lib/gocardless_pro/services/base_service.rb +1 -1
  26. data/lib/gocardless_pro/version.rb +1 -1
  27. data/spec/api_service_spec.rb +49 -49
  28. data/spec/client_spec.rb +1 -1
  29. data/spec/error_spec.rb +13 -13
  30. data/spec/middlewares/raise_gocardless_errors_spec.rb +15 -16
  31. data/spec/resources/bank_details_lookup_spec.rb +18 -18
  32. data/spec/resources/creditor_bank_account_spec.rb +46 -46
  33. data/spec/resources/creditor_spec.rb +42 -42
  34. data/spec/resources/customer_bank_account_spec.rb +48 -48
  35. data/spec/resources/customer_spec.rb +42 -42
  36. data/spec/resources/event_spec.rb +18 -18
  37. data/spec/resources/mandate_pdf_spec.rb +18 -18
  38. data/spec/resources/mandate_spec.rb +54 -54
  39. data/spec/resources/payment_spec.rb +54 -54
  40. data/spec/resources/payout_spec.rb +18 -18
  41. data/spec/resources/redirect_flow_spec.rb +36 -36
  42. data/spec/resources/refund_spec.rb +42 -42
  43. data/spec/resources/subscription_spec.rb +48 -48
  44. data/spec/response_spec.rb +1 -2
  45. data/spec/services/bank_details_lookups_service_spec.rb +25 -25
  46. data/spec/services/creditor_bank_accounts_service_spec.rb +86 -86
  47. data/spec/services/creditors_service_spec.rb +87 -87
  48. data/spec/services/customer_bank_accounts_service_spec.rb +95 -95
  49. data/spec/services/customers_service_spec.rb +87 -87
  50. data/spec/services/events_service_spec.rb +49 -49
  51. data/spec/services/mandate_pdfs_service_spec.rb +25 -25
  52. data/spec/services/mandates_service_spec.rb +103 -103
  53. data/spec/services/payments_service_spec.rb +103 -103
  54. data/spec/services/payouts_service_spec.rb +49 -49
  55. data/spec/services/redirect_flows_service_spec.rb +52 -52
  56. data/spec/services/refunds_service_spec.rb +87 -87
  57. data/spec/services/subscriptions_service_spec.rb +95 -95
  58. metadata +10 -10
@@ -25,13 +25,13 @@ describe GoCardlessPro::Services::PaymentsService do
25
25
  'links' => 'links-input',
26
26
  'metadata' => 'metadata-input',
27
27
  'reference' => 'reference-input',
28
- 'status' => 'status-input'
28
+ 'status' => 'status-input',
29
29
  }
30
30
  end
31
31
 
32
32
  before do
33
- stub_request(:post, %r{.*api.gocardless.com/payments})
34
- .with(
33
+ stub_request(:post, %r{.*api.gocardless.com/payments}).
34
+ with(
35
35
  body: {
36
36
  'payments' => {
37
37
 
@@ -45,11 +45,11 @@ describe GoCardlessPro::Services::PaymentsService do
45
45
  'links' => 'links-input',
46
46
  'metadata' => 'metadata-input',
47
47
  'reference' => 'reference-input',
48
- 'status' => 'status-input'
49
- }
48
+ 'status' => 'status-input',
49
+ },
50
50
  }
51
- )
52
- .to_return(
51
+ ).
52
+ to_return(
53
53
  body: {
54
54
  'payments' =>
55
55
 
@@ -65,8 +65,8 @@ describe GoCardlessPro::Services::PaymentsService do
65
65
  'links' => 'links-input',
66
66
  'metadata' => 'metadata-input',
67
67
  'reference' => 'reference-input',
68
- 'status' => 'status-input'
69
- }
68
+ 'status' => 'status-input',
69
+ },
70
70
 
71
71
  }.to_json,
72
72
  headers: response_headers
@@ -81,19 +81,19 @@ describe GoCardlessPro::Services::PaymentsService do
81
81
  before { allow_any_instance_of(GoCardlessPro::Request).to receive(:sleep) }
82
82
 
83
83
  it 'retries timeouts' do
84
- stub = stub_request(:post, %r{.*api.gocardless.com/payments})
85
- .to_timeout.then.to_return(status: 200, headers: response_headers)
84
+ stub = stub_request(:post, %r{.*api.gocardless.com/payments}).
85
+ to_timeout.then.to_return(status: 200, headers: response_headers)
86
86
 
87
87
  post_create_response
88
88
  expect(stub).to have_been_requested.twice
89
89
  end
90
90
 
91
91
  it 'retries 5XX errors' do
92
- stub = stub_request(:post, %r{.*api.gocardless.com/payments})
93
- .to_return(status: 502,
94
- headers: { 'Content-Type' => 'text/html' },
95
- body: '<html><body>Response from Cloudflare</body></html>')
96
- .then.to_return(status: 200, headers: response_headers)
92
+ stub = stub_request(:post, %r{.*api.gocardless.com/payments}).
93
+ to_return(status: 502,
94
+ headers: { 'Content-Type' => 'text/html' },
95
+ body: '<html><body>Response from Cloudflare</body></html>').
96
+ then.to_return(status: 200, headers: response_headers)
97
97
 
98
98
  post_create_response
99
99
  expect(stub).to have_been_requested.twice
@@ -111,9 +111,9 @@ describe GoCardlessPro::Services::PaymentsService do
111
111
  type: 'validation_failed',
112
112
  code: 422,
113
113
  errors: [
114
- { message: 'test error message', field: 'test_field' }
115
- ]
116
- }
114
+ { message: 'test error message', field: 'test_field' },
115
+ ],
116
+ },
117
117
  }.to_json,
118
118
  headers: response_headers,
119
119
  status: 422
@@ -141,7 +141,7 @@ describe GoCardlessPro::Services::PaymentsService do
141
141
  'links' => 'links-input',
142
142
  'metadata' => 'metadata-input',
143
143
  'reference' => 'reference-input',
144
- 'status' => 'status-input'
144
+ 'status' => 'status-input',
145
145
  }
146
146
  end
147
147
 
@@ -156,11 +156,11 @@ describe GoCardlessPro::Services::PaymentsService do
156
156
  message: 'A resource has already been created with this idempotency key',
157
157
  reason: 'idempotent_creation_conflict',
158
158
  links: {
159
- conflicting_resource_id: id
160
- }
161
- }
162
- ]
163
- }
159
+ conflicting_resource_id: id,
160
+ },
161
+ },
162
+ ],
163
+ },
164
164
  }.to_json,
165
165
  headers: response_headers,
166
166
  status: 409
@@ -169,8 +169,8 @@ describe GoCardlessPro::Services::PaymentsService do
169
169
 
170
170
  let!(:get_stub) do
171
171
  stub_url = "/payments/#{id}"
172
- stub_request(:get, /.*api.gocardless.com#{stub_url}/)
173
- .to_return(
172
+ stub_request(:get, /.*api.gocardless.com#{stub_url}/).
173
+ to_return(
174
174
  body: {
175
175
  'payments' => {
176
176
 
@@ -184,8 +184,8 @@ describe GoCardlessPro::Services::PaymentsService do
184
184
  'links' => 'links-input',
185
185
  'metadata' => 'metadata-input',
186
186
  'reference' => 'reference-input',
187
- 'status' => 'status-input'
188
- }
187
+ 'status' => 'status-input',
188
+ },
189
189
  }.to_json,
190
190
  headers: response_headers
191
191
  )
@@ -217,14 +217,14 @@ describe GoCardlessPro::Services::PaymentsService do
217
217
  'links' => 'links-input',
218
218
  'metadata' => 'metadata-input',
219
219
  'reference' => 'reference-input',
220
- 'status' => 'status-input'
220
+ 'status' => 'status-input',
221
221
  }],
222
222
  meta: {
223
223
  cursors: {
224
224
  before: nil,
225
- after: 'ABC123'
226
- }
227
- }
225
+ after: 'ABC123',
226
+ },
227
+ },
228
228
  }.to_json
229
229
  end
230
230
 
@@ -270,19 +270,19 @@ describe GoCardlessPro::Services::PaymentsService do
270
270
  before { allow_any_instance_of(GoCardlessPro::Request).to receive(:sleep) }
271
271
 
272
272
  it 'retries timeouts' do
273
- stub = stub_request(:get, %r{.*api.gocardless.com/payments})
274
- .to_timeout.then.to_return(status: 200, headers: response_headers, body: body)
273
+ stub = stub_request(:get, %r{.*api.gocardless.com/payments}).
274
+ to_timeout.then.to_return(status: 200, headers: response_headers, body: body)
275
275
 
276
276
  get_list_response
277
277
  expect(stub).to have_been_requested.twice
278
278
  end
279
279
 
280
280
  it 'retries 5XX errors' do
281
- stub = stub_request(:get, %r{.*api.gocardless.com/payments})
282
- .to_return(status: 502,
283
- headers: { 'Content-Type' => 'text/html' },
284
- body: '<html><body>Response from Cloudflare</body></html>')
285
- .then.to_return(status: 200, headers: response_headers, body: body)
281
+ stub = stub_request(:get, %r{.*api.gocardless.com/payments}).
282
+ to_return(status: 502,
283
+ headers: { 'Content-Type' => 'text/html' },
284
+ body: '<html><body>Response from Cloudflare</body></html>').
285
+ then.to_return(status: 200, headers: response_headers, body: body)
286
286
 
287
287
  get_list_response
288
288
  expect(stub).to have_been_requested.twice
@@ -307,12 +307,12 @@ describe GoCardlessPro::Services::PaymentsService do
307
307
  'links' => 'links-input',
308
308
  'metadata' => 'metadata-input',
309
309
  'reference' => 'reference-input',
310
- 'status' => 'status-input'
310
+ 'status' => 'status-input',
311
311
  }],
312
312
  meta: {
313
313
  cursors: { after: 'AB345' },
314
- limit: 1
315
- }
314
+ limit: 1,
315
+ },
316
316
  }.to_json,
317
317
  headers: response_headers
318
318
  )
@@ -333,12 +333,12 @@ describe GoCardlessPro::Services::PaymentsService do
333
333
  'links' => 'links-input',
334
334
  'metadata' => 'metadata-input',
335
335
  'reference' => 'reference-input',
336
- 'status' => 'status-input'
336
+ 'status' => 'status-input',
337
337
  }],
338
338
  meta: {
339
339
  limit: 2,
340
- cursors: {}
341
- }
340
+ cursors: {},
341
+ },
342
342
  }.to_json,
343
343
  headers: response_headers
344
344
  )
@@ -368,19 +368,19 @@ describe GoCardlessPro::Services::PaymentsService do
368
368
  'links' => 'links-input',
369
369
  'metadata' => 'metadata-input',
370
370
  'reference' => 'reference-input',
371
- 'status' => 'status-input'
371
+ 'status' => 'status-input',
372
372
  }],
373
373
  meta: {
374
374
  cursors: { after: 'AB345' },
375
- limit: 1
376
- }
375
+ limit: 1,
376
+ },
377
377
  }.to_json,
378
378
  headers: response_headers
379
379
  )
380
380
 
381
- second_response_stub = stub_request(:get, %r{.*api.gocardless.com/payments\?after=AB345})
382
- .to_timeout.then
383
- .to_return(
381
+ second_response_stub = stub_request(:get, %r{.*api.gocardless.com/payments\?after=AB345}).
382
+ to_timeout.then.
383
+ to_return(
384
384
  body: {
385
385
  'payments' => [{
386
386
 
@@ -394,12 +394,12 @@ describe GoCardlessPro::Services::PaymentsService do
394
394
  'links' => 'links-input',
395
395
  'metadata' => 'metadata-input',
396
396
  'reference' => 'reference-input',
397
- 'status' => 'status-input'
397
+ 'status' => 'status-input',
398
398
  }],
399
399
  meta: {
400
400
  limit: 2,
401
- cursors: {}
402
- }
401
+ cursors: {},
402
+ },
403
403
  }.to_json,
404
404
  headers: response_headers
405
405
  )
@@ -425,18 +425,18 @@ describe GoCardlessPro::Services::PaymentsService do
425
425
  'links' => 'links-input',
426
426
  'metadata' => 'metadata-input',
427
427
  'reference' => 'reference-input',
428
- 'status' => 'status-input'
428
+ 'status' => 'status-input',
429
429
  }],
430
430
  meta: {
431
431
  cursors: { after: 'AB345' },
432
- limit: 1
433
- }
432
+ limit: 1,
433
+ },
434
434
  }.to_json,
435
435
  headers: response_headers
436
436
  )
437
437
 
438
- second_response_stub = stub_request(:get, %r{.*api.gocardless.com/payments\?after=AB345})
439
- .to_return(
438
+ second_response_stub = stub_request(:get, %r{.*api.gocardless.com/payments\?after=AB345}).
439
+ to_return(
440
440
  status: 502,
441
441
  body: '<html><body>Response from Cloudflare</body></html>',
442
442
  headers: { 'Content-Type' => 'text/html' }
@@ -454,12 +454,12 @@ describe GoCardlessPro::Services::PaymentsService do
454
454
  'links' => 'links-input',
455
455
  'metadata' => 'metadata-input',
456
456
  'reference' => 'reference-input',
457
- 'status' => 'status-input'
457
+ 'status' => 'status-input',
458
458
  }],
459
459
  meta: {
460
460
  limit: 2,
461
- cursors: {}
462
- }
461
+ cursors: {},
462
+ },
463
463
  }.to_json,
464
464
  headers: response_headers
465
465
  )
@@ -480,9 +480,9 @@ describe GoCardlessPro::Services::PaymentsService do
480
480
  context 'passing in a custom header' do
481
481
  let!(:stub) do
482
482
  stub_url = '/payments/:identity'.gsub(':identity', id)
483
- stub_request(:get, /.*api.gocardless.com#{stub_url}/)
484
- .with(headers: { 'Foo' => 'Bar' })
485
- .to_return(
483
+ stub_request(:get, /.*api.gocardless.com#{stub_url}/).
484
+ with(headers: { 'Foo' => 'Bar' }).
485
+ to_return(
486
486
  body: {
487
487
  'payments' => {
488
488
 
@@ -496,8 +496,8 @@ describe GoCardlessPro::Services::PaymentsService do
496
496
  'links' => 'links-input',
497
497
  'metadata' => 'metadata-input',
498
498
  'reference' => 'reference-input',
499
- 'status' => 'status-input'
500
- }
499
+ 'status' => 'status-input',
500
+ },
501
501
  }.to_json,
502
502
  headers: response_headers
503
503
  )
@@ -505,7 +505,7 @@ describe GoCardlessPro::Services::PaymentsService do
505
505
 
506
506
  subject(:get_response) do
507
507
  client.payments.get(id, headers: {
508
- 'Foo' => 'Bar'
508
+ 'Foo' => 'Bar',
509
509
  })
510
510
  end
511
511
 
@@ -532,8 +532,8 @@ describe GoCardlessPro::Services::PaymentsService do
532
532
  'links' => 'links-input',
533
533
  'metadata' => 'metadata-input',
534
534
  'reference' => 'reference-input',
535
- 'status' => 'status-input'
536
- }
535
+ 'status' => 'status-input',
536
+ },
537
537
  }.to_json,
538
538
  headers: response_headers
539
539
  )
@@ -572,8 +572,8 @@ describe GoCardlessPro::Services::PaymentsService do
572
572
  it 'retries timeouts' do
573
573
  stub_url = '/payments/:identity'.gsub(':identity', id)
574
574
 
575
- stub = stub_request(:get, /.*api.gocardless.com#{stub_url}/)
576
- .to_timeout.then.to_return(status: 200, headers: response_headers)
575
+ stub = stub_request(:get, /.*api.gocardless.com#{stub_url}/).
576
+ to_timeout.then.to_return(status: 200, headers: response_headers)
577
577
 
578
578
  get_response
579
579
  expect(stub).to have_been_requested.twice
@@ -582,11 +582,11 @@ describe GoCardlessPro::Services::PaymentsService do
582
582
  it 'retries 5XX errors' do
583
583
  stub_url = '/payments/:identity'.gsub(':identity', id)
584
584
 
585
- stub = stub_request(:get, /.*api.gocardless.com#{stub_url}/)
586
- .to_return(status: 502,
587
- headers: { 'Content-Type' => 'text/html' },
588
- body: '<html><body>Response from Cloudflare</body></html>')
589
- .then.to_return(status: 200, headers: response_headers)
585
+ stub = stub_request(:get, /.*api.gocardless.com#{stub_url}/).
586
+ to_return(status: 502,
587
+ headers: { 'Content-Type' => 'text/html' },
588
+ body: '<html><body>Response from Cloudflare</body></html>').
589
+ then.to_return(status: 200, headers: response_headers)
590
590
 
591
591
  get_response
592
592
  expect(stub).to have_been_requested.twice
@@ -617,8 +617,8 @@ describe GoCardlessPro::Services::PaymentsService do
617
617
  'links' => 'links-input',
618
618
  'metadata' => 'metadata-input',
619
619
  'reference' => 'reference-input',
620
- 'status' => 'status-input'
621
- }
620
+ 'status' => 'status-input',
621
+ },
622
622
  }.to_json,
623
623
  headers: response_headers
624
624
  )
@@ -634,8 +634,8 @@ describe GoCardlessPro::Services::PaymentsService do
634
634
 
635
635
  it 'retries timeouts' do
636
636
  stub_url = '/payments/:identity'.gsub(':identity', id)
637
- stub = stub_request(:put, /.*api.gocardless.com#{stub_url}/)
638
- .to_timeout.then.to_return(status: 200, headers: response_headers)
637
+ stub = stub_request(:put, /.*api.gocardless.com#{stub_url}/).
638
+ to_timeout.then.to_return(status: 200, headers: response_headers)
639
639
 
640
640
  put_update_response
641
641
  expect(stub).to have_been_requested.twice
@@ -643,11 +643,11 @@ describe GoCardlessPro::Services::PaymentsService do
643
643
 
644
644
  it 'retries 5XX errors' do
645
645
  stub_url = '/payments/:identity'.gsub(':identity', id)
646
- stub = stub_request(:put, /.*api.gocardless.com#{stub_url}/)
647
- .to_return(status: 502,
648
- headers: { 'Content-Type' => 'text/html' },
649
- body: '<html><body>Response from Cloudflare</body></html>')
650
- .then.to_return(status: 200, headers: response_headers)
646
+ stub = stub_request(:put, /.*api.gocardless.com#{stub_url}/).
647
+ to_return(status: 502,
648
+ headers: { 'Content-Type' => 'text/html' },
649
+ body: '<html><body>Response from Cloudflare</body></html>').
650
+ then.to_return(status: 200, headers: response_headers)
651
651
 
652
652
  put_update_response
653
653
  expect(stub).to have_been_requested.twice
@@ -678,8 +678,8 @@ describe GoCardlessPro::Services::PaymentsService do
678
678
  'links' => 'links-input',
679
679
  'metadata' => 'metadata-input',
680
680
  'reference' => 'reference-input',
681
- 'status' => 'status-input'
682
- }
681
+ 'status' => 'status-input',
682
+ },
683
683
  }.to_json,
684
684
  headers: response_headers
685
685
  )
@@ -694,8 +694,8 @@ describe GoCardlessPro::Services::PaymentsService do
694
694
  describe 'retry behaviour' do
695
695
  it "doesn't retry errors" do
696
696
  stub_url = '/payments/:identity/actions/cancel'.gsub(':identity', resource_id)
697
- stub = stub_request(:post, /.*api.gocardless.com#{stub_url}/)
698
- .to_timeout
697
+ stub = stub_request(:post, /.*api.gocardless.com#{stub_url}/).
698
+ to_timeout
699
699
 
700
700
  expect { post_response }.to raise_error(Faraday::TimeoutError)
701
701
  expect(stub).to have_been_requested
@@ -712,8 +712,8 @@ describe GoCardlessPro::Services::PaymentsService do
712
712
  let!(:stub) do
713
713
  # /payments/%v/actions/cancel
714
714
  stub_url = '/payments/:identity/actions/cancel'.gsub(':identity', resource_id)
715
- stub_request(:post, /.*api.gocardless.com#{stub_url}/)
716
- .with(
715
+ stub_request(:post, /.*api.gocardless.com#{stub_url}/).
716
+ with(
717
717
  body: { foo: 'bar' },
718
718
  headers: { 'Foo' => 'Bar' }
719
719
  ).to_return(
@@ -730,8 +730,8 @@ describe GoCardlessPro::Services::PaymentsService do
730
730
  'links' => 'links-input',
731
731
  'metadata' => 'metadata-input',
732
732
  'reference' => 'reference-input',
733
- 'status' => 'status-input'
734
- }
733
+ 'status' => 'status-input',
734
+ },
735
735
  }.to_json,
736
736
  headers: response_headers
737
737
  )
@@ -761,8 +761,8 @@ describe GoCardlessPro::Services::PaymentsService do
761
761
  'links' => 'links-input',
762
762
  'metadata' => 'metadata-input',
763
763
  'reference' => 'reference-input',
764
- 'status' => 'status-input'
765
- }
764
+ 'status' => 'status-input',
765
+ },
766
766
  }.to_json,
767
767
  headers: response_headers
768
768
  )
@@ -777,8 +777,8 @@ describe GoCardlessPro::Services::PaymentsService do
777
777
  describe 'retry behaviour' do
778
778
  it "doesn't retry errors" do
779
779
  stub_url = '/payments/:identity/actions/retry'.gsub(':identity', resource_id)
780
- stub = stub_request(:post, /.*api.gocardless.com#{stub_url}/)
781
- .to_timeout
780
+ stub = stub_request(:post, /.*api.gocardless.com#{stub_url}/).
781
+ to_timeout
782
782
 
783
783
  expect { post_response }.to raise_error(Faraday::TimeoutError)
784
784
  expect(stub).to have_been_requested
@@ -795,8 +795,8 @@ describe GoCardlessPro::Services::PaymentsService do
795
795
  let!(:stub) do
796
796
  # /payments/%v/actions/retry
797
797
  stub_url = '/payments/:identity/actions/retry'.gsub(':identity', resource_id)
798
- stub_request(:post, /.*api.gocardless.com#{stub_url}/)
799
- .with(
798
+ stub_request(:post, /.*api.gocardless.com#{stub_url}/).
799
+ with(
800
800
  body: { foo: 'bar' },
801
801
  headers: { 'Foo' => 'Bar' }
802
802
  ).to_return(
@@ -813,8 +813,8 @@ describe GoCardlessPro::Services::PaymentsService do
813
813
  'links' => 'links-input',
814
814
  'metadata' => 'metadata-input',
815
815
  'reference' => 'reference-input',
816
- 'status' => 'status-input'
817
- }
816
+ 'status' => 'status-input',
817
+ },
818
818
  }.to_json,
819
819
  headers: response_headers
820
820
  )