gocardless_pro 2.17.1 → 2.21.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 (30) hide show
  1. checksums.yaml +4 -4
  2. data/lib/gocardless_pro.rb +3 -0
  3. data/lib/gocardless_pro/client.rb +6 -1
  4. data/lib/gocardless_pro/resources/creditor_bank_account.rb +1 -2
  5. data/lib/gocardless_pro/resources/currency_exchange_rate.rb +44 -0
  6. data/lib/gocardless_pro/resources/customer_notification.rb +3 -5
  7. data/lib/gocardless_pro/resources/event.rb +2 -1
  8. data/lib/gocardless_pro/resources/mandate_import.rb +5 -8
  9. data/lib/gocardless_pro/resources/mandate_import_entry.rb +3 -5
  10. data/lib/gocardless_pro/resources/payout.rb +2 -0
  11. data/lib/gocardless_pro/resources/redirect_flow.rb +2 -0
  12. data/lib/gocardless_pro/resources/subscription.rb +38 -29
  13. data/lib/gocardless_pro/services/currency_exchange_rates_service.rb +67 -0
  14. data/lib/gocardless_pro/services/customers_service.rb +1 -2
  15. data/lib/gocardless_pro/services/instalment_schedules_service.rb +81 -5
  16. data/lib/gocardless_pro/services/mandates_service.rb +1 -1
  17. data/lib/gocardless_pro/services/payouts_service.rb +21 -0
  18. data/lib/gocardless_pro/services/subscriptions_service.rb +129 -0
  19. data/lib/gocardless_pro/version.rb +1 -1
  20. data/spec/resources/currency_exchange_rate_spec.rb +103 -0
  21. data/spec/resources/instalment_schedule_spec.rb +193 -1
  22. data/spec/resources/payout_spec.rb +45 -0
  23. data/spec/resources/redirect_flow_spec.rb +9 -0
  24. data/spec/resources/subscription_spec.rb +210 -0
  25. data/spec/services/currency_exchange_rates_service_spec.rb +223 -0
  26. data/spec/services/instalment_schedules_service_spec.rb +270 -1
  27. data/spec/services/payouts_service_spec.rb +74 -0
  28. data/spec/services/redirect_flows_service_spec.rb +9 -0
  29. data/spec/services/subscriptions_service_spec.rb +240 -0
  30. metadata +9 -3
@@ -26,6 +26,7 @@ describe GoCardlessPro::Resources::Payout do
26
26
  'fx' => 'fx-input',
27
27
  'id' => 'id-input',
28
28
  'links' => 'links-input',
29
+ 'metadata' => 'metadata-input',
29
30
  'payout_type' => 'payout_type-input',
30
31
  'reference' => 'reference-input',
31
32
  'status' => 'status-input',
@@ -58,6 +59,8 @@ describe GoCardlessPro::Resources::Payout do
58
59
 
59
60
  expect(get_list_response.records.first.id).to eq('id-input')
60
61
 
62
+ expect(get_list_response.records.first.metadata).to eq('metadata-input')
63
+
61
64
  expect(get_list_response.records.first.payout_type).to eq('payout_type-input')
62
65
 
63
66
  expect(get_list_response.records.first.reference).to eq('reference-input')
@@ -88,6 +91,7 @@ describe GoCardlessPro::Resources::Payout do
88
91
  'fx' => 'fx-input',
89
92
  'id' => 'id-input',
90
93
  'links' => 'links-input',
94
+ 'metadata' => 'metadata-input',
91
95
  'payout_type' => 'payout_type-input',
92
96
  'reference' => 'reference-input',
93
97
  'status' => 'status-input',
@@ -114,6 +118,7 @@ describe GoCardlessPro::Resources::Payout do
114
118
  'fx' => 'fx-input',
115
119
  'id' => 'id-input',
116
120
  'links' => 'links-input',
121
+ 'metadata' => 'metadata-input',
117
122
  'payout_type' => 'payout_type-input',
118
123
  'reference' => 'reference-input',
119
124
  'status' => 'status-input',
@@ -156,6 +161,7 @@ describe GoCardlessPro::Resources::Payout do
156
161
  'fx' => 'fx-input',
157
162
  'id' => 'id-input',
158
163
  'links' => 'links-input',
164
+ 'metadata' => 'metadata-input',
159
165
  'payout_type' => 'payout_type-input',
160
166
  'reference' => 'reference-input',
161
167
  'status' => 'status-input',
@@ -192,6 +198,7 @@ describe GoCardlessPro::Resources::Payout do
192
198
  'fx' => 'fx-input',
193
199
  'id' => 'id-input',
194
200
  'links' => 'links-input',
201
+ 'metadata' => 'metadata-input',
195
202
  'payout_type' => 'payout_type-input',
196
203
  'reference' => 'reference-input',
197
204
  'status' => 'status-input',
@@ -228,4 +235,42 @@ describe GoCardlessPro::Resources::Payout do
228
235
  end
229
236
  end
230
237
  end
238
+
239
+ describe '#update' do
240
+ subject(:put_update_response) { client.payouts.update(id, params: update_params) }
241
+ let(:id) { 'ABC123' }
242
+
243
+ context 'with a valid request' do
244
+ let(:update_params) { { 'hello' => 'world' } }
245
+
246
+ let!(:stub) do
247
+ stub_url = '/payouts/:identity'.gsub(':identity', id)
248
+ stub_request(:put, /.*api.gocardless.com#{stub_url}/).to_return(
249
+ body: {
250
+ 'payouts' => {
251
+
252
+ 'amount' => 'amount-input',
253
+ 'arrival_date' => 'arrival_date-input',
254
+ 'created_at' => 'created_at-input',
255
+ 'currency' => 'currency-input',
256
+ 'deducted_fees' => 'deducted_fees-input',
257
+ 'fx' => 'fx-input',
258
+ 'id' => 'id-input',
259
+ 'links' => 'links-input',
260
+ 'metadata' => 'metadata-input',
261
+ 'payout_type' => 'payout_type-input',
262
+ 'reference' => 'reference-input',
263
+ 'status' => 'status-input',
264
+ },
265
+ }.to_json,
266
+ headers: response_headers
267
+ )
268
+ end
269
+
270
+ it 'updates and returns the resource' do
271
+ expect(put_update_response).to be_a(GoCardlessPro::Resources::Payout)
272
+ expect(stub).to have_been_requested
273
+ end
274
+ end
275
+ end
231
276
  end
@@ -20,6 +20,7 @@ describe GoCardlessPro::Resources::RedirectFlow do
20
20
  'description' => 'description-input',
21
21
  'id' => 'id-input',
22
22
  'links' => 'links-input',
23
+ 'metadata' => 'metadata-input',
23
24
  'redirect_url' => 'redirect_url-input',
24
25
  'scheme' => 'scheme-input',
25
26
  'session_token' => 'session_token-input',
@@ -38,6 +39,7 @@ describe GoCardlessPro::Resources::RedirectFlow do
38
39
  'description' => 'description-input',
39
40
  'id' => 'id-input',
40
41
  'links' => 'links-input',
42
+ 'metadata' => 'metadata-input',
41
43
  'redirect_url' => 'redirect_url-input',
42
44
  'scheme' => 'scheme-input',
43
45
  'session_token' => 'session_token-input',
@@ -56,6 +58,7 @@ describe GoCardlessPro::Resources::RedirectFlow do
56
58
  'description' => 'description-input',
57
59
  'id' => 'id-input',
58
60
  'links' => 'links-input',
61
+ 'metadata' => 'metadata-input',
59
62
  'redirect_url' => 'redirect_url-input',
60
63
  'scheme' => 'scheme-input',
61
64
  'session_token' => 'session_token-input',
@@ -107,6 +110,7 @@ describe GoCardlessPro::Resources::RedirectFlow do
107
110
  'description' => 'description-input',
108
111
  'id' => 'id-input',
109
112
  'links' => 'links-input',
113
+ 'metadata' => 'metadata-input',
110
114
  'redirect_url' => 'redirect_url-input',
111
115
  'scheme' => 'scheme-input',
112
116
  'session_token' => 'session_token-input',
@@ -148,6 +152,7 @@ describe GoCardlessPro::Resources::RedirectFlow do
148
152
  'description' => 'description-input',
149
153
  'id' => 'id-input',
150
154
  'links' => 'links-input',
155
+ 'metadata' => 'metadata-input',
151
156
  'redirect_url' => 'redirect_url-input',
152
157
  'scheme' => 'scheme-input',
153
158
  'session_token' => 'session_token-input',
@@ -185,6 +190,7 @@ describe GoCardlessPro::Resources::RedirectFlow do
185
190
  'description' => 'description-input',
186
191
  'id' => 'id-input',
187
192
  'links' => 'links-input',
193
+ 'metadata' => 'metadata-input',
188
194
  'redirect_url' => 'redirect_url-input',
189
195
  'scheme' => 'scheme-input',
190
196
  'session_token' => 'session_token-input',
@@ -219,6 +225,7 @@ describe GoCardlessPro::Resources::RedirectFlow do
219
225
  'description' => 'description-input',
220
226
  'id' => 'id-input',
221
227
  'links' => 'links-input',
228
+ 'metadata' => 'metadata-input',
222
229
  'redirect_url' => 'redirect_url-input',
223
230
  'scheme' => 'scheme-input',
224
231
  'session_token' => 'session_token-input',
@@ -274,6 +281,7 @@ describe GoCardlessPro::Resources::RedirectFlow do
274
281
  'description' => 'description-input',
275
282
  'id' => 'id-input',
276
283
  'links' => 'links-input',
284
+ 'metadata' => 'metadata-input',
277
285
  'redirect_url' => 'redirect_url-input',
278
286
  'scheme' => 'scheme-input',
279
287
  'session_token' => 'session_token-input',
@@ -313,6 +321,7 @@ describe GoCardlessPro::Resources::RedirectFlow do
313
321
  'description' => 'description-input',
314
322
  'id' => 'id-input',
315
323
  'links' => 'links-input',
324
+ 'metadata' => 'metadata-input',
316
325
  'redirect_url' => 'redirect_url-input',
317
326
  'scheme' => 'scheme-input',
318
327
  'session_token' => 'session_token-input',
@@ -17,9 +17,11 @@ describe GoCardlessPro::Resources::Subscription do
17
17
 
18
18
  'amount' => 'amount-input',
19
19
  'app_fee' => 'app_fee-input',
20
+ 'count' => 'count-input',
20
21
  'created_at' => 'created_at-input',
21
22
  'currency' => 'currency-input',
22
23
  'day_of_month' => 'day_of_month-input',
24
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
23
25
  'end_date' => 'end_date-input',
24
26
  'id' => 'id-input',
25
27
  'interval' => 'interval-input',
@@ -44,9 +46,11 @@ describe GoCardlessPro::Resources::Subscription do
44
46
 
45
47
  'amount' => 'amount-input',
46
48
  'app_fee' => 'app_fee-input',
49
+ 'count' => 'count-input',
47
50
  'created_at' => 'created_at-input',
48
51
  'currency' => 'currency-input',
49
52
  'day_of_month' => 'day_of_month-input',
53
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
50
54
  'end_date' => 'end_date-input',
51
55
  'id' => 'id-input',
52
56
  'interval' => 'interval-input',
@@ -71,9 +75,11 @@ describe GoCardlessPro::Resources::Subscription do
71
75
 
72
76
  'amount' => 'amount-input',
73
77
  'app_fee' => 'app_fee-input',
78
+ 'count' => 'count-input',
74
79
  'created_at' => 'created_at-input',
75
80
  'currency' => 'currency-input',
76
81
  'day_of_month' => 'day_of_month-input',
82
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
77
83
  'end_date' => 'end_date-input',
78
84
  'id' => 'id-input',
79
85
  'interval' => 'interval-input',
@@ -131,9 +137,11 @@ describe GoCardlessPro::Resources::Subscription do
131
137
 
132
138
  'amount' => 'amount-input',
133
139
  'app_fee' => 'app_fee-input',
140
+ 'count' => 'count-input',
134
141
  'created_at' => 'created_at-input',
135
142
  'currency' => 'currency-input',
136
143
  'day_of_month' => 'day_of_month-input',
144
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
137
145
  'end_date' => 'end_date-input',
138
146
  'id' => 'id-input',
139
147
  'interval' => 'interval-input',
@@ -181,9 +189,11 @@ describe GoCardlessPro::Resources::Subscription do
181
189
 
182
190
  'amount' => 'amount-input',
183
191
  'app_fee' => 'app_fee-input',
192
+ 'count' => 'count-input',
184
193
  'created_at' => 'created_at-input',
185
194
  'currency' => 'currency-input',
186
195
  'day_of_month' => 'day_of_month-input',
196
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
187
197
  'end_date' => 'end_date-input',
188
198
  'id' => 'id-input',
189
199
  'interval' => 'interval-input',
@@ -222,9 +232,11 @@ describe GoCardlessPro::Resources::Subscription do
222
232
 
223
233
  'amount' => 'amount-input',
224
234
  'app_fee' => 'app_fee-input',
235
+ 'count' => 'count-input',
225
236
  'created_at' => 'created_at-input',
226
237
  'currency' => 'currency-input',
227
238
  'day_of_month' => 'day_of_month-input',
239
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
228
240
  'end_date' => 'end_date-input',
229
241
  'id' => 'id-input',
230
242
  'interval' => 'interval-input',
@@ -257,12 +269,16 @@ describe GoCardlessPro::Resources::Subscription do
257
269
 
258
270
  expect(get_list_response.records.first.app_fee).to eq('app_fee-input')
259
271
 
272
+ expect(get_list_response.records.first.count).to eq('count-input')
273
+
260
274
  expect(get_list_response.records.first.created_at).to eq('created_at-input')
261
275
 
262
276
  expect(get_list_response.records.first.currency).to eq('currency-input')
263
277
 
264
278
  expect(get_list_response.records.first.day_of_month).to eq('day_of_month-input')
265
279
 
280
+ expect(get_list_response.records.first.earliest_charge_date_after_resume).to eq('earliest_charge_date_after_resume-input')
281
+
266
282
  expect(get_list_response.records.first.end_date).to eq('end_date-input')
267
283
 
268
284
  expect(get_list_response.records.first.id).to eq('id-input')
@@ -305,9 +321,11 @@ describe GoCardlessPro::Resources::Subscription do
305
321
 
306
322
  'amount' => 'amount-input',
307
323
  'app_fee' => 'app_fee-input',
324
+ 'count' => 'count-input',
308
325
  'created_at' => 'created_at-input',
309
326
  'currency' => 'currency-input',
310
327
  'day_of_month' => 'day_of_month-input',
328
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
311
329
  'end_date' => 'end_date-input',
312
330
  'id' => 'id-input',
313
331
  'interval' => 'interval-input',
@@ -338,9 +356,11 @@ describe GoCardlessPro::Resources::Subscription do
338
356
 
339
357
  'amount' => 'amount-input',
340
358
  'app_fee' => 'app_fee-input',
359
+ 'count' => 'count-input',
341
360
  'created_at' => 'created_at-input',
342
361
  'currency' => 'currency-input',
343
362
  'day_of_month' => 'day_of_month-input',
363
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
344
364
  'end_date' => 'end_date-input',
345
365
  'id' => 'id-input',
346
366
  'interval' => 'interval-input',
@@ -387,9 +407,11 @@ describe GoCardlessPro::Resources::Subscription do
387
407
 
388
408
  'amount' => 'amount-input',
389
409
  'app_fee' => 'app_fee-input',
410
+ 'count' => 'count-input',
390
411
  'created_at' => 'created_at-input',
391
412
  'currency' => 'currency-input',
392
413
  'day_of_month' => 'day_of_month-input',
414
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
393
415
  'end_date' => 'end_date-input',
394
416
  'id' => 'id-input',
395
417
  'interval' => 'interval-input',
@@ -430,9 +452,11 @@ describe GoCardlessPro::Resources::Subscription do
430
452
 
431
453
  'amount' => 'amount-input',
432
454
  'app_fee' => 'app_fee-input',
455
+ 'count' => 'count-input',
433
456
  'created_at' => 'created_at-input',
434
457
  'currency' => 'currency-input',
435
458
  'day_of_month' => 'day_of_month-input',
459
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
436
460
  'end_date' => 'end_date-input',
437
461
  'id' => 'id-input',
438
462
  'interval' => 'interval-input',
@@ -495,9 +519,11 @@ describe GoCardlessPro::Resources::Subscription do
495
519
 
496
520
  'amount' => 'amount-input',
497
521
  'app_fee' => 'app_fee-input',
522
+ 'count' => 'count-input',
498
523
  'created_at' => 'created_at-input',
499
524
  'currency' => 'currency-input',
500
525
  'day_of_month' => 'day_of_month-input',
526
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
501
527
  'end_date' => 'end_date-input',
502
528
  'id' => 'id-input',
503
529
  'interval' => 'interval-input',
@@ -524,6 +550,186 @@ describe GoCardlessPro::Resources::Subscription do
524
550
  end
525
551
  end
526
552
 
553
+ describe '#pause' do
554
+ subject(:post_response) { client.subscriptions.pause(resource_id) }
555
+
556
+ let(:resource_id) { 'ABC123' }
557
+
558
+ let!(:stub) do
559
+ # /subscriptions/%v/actions/pause
560
+ stub_url = '/subscriptions/:identity/actions/pause'.gsub(':identity', resource_id)
561
+ stub_request(:post, /.*api.gocardless.com#{stub_url}/).to_return(
562
+ body: {
563
+ 'subscriptions' => {
564
+
565
+ 'amount' => 'amount-input',
566
+ 'app_fee' => 'app_fee-input',
567
+ 'count' => 'count-input',
568
+ 'created_at' => 'created_at-input',
569
+ 'currency' => 'currency-input',
570
+ 'day_of_month' => 'day_of_month-input',
571
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
572
+ 'end_date' => 'end_date-input',
573
+ 'id' => 'id-input',
574
+ 'interval' => 'interval-input',
575
+ 'interval_unit' => 'interval_unit-input',
576
+ 'links' => 'links-input',
577
+ 'metadata' => 'metadata-input',
578
+ 'month' => 'month-input',
579
+ 'name' => 'name-input',
580
+ 'payment_reference' => 'payment_reference-input',
581
+ 'retry_if_possible' => 'retry_if_possible-input',
582
+ 'start_date' => 'start_date-input',
583
+ 'status' => 'status-input',
584
+ 'upcoming_payments' => 'upcoming_payments-input',
585
+ },
586
+ }.to_json,
587
+ headers: response_headers
588
+ )
589
+ end
590
+
591
+ it 'wraps the response and calls the right endpoint' do
592
+ expect(post_response).to be_a(GoCardlessPro::Resources::Subscription)
593
+
594
+ expect(stub).to have_been_requested
595
+ end
596
+
597
+ context 'when the request needs a body and custom header' do
598
+ let(:body) { { foo: 'bar' } }
599
+ let(:headers) { { 'Foo' => 'Bar' } }
600
+ subject(:post_response) { client.subscriptions.pause(resource_id, body, headers) }
601
+
602
+ let(:resource_id) { 'ABC123' }
603
+
604
+ let!(:stub) do
605
+ # /subscriptions/%v/actions/pause
606
+ stub_url = '/subscriptions/:identity/actions/pause'.gsub(':identity', resource_id)
607
+ stub_request(:post, /.*api.gocardless.com#{stub_url}/).
608
+ with(
609
+ body: { foo: 'bar' },
610
+ headers: { 'Foo' => 'Bar' }
611
+ ).to_return(
612
+ body: {
613
+ 'subscriptions' => {
614
+
615
+ 'amount' => 'amount-input',
616
+ 'app_fee' => 'app_fee-input',
617
+ 'count' => 'count-input',
618
+ 'created_at' => 'created_at-input',
619
+ 'currency' => 'currency-input',
620
+ 'day_of_month' => 'day_of_month-input',
621
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
622
+ 'end_date' => 'end_date-input',
623
+ 'id' => 'id-input',
624
+ 'interval' => 'interval-input',
625
+ 'interval_unit' => 'interval_unit-input',
626
+ 'links' => 'links-input',
627
+ 'metadata' => 'metadata-input',
628
+ 'month' => 'month-input',
629
+ 'name' => 'name-input',
630
+ 'payment_reference' => 'payment_reference-input',
631
+ 'retry_if_possible' => 'retry_if_possible-input',
632
+ 'start_date' => 'start_date-input',
633
+ 'status' => 'status-input',
634
+ 'upcoming_payments' => 'upcoming_payments-input',
635
+ },
636
+ }.to_json,
637
+ headers: response_headers
638
+ )
639
+ end
640
+ end
641
+ end
642
+
643
+ describe '#resume' do
644
+ subject(:post_response) { client.subscriptions.resume(resource_id) }
645
+
646
+ let(:resource_id) { 'ABC123' }
647
+
648
+ let!(:stub) do
649
+ # /subscriptions/%v/actions/resume
650
+ stub_url = '/subscriptions/:identity/actions/resume'.gsub(':identity', resource_id)
651
+ stub_request(:post, /.*api.gocardless.com#{stub_url}/).to_return(
652
+ body: {
653
+ 'subscriptions' => {
654
+
655
+ 'amount' => 'amount-input',
656
+ 'app_fee' => 'app_fee-input',
657
+ 'count' => 'count-input',
658
+ 'created_at' => 'created_at-input',
659
+ 'currency' => 'currency-input',
660
+ 'day_of_month' => 'day_of_month-input',
661
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
662
+ 'end_date' => 'end_date-input',
663
+ 'id' => 'id-input',
664
+ 'interval' => 'interval-input',
665
+ 'interval_unit' => 'interval_unit-input',
666
+ 'links' => 'links-input',
667
+ 'metadata' => 'metadata-input',
668
+ 'month' => 'month-input',
669
+ 'name' => 'name-input',
670
+ 'payment_reference' => 'payment_reference-input',
671
+ 'retry_if_possible' => 'retry_if_possible-input',
672
+ 'start_date' => 'start_date-input',
673
+ 'status' => 'status-input',
674
+ 'upcoming_payments' => 'upcoming_payments-input',
675
+ },
676
+ }.to_json,
677
+ headers: response_headers
678
+ )
679
+ end
680
+
681
+ it 'wraps the response and calls the right endpoint' do
682
+ expect(post_response).to be_a(GoCardlessPro::Resources::Subscription)
683
+
684
+ expect(stub).to have_been_requested
685
+ end
686
+
687
+ context 'when the request needs a body and custom header' do
688
+ let(:body) { { foo: 'bar' } }
689
+ let(:headers) { { 'Foo' => 'Bar' } }
690
+ subject(:post_response) { client.subscriptions.resume(resource_id, body, headers) }
691
+
692
+ let(:resource_id) { 'ABC123' }
693
+
694
+ let!(:stub) do
695
+ # /subscriptions/%v/actions/resume
696
+ stub_url = '/subscriptions/:identity/actions/resume'.gsub(':identity', resource_id)
697
+ stub_request(:post, /.*api.gocardless.com#{stub_url}/).
698
+ with(
699
+ body: { foo: 'bar' },
700
+ headers: { 'Foo' => 'Bar' }
701
+ ).to_return(
702
+ body: {
703
+ 'subscriptions' => {
704
+
705
+ 'amount' => 'amount-input',
706
+ 'app_fee' => 'app_fee-input',
707
+ 'count' => 'count-input',
708
+ 'created_at' => 'created_at-input',
709
+ 'currency' => 'currency-input',
710
+ 'day_of_month' => 'day_of_month-input',
711
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
712
+ 'end_date' => 'end_date-input',
713
+ 'id' => 'id-input',
714
+ 'interval' => 'interval-input',
715
+ 'interval_unit' => 'interval_unit-input',
716
+ 'links' => 'links-input',
717
+ 'metadata' => 'metadata-input',
718
+ 'month' => 'month-input',
719
+ 'name' => 'name-input',
720
+ 'payment_reference' => 'payment_reference-input',
721
+ 'retry_if_possible' => 'retry_if_possible-input',
722
+ 'start_date' => 'start_date-input',
723
+ 'status' => 'status-input',
724
+ 'upcoming_payments' => 'upcoming_payments-input',
725
+ },
726
+ }.to_json,
727
+ headers: response_headers
728
+ )
729
+ end
730
+ end
731
+ end
732
+
527
733
  describe '#cancel' do
528
734
  subject(:post_response) { client.subscriptions.cancel(resource_id) }
529
735
 
@@ -538,9 +744,11 @@ describe GoCardlessPro::Resources::Subscription do
538
744
 
539
745
  'amount' => 'amount-input',
540
746
  'app_fee' => 'app_fee-input',
747
+ 'count' => 'count-input',
541
748
  'created_at' => 'created_at-input',
542
749
  'currency' => 'currency-input',
543
750
  'day_of_month' => 'day_of_month-input',
751
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
544
752
  'end_date' => 'end_date-input',
545
753
  'id' => 'id-input',
546
754
  'interval' => 'interval-input',
@@ -586,9 +794,11 @@ describe GoCardlessPro::Resources::Subscription do
586
794
 
587
795
  'amount' => 'amount-input',
588
796
  'app_fee' => 'app_fee-input',
797
+ 'count' => 'count-input',
589
798
  'created_at' => 'created_at-input',
590
799
  'currency' => 'currency-input',
591
800
  'day_of_month' => 'day_of_month-input',
801
+ 'earliest_charge_date_after_resume' => 'earliest_charge_date_after_resume-input',
592
802
  'end_date' => 'end_date-input',
593
803
  'id' => 'id-input',
594
804
  'interval' => 'interval-input',