gocardless_pro 2.27.0 → 2.30.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +20 -1
- data/lib/gocardless_pro/api_service.rb +4 -0
- data/lib/gocardless_pro/client.rb +11 -1
- data/lib/gocardless_pro/error/authentication_error.rb +4 -0
- data/lib/gocardless_pro/error/permission_error.rb +4 -0
- data/lib/gocardless_pro/error/rate_limit_error.rb +4 -0
- data/lib/gocardless_pro/middlewares/raise_gocardless_errors.rb +12 -1
- data/lib/gocardless_pro/resources/bank_authorisation.rb +3 -9
- data/lib/gocardless_pro/resources/billing_request.rb +31 -7
- data/lib/gocardless_pro/resources/billing_request_flow.rb +14 -0
- data/lib/gocardless_pro/resources/billing_request_template.rb +68 -0
- data/lib/gocardless_pro/resources/block.rb +76 -0
- data/lib/gocardless_pro/resources/event.rb +20 -0
- data/lib/gocardless_pro/resources/institution.rb +7 -1
- data/lib/gocardless_pro/resources/payer_authorisation.rb +9 -0
- data/lib/gocardless_pro/resources/redirect_flow.rb +6 -0
- data/lib/gocardless_pro/services/bank_authorisations_service.rb +0 -2
- data/lib/gocardless_pro/services/billing_request_flows_service.rb +23 -0
- data/lib/gocardless_pro/services/billing_request_templates_service.rb +131 -0
- data/lib/gocardless_pro/services/billing_requests_service.rb +89 -24
- data/lib/gocardless_pro/services/blocks_service.rb +223 -0
- data/lib/gocardless_pro/services/creditor_bank_accounts_service.rb +1 -5
- data/lib/gocardless_pro/services/creditors_service.rb +1 -3
- data/lib/gocardless_pro/services/currency_exchange_rates_service.rb +1 -1
- data/lib/gocardless_pro/services/customer_bank_accounts_service.rb +1 -5
- data/lib/gocardless_pro/services/customers_service.rb +1 -3
- data/lib/gocardless_pro/services/events_service.rb +1 -1
- data/lib/gocardless_pro/services/instalment_schedules_service.rb +1 -7
- data/lib/gocardless_pro/services/institutions_service.rb +2 -2
- data/lib/gocardless_pro/services/mandate_import_entries_service.rb +1 -1
- data/lib/gocardless_pro/services/mandate_imports_service.rb +0 -6
- data/lib/gocardless_pro/services/mandates_service.rb +1 -7
- data/lib/gocardless_pro/services/payer_authorisations_service.rb +0 -6
- data/lib/gocardless_pro/services/payments_service.rb +1 -7
- data/lib/gocardless_pro/services/payout_items_service.rb +1 -1
- data/lib/gocardless_pro/services/payouts_service.rb +1 -1
- data/lib/gocardless_pro/services/redirect_flows_service.rb +0 -4
- data/lib/gocardless_pro/services/refunds_service.rb +1 -3
- data/lib/gocardless_pro/services/scenario_simulators_service.rb +28 -6
- data/lib/gocardless_pro/services/subscriptions_service.rb +3 -11
- data/lib/gocardless_pro/services/tax_rates_service.rb +1 -1
- data/lib/gocardless_pro/services/webhooks_service.rb +1 -3
- data/lib/gocardless_pro/version.rb +1 -1
- data/lib/gocardless_pro.rb +9 -0
- data/spec/api_service_spec.rb +12 -1
- data/spec/middlewares/raise_gocardless_errors_spec.rb +30 -0
- data/spec/resources/bank_authorisation_spec.rb +7 -7
- data/spec/resources/billing_request_flow_spec.rb +104 -0
- data/spec/resources/billing_request_spec.rb +183 -29
- data/spec/resources/billing_request_template_spec.rb +502 -0
- data/spec/resources/block_spec.rb +577 -0
- data/spec/resources/creditor_bank_account_spec.rb +2 -0
- data/spec/resources/customer_bank_account_spec.rb +2 -0
- data/spec/resources/customer_notification_spec.rb +2 -0
- data/spec/resources/customer_spec.rb +2 -0
- data/spec/resources/instalment_schedule_spec.rb +2 -0
- data/spec/resources/institution_spec.rb +5 -0
- data/spec/resources/mandate_import_spec.rb +4 -0
- data/spec/resources/mandate_spec.rb +4 -0
- data/spec/resources/payer_authorisation_spec.rb +4 -0
- data/spec/resources/payment_spec.rb +4 -0
- data/spec/resources/redirect_flow_spec.rb +11 -0
- data/spec/resources/scenario_simulator_spec.rb +2 -0
- data/spec/resources/subscription_spec.rb +6 -0
- data/spec/resources/webhook_spec.rb +2 -0
- data/spec/services/bank_authorisations_service_spec.rb +7 -20
- data/spec/services/billing_request_flows_service_spec.rb +115 -0
- data/spec/services/billing_request_templates_service_spec.rb +789 -0
- data/spec/services/billing_requests_service_spec.rb +210 -47
- data/spec/services/blocks_service_spec.rb +840 -0
- data/spec/services/creditor_bank_accounts_service_spec.rb +2 -13
- data/spec/services/creditors_service_spec.rb +0 -13
- data/spec/services/customer_bank_accounts_service_spec.rb +2 -13
- data/spec/services/customer_notifications_service_spec.rb +2 -0
- data/spec/services/customers_service_spec.rb +2 -13
- data/spec/services/instalment_schedules_service_spec.rb +2 -26
- data/spec/services/institutions_service_spec.rb +9 -0
- data/spec/services/mandate_imports_service_spec.rb +4 -13
- data/spec/services/mandates_service_spec.rb +4 -13
- data/spec/services/payer_authorisations_service_spec.rb +4 -13
- data/spec/services/payments_service_spec.rb +4 -13
- data/spec/services/redirect_flows_service_spec.rb +11 -13
- data/spec/services/refunds_service_spec.rb +0 -13
- data/spec/services/scenario_simulators_service_spec.rb +2 -0
- data/spec/services/subscriptions_service_spec.rb +6 -13
- data/spec/services/webhooks_service_spec.rb +2 -0
- metadata +18 -3
@@ -16,10 +16,17 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
|
|
16
16
|
{
|
17
17
|
|
18
18
|
'authorisation_url' => 'authorisation_url-input',
|
19
|
+
'auto_fulfil' => 'auto_fulfil-input',
|
19
20
|
'created_at' => 'created_at-input',
|
21
|
+
'exit_uri' => 'exit_uri-input',
|
20
22
|
'expires_at' => 'expires_at-input',
|
23
|
+
'id' => 'id-input',
|
21
24
|
'links' => 'links-input',
|
25
|
+
'lock_bank_account' => 'lock_bank_account-input',
|
26
|
+
'lock_customer_details' => 'lock_customer_details-input',
|
22
27
|
'redirect_uri' => 'redirect_uri-input',
|
28
|
+
'session_token' => 'session_token-input',
|
29
|
+
'show_redirect_buttons' => 'show_redirect_buttons-input',
|
23
30
|
}
|
24
31
|
end
|
25
32
|
|
@@ -30,10 +37,17 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
|
|
30
37
|
'billing_request_flows' => {
|
31
38
|
|
32
39
|
'authorisation_url' => 'authorisation_url-input',
|
40
|
+
'auto_fulfil' => 'auto_fulfil-input',
|
33
41
|
'created_at' => 'created_at-input',
|
42
|
+
'exit_uri' => 'exit_uri-input',
|
34
43
|
'expires_at' => 'expires_at-input',
|
44
|
+
'id' => 'id-input',
|
35
45
|
'links' => 'links-input',
|
46
|
+
'lock_bank_account' => 'lock_bank_account-input',
|
47
|
+
'lock_customer_details' => 'lock_customer_details-input',
|
36
48
|
'redirect_uri' => 'redirect_uri-input',
|
49
|
+
'session_token' => 'session_token-input',
|
50
|
+
'show_redirect_buttons' => 'show_redirect_buttons-input',
|
37
51
|
},
|
38
52
|
}
|
39
53
|
).
|
@@ -44,10 +58,17 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
|
|
44
58
|
{
|
45
59
|
|
46
60
|
'authorisation_url' => 'authorisation_url-input',
|
61
|
+
'auto_fulfil' => 'auto_fulfil-input',
|
47
62
|
'created_at' => 'created_at-input',
|
63
|
+
'exit_uri' => 'exit_uri-input',
|
48
64
|
'expires_at' => 'expires_at-input',
|
65
|
+
'id' => 'id-input',
|
49
66
|
'links' => 'links-input',
|
67
|
+
'lock_bank_account' => 'lock_bank_account-input',
|
68
|
+
'lock_customer_details' => 'lock_customer_details-input',
|
50
69
|
'redirect_uri' => 'redirect_uri-input',
|
70
|
+
'session_token' => 'session_token-input',
|
71
|
+
'show_redirect_buttons' => 'show_redirect_buttons-input',
|
51
72
|
},
|
52
73
|
|
53
74
|
}.to_json,
|
@@ -91,10 +112,17 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
|
|
91
112
|
{
|
92
113
|
|
93
114
|
'authorisation_url' => 'authorisation_url-input',
|
115
|
+
'auto_fulfil' => 'auto_fulfil-input',
|
94
116
|
'created_at' => 'created_at-input',
|
117
|
+
'exit_uri' => 'exit_uri-input',
|
95
118
|
'expires_at' => 'expires_at-input',
|
119
|
+
'id' => 'id-input',
|
96
120
|
'links' => 'links-input',
|
121
|
+
'lock_bank_account' => 'lock_bank_account-input',
|
122
|
+
'lock_customer_details' => 'lock_customer_details-input',
|
97
123
|
'redirect_uri' => 'redirect_uri-input',
|
124
|
+
'session_token' => 'session_token-input',
|
125
|
+
'show_redirect_buttons' => 'show_redirect_buttons-input',
|
98
126
|
}
|
99
127
|
end
|
100
128
|
|
@@ -126,4 +154,80 @@ describe GoCardlessPro::Resources::BillingRequestFlow do
|
|
126
154
|
end
|
127
155
|
end
|
128
156
|
end
|
157
|
+
|
158
|
+
describe '#initialise' do
|
159
|
+
subject(:post_response) { client.billing_request_flows.initialise(resource_id) }
|
160
|
+
|
161
|
+
let(:resource_id) { 'ABC123' }
|
162
|
+
|
163
|
+
let!(:stub) do
|
164
|
+
# /billing_request_flows/%v/actions/initialise
|
165
|
+
stub_url = '/billing_request_flows/:identity/actions/initialise'.gsub(':identity', resource_id)
|
166
|
+
stub_request(:post, /.*api.gocardless.com#{stub_url}/).to_return(
|
167
|
+
|
168
|
+
body: {
|
169
|
+
'billing_request_flows' => {
|
170
|
+
|
171
|
+
'authorisation_url' => 'authorisation_url-input',
|
172
|
+
'auto_fulfil' => 'auto_fulfil-input',
|
173
|
+
'created_at' => 'created_at-input',
|
174
|
+
'exit_uri' => 'exit_uri-input',
|
175
|
+
'expires_at' => 'expires_at-input',
|
176
|
+
'id' => 'id-input',
|
177
|
+
'links' => 'links-input',
|
178
|
+
'lock_bank_account' => 'lock_bank_account-input',
|
179
|
+
'lock_customer_details' => 'lock_customer_details-input',
|
180
|
+
'redirect_uri' => 'redirect_uri-input',
|
181
|
+
'session_token' => 'session_token-input',
|
182
|
+
'show_redirect_buttons' => 'show_redirect_buttons-input',
|
183
|
+
},
|
184
|
+
}.to_json,
|
185
|
+
|
186
|
+
headers: response_headers
|
187
|
+
)
|
188
|
+
end
|
189
|
+
|
190
|
+
it 'wraps the response and calls the right endpoint' do
|
191
|
+
expect(post_response).to be_a(GoCardlessPro::Resources::BillingRequestFlow)
|
192
|
+
|
193
|
+
expect(stub).to have_been_requested
|
194
|
+
end
|
195
|
+
|
196
|
+
context 'when the request needs a body and custom header' do
|
197
|
+
let(:body) { { foo: 'bar' } }
|
198
|
+
let(:headers) { { 'Foo' => 'Bar' } }
|
199
|
+
subject(:post_response) { client.billing_request_flows.initialise(resource_id, body, headers) }
|
200
|
+
|
201
|
+
let(:resource_id) { 'ABC123' }
|
202
|
+
|
203
|
+
let!(:stub) do
|
204
|
+
# /billing_request_flows/%v/actions/initialise
|
205
|
+
stub_url = '/billing_request_flows/:identity/actions/initialise'.gsub(':identity', resource_id)
|
206
|
+
stub_request(:post, /.*api.gocardless.com#{stub_url}/).
|
207
|
+
with(
|
208
|
+
body: { foo: 'bar' },
|
209
|
+
headers: { 'Foo' => 'Bar' }
|
210
|
+
).to_return(
|
211
|
+
body: {
|
212
|
+
'billing_request_flows' => {
|
213
|
+
|
214
|
+
'authorisation_url' => 'authorisation_url-input',
|
215
|
+
'auto_fulfil' => 'auto_fulfil-input',
|
216
|
+
'created_at' => 'created_at-input',
|
217
|
+
'exit_uri' => 'exit_uri-input',
|
218
|
+
'expires_at' => 'expires_at-input',
|
219
|
+
'id' => 'id-input',
|
220
|
+
'links' => 'links-input',
|
221
|
+
'lock_bank_account' => 'lock_bank_account-input',
|
222
|
+
'lock_customer_details' => 'lock_customer_details-input',
|
223
|
+
'redirect_uri' => 'redirect_uri-input',
|
224
|
+
'session_token' => 'session_token-input',
|
225
|
+
'show_redirect_buttons' => 'show_redirect_buttons-input',
|
226
|
+
},
|
227
|
+
}.to_json,
|
228
|
+
headers: response_headers
|
229
|
+
)
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
129
233
|
end
|
@@ -19,8 +19,8 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
19
19
|
'billing_requests' => [{
|
20
20
|
|
21
21
|
'actions' => 'actions-input',
|
22
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
23
22
|
'created_at' => 'created_at-input',
|
23
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
24
24
|
'id' => 'id-input',
|
25
25
|
'links' => 'links-input',
|
26
26
|
'mandate_request' => 'mandate_request-input',
|
@@ -45,10 +45,10 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
45
45
|
|
46
46
|
expect(get_list_response.records.first.actions).to eq('actions-input')
|
47
47
|
|
48
|
-
expect(get_list_response.records.first.auto_fulfil).to eq('auto_fulfil-input')
|
49
|
-
|
50
48
|
expect(get_list_response.records.first.created_at).to eq('created_at-input')
|
51
49
|
|
50
|
+
expect(get_list_response.records.first.fallback_enabled).to eq('fallback_enabled-input')
|
51
|
+
|
52
52
|
expect(get_list_response.records.first.id).to eq('id-input')
|
53
53
|
|
54
54
|
expect(get_list_response.records.first.mandate_request).to eq('mandate_request-input')
|
@@ -78,8 +78,8 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
78
78
|
'billing_requests' => [{
|
79
79
|
|
80
80
|
'actions' => 'actions-input',
|
81
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
82
81
|
'created_at' => 'created_at-input',
|
82
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
83
83
|
'id' => 'id-input',
|
84
84
|
'links' => 'links-input',
|
85
85
|
'mandate_request' => 'mandate_request-input',
|
@@ -103,8 +103,8 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
103
103
|
'billing_requests' => [{
|
104
104
|
|
105
105
|
'actions' => 'actions-input',
|
106
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
107
106
|
'created_at' => 'created_at-input',
|
107
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
108
108
|
'id' => 'id-input',
|
109
109
|
'links' => 'links-input',
|
110
110
|
'mandate_request' => 'mandate_request-input',
|
@@ -136,8 +136,8 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
136
136
|
{
|
137
137
|
|
138
138
|
'actions' => 'actions-input',
|
139
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
140
139
|
'created_at' => 'created_at-input',
|
140
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
141
141
|
'id' => 'id-input',
|
142
142
|
'links' => 'links-input',
|
143
143
|
'mandate_request' => 'mandate_request-input',
|
@@ -155,8 +155,8 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
155
155
|
'billing_requests' => {
|
156
156
|
|
157
157
|
'actions' => 'actions-input',
|
158
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
159
158
|
'created_at' => 'created_at-input',
|
159
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
160
160
|
'id' => 'id-input',
|
161
161
|
'links' => 'links-input',
|
162
162
|
'mandate_request' => 'mandate_request-input',
|
@@ -174,8 +174,8 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
174
174
|
{
|
175
175
|
|
176
176
|
'actions' => 'actions-input',
|
177
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
178
177
|
'created_at' => 'created_at-input',
|
178
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
179
179
|
'id' => 'id-input',
|
180
180
|
'links' => 'links-input',
|
181
181
|
'mandate_request' => 'mandate_request-input',
|
@@ -226,8 +226,8 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
226
226
|
{
|
227
227
|
|
228
228
|
'actions' => 'actions-input',
|
229
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
230
229
|
'created_at' => 'created_at-input',
|
230
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
231
231
|
'id' => 'id-input',
|
232
232
|
'links' => 'links-input',
|
233
233
|
'mandate_request' => 'mandate_request-input',
|
@@ -268,8 +268,8 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
268
268
|
'billing_requests' => {
|
269
269
|
|
270
270
|
'actions' => 'actions-input',
|
271
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
272
271
|
'created_at' => 'created_at-input',
|
272
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
273
273
|
'id' => 'id-input',
|
274
274
|
'links' => 'links-input',
|
275
275
|
'mandate_request' => 'mandate_request-input',
|
@@ -306,8 +306,8 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
306
306
|
'billing_requests' => {
|
307
307
|
|
308
308
|
'actions' => 'actions-input',
|
309
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
310
309
|
'created_at' => 'created_at-input',
|
310
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
311
311
|
'id' => 'id-input',
|
312
312
|
'links' => 'links-input',
|
313
313
|
'mandate_request' => 'mandate_request-input',
|
@@ -341,8 +341,8 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
341
341
|
'billing_requests' => {
|
342
342
|
|
343
343
|
'actions' => 'actions-input',
|
344
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
345
344
|
'created_at' => 'created_at-input',
|
345
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
346
346
|
'id' => 'id-input',
|
347
347
|
'links' => 'links-input',
|
348
348
|
'mandate_request' => 'mandate_request-input',
|
@@ -393,12 +393,13 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
393
393
|
# /billing_requests/%v/actions/collect_customer_details
|
394
394
|
stub_url = '/billing_requests/:identity/actions/collect_customer_details'.gsub(':identity', resource_id)
|
395
395
|
stub_request(:post, /.*api.gocardless.com#{stub_url}/).to_return(
|
396
|
+
|
396
397
|
body: {
|
397
398
|
'billing_requests' => {
|
398
399
|
|
399
400
|
'actions' => 'actions-input',
|
400
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
401
401
|
'created_at' => 'created_at-input',
|
402
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
402
403
|
'id' => 'id-input',
|
403
404
|
'links' => 'links-input',
|
404
405
|
'mandate_request' => 'mandate_request-input',
|
@@ -408,6 +409,7 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
408
409
|
'status' => 'status-input',
|
409
410
|
},
|
410
411
|
}.to_json,
|
412
|
+
|
411
413
|
headers: response_headers
|
412
414
|
)
|
413
415
|
end
|
@@ -437,8 +439,8 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
437
439
|
'billing_requests' => {
|
438
440
|
|
439
441
|
'actions' => 'actions-input',
|
440
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
441
442
|
'created_at' => 'created_at-input',
|
443
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
442
444
|
'id' => 'id-input',
|
443
445
|
'links' => 'links-input',
|
444
446
|
'mandate_request' => 'mandate_request-input',
|
@@ -454,21 +456,22 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
454
456
|
end
|
455
457
|
end
|
456
458
|
|
457
|
-
describe '#
|
458
|
-
subject(:post_response) { client.billing_requests.
|
459
|
+
describe '#collect_bank_account' do
|
460
|
+
subject(:post_response) { client.billing_requests.collect_bank_account(resource_id) }
|
459
461
|
|
460
462
|
let(:resource_id) { 'ABC123' }
|
461
463
|
|
462
464
|
let!(:stub) do
|
463
|
-
# /billing_requests/%v/actions/
|
464
|
-
stub_url = '/billing_requests/:identity/actions/
|
465
|
+
# /billing_requests/%v/actions/collect_bank_account
|
466
|
+
stub_url = '/billing_requests/:identity/actions/collect_bank_account'.gsub(':identity', resource_id)
|
465
467
|
stub_request(:post, /.*api.gocardless.com#{stub_url}/).to_return(
|
468
|
+
|
466
469
|
body: {
|
467
470
|
'billing_requests' => {
|
468
471
|
|
469
472
|
'actions' => 'actions-input',
|
470
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
471
473
|
'created_at' => 'created_at-input',
|
474
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
472
475
|
'id' => 'id-input',
|
473
476
|
'links' => 'links-input',
|
474
477
|
'mandate_request' => 'mandate_request-input',
|
@@ -478,6 +481,7 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
478
481
|
'status' => 'status-input',
|
479
482
|
},
|
480
483
|
}.to_json,
|
484
|
+
|
481
485
|
headers: response_headers
|
482
486
|
)
|
483
487
|
end
|
@@ -491,13 +495,13 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
491
495
|
context 'when the request needs a body and custom header' do
|
492
496
|
let(:body) { { foo: 'bar' } }
|
493
497
|
let(:headers) { { 'Foo' => 'Bar' } }
|
494
|
-
subject(:post_response) { client.billing_requests.
|
498
|
+
subject(:post_response) { client.billing_requests.collect_bank_account(resource_id, body, headers) }
|
495
499
|
|
496
500
|
let(:resource_id) { 'ABC123' }
|
497
501
|
|
498
502
|
let!(:stub) do
|
499
|
-
# /billing_requests/%v/actions/
|
500
|
-
stub_url = '/billing_requests/:identity/actions/
|
503
|
+
# /billing_requests/%v/actions/collect_bank_account
|
504
|
+
stub_url = '/billing_requests/:identity/actions/collect_bank_account'.gsub(':identity', resource_id)
|
501
505
|
stub_request(:post, /.*api.gocardless.com#{stub_url}/).
|
502
506
|
with(
|
503
507
|
body: { foo: 'bar' },
|
@@ -507,8 +511,8 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
507
511
|
'billing_requests' => {
|
508
512
|
|
509
513
|
'actions' => 'actions-input',
|
510
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
511
514
|
'created_at' => 'created_at-input',
|
515
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
512
516
|
'id' => 'id-input',
|
513
517
|
'links' => 'links-input',
|
514
518
|
'mandate_request' => 'mandate_request-input',
|
@@ -533,12 +537,13 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
533
537
|
# /billing_requests/%v/actions/fulfil
|
534
538
|
stub_url = '/billing_requests/:identity/actions/fulfil'.gsub(':identity', resource_id)
|
535
539
|
stub_request(:post, /.*api.gocardless.com#{stub_url}/).to_return(
|
540
|
+
|
536
541
|
body: {
|
537
542
|
'billing_requests' => {
|
538
543
|
|
539
544
|
'actions' => 'actions-input',
|
540
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
541
545
|
'created_at' => 'created_at-input',
|
546
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
542
547
|
'id' => 'id-input',
|
543
548
|
'links' => 'links-input',
|
544
549
|
'mandate_request' => 'mandate_request-input',
|
@@ -548,6 +553,7 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
548
553
|
'status' => 'status-input',
|
549
554
|
},
|
550
555
|
}.to_json,
|
556
|
+
|
551
557
|
headers: response_headers
|
552
558
|
)
|
553
559
|
end
|
@@ -577,8 +583,80 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
577
583
|
'billing_requests' => {
|
578
584
|
|
579
585
|
'actions' => 'actions-input',
|
580
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
581
586
|
'created_at' => 'created_at-input',
|
587
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
588
|
+
'id' => 'id-input',
|
589
|
+
'links' => 'links-input',
|
590
|
+
'mandate_request' => 'mandate_request-input',
|
591
|
+
'metadata' => 'metadata-input',
|
592
|
+
'payment_request' => 'payment_request-input',
|
593
|
+
'resources' => 'resources-input',
|
594
|
+
'status' => 'status-input',
|
595
|
+
},
|
596
|
+
}.to_json,
|
597
|
+
headers: response_headers
|
598
|
+
)
|
599
|
+
end
|
600
|
+
end
|
601
|
+
end
|
602
|
+
|
603
|
+
describe '#confirm_payer_details' do
|
604
|
+
subject(:post_response) { client.billing_requests.confirm_payer_details(resource_id) }
|
605
|
+
|
606
|
+
let(:resource_id) { 'ABC123' }
|
607
|
+
|
608
|
+
let!(:stub) do
|
609
|
+
# /billing_requests/%v/actions/confirm_payer_details
|
610
|
+
stub_url = '/billing_requests/:identity/actions/confirm_payer_details'.gsub(':identity', resource_id)
|
611
|
+
stub_request(:post, /.*api.gocardless.com#{stub_url}/).to_return(
|
612
|
+
|
613
|
+
body: {
|
614
|
+
'billing_requests' => {
|
615
|
+
|
616
|
+
'actions' => 'actions-input',
|
617
|
+
'created_at' => 'created_at-input',
|
618
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
619
|
+
'id' => 'id-input',
|
620
|
+
'links' => 'links-input',
|
621
|
+
'mandate_request' => 'mandate_request-input',
|
622
|
+
'metadata' => 'metadata-input',
|
623
|
+
'payment_request' => 'payment_request-input',
|
624
|
+
'resources' => 'resources-input',
|
625
|
+
'status' => 'status-input',
|
626
|
+
},
|
627
|
+
}.to_json,
|
628
|
+
|
629
|
+
headers: response_headers
|
630
|
+
)
|
631
|
+
end
|
632
|
+
|
633
|
+
it 'wraps the response and calls the right endpoint' do
|
634
|
+
expect(post_response).to be_a(GoCardlessPro::Resources::BillingRequest)
|
635
|
+
|
636
|
+
expect(stub).to have_been_requested
|
637
|
+
end
|
638
|
+
|
639
|
+
context 'when the request needs a body and custom header' do
|
640
|
+
let(:body) { { foo: 'bar' } }
|
641
|
+
let(:headers) { { 'Foo' => 'Bar' } }
|
642
|
+
subject(:post_response) { client.billing_requests.confirm_payer_details(resource_id, body, headers) }
|
643
|
+
|
644
|
+
let(:resource_id) { 'ABC123' }
|
645
|
+
|
646
|
+
let!(:stub) do
|
647
|
+
# /billing_requests/%v/actions/confirm_payer_details
|
648
|
+
stub_url = '/billing_requests/:identity/actions/confirm_payer_details'.gsub(':identity', resource_id)
|
649
|
+
stub_request(:post, /.*api.gocardless.com#{stub_url}/).
|
650
|
+
with(
|
651
|
+
body: { foo: 'bar' },
|
652
|
+
headers: { 'Foo' => 'Bar' }
|
653
|
+
).to_return(
|
654
|
+
body: {
|
655
|
+
'billing_requests' => {
|
656
|
+
|
657
|
+
'actions' => 'actions-input',
|
658
|
+
'created_at' => 'created_at-input',
|
659
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
582
660
|
'id' => 'id-input',
|
583
661
|
'links' => 'links-input',
|
584
662
|
'mandate_request' => 'mandate_request-input',
|
@@ -603,12 +681,13 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
603
681
|
# /billing_requests/%v/actions/cancel
|
604
682
|
stub_url = '/billing_requests/:identity/actions/cancel'.gsub(':identity', resource_id)
|
605
683
|
stub_request(:post, /.*api.gocardless.com#{stub_url}/).to_return(
|
684
|
+
|
606
685
|
body: {
|
607
686
|
'billing_requests' => {
|
608
687
|
|
609
688
|
'actions' => 'actions-input',
|
610
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
611
689
|
'created_at' => 'created_at-input',
|
690
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
612
691
|
'id' => 'id-input',
|
613
692
|
'links' => 'links-input',
|
614
693
|
'mandate_request' => 'mandate_request-input',
|
@@ -618,6 +697,7 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
618
697
|
'status' => 'status-input',
|
619
698
|
},
|
620
699
|
}.to_json,
|
700
|
+
|
621
701
|
headers: response_headers
|
622
702
|
)
|
623
703
|
end
|
@@ -647,8 +727,8 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
647
727
|
'billing_requests' => {
|
648
728
|
|
649
729
|
'actions' => 'actions-input',
|
650
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
651
730
|
'created_at' => 'created_at-input',
|
731
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
652
732
|
'id' => 'id-input',
|
653
733
|
'links' => 'links-input',
|
654
734
|
'mandate_request' => 'mandate_request-input',
|
@@ -673,12 +753,13 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
673
753
|
# /billing_requests/%v/actions/notify
|
674
754
|
stub_url = '/billing_requests/:identity/actions/notify'.gsub(':identity', resource_id)
|
675
755
|
stub_request(:post, /.*api.gocardless.com#{stub_url}/).to_return(
|
756
|
+
|
676
757
|
body: {
|
677
758
|
'billing_requests' => {
|
678
759
|
|
679
760
|
'actions' => 'actions-input',
|
680
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
681
761
|
'created_at' => 'created_at-input',
|
762
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
682
763
|
'id' => 'id-input',
|
683
764
|
'links' => 'links-input',
|
684
765
|
'mandate_request' => 'mandate_request-input',
|
@@ -688,6 +769,7 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
688
769
|
'status' => 'status-input',
|
689
770
|
},
|
690
771
|
}.to_json,
|
772
|
+
|
691
773
|
headers: response_headers
|
692
774
|
)
|
693
775
|
end
|
@@ -717,8 +799,80 @@ describe GoCardlessPro::Resources::BillingRequest do
|
|
717
799
|
'billing_requests' => {
|
718
800
|
|
719
801
|
'actions' => 'actions-input',
|
720
|
-
'auto_fulfil' => 'auto_fulfil-input',
|
721
802
|
'created_at' => 'created_at-input',
|
803
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
804
|
+
'id' => 'id-input',
|
805
|
+
'links' => 'links-input',
|
806
|
+
'mandate_request' => 'mandate_request-input',
|
807
|
+
'metadata' => 'metadata-input',
|
808
|
+
'payment_request' => 'payment_request-input',
|
809
|
+
'resources' => 'resources-input',
|
810
|
+
'status' => 'status-input',
|
811
|
+
},
|
812
|
+
}.to_json,
|
813
|
+
headers: response_headers
|
814
|
+
)
|
815
|
+
end
|
816
|
+
end
|
817
|
+
end
|
818
|
+
|
819
|
+
describe '#fallback' do
|
820
|
+
subject(:post_response) { client.billing_requests.fallback(resource_id) }
|
821
|
+
|
822
|
+
let(:resource_id) { 'ABC123' }
|
823
|
+
|
824
|
+
let!(:stub) do
|
825
|
+
# /billing_requests/%v/actions/fallback
|
826
|
+
stub_url = '/billing_requests/:identity/actions/fallback'.gsub(':identity', resource_id)
|
827
|
+
stub_request(:post, /.*api.gocardless.com#{stub_url}/).to_return(
|
828
|
+
|
829
|
+
body: {
|
830
|
+
'billing_requests' => {
|
831
|
+
|
832
|
+
'actions' => 'actions-input',
|
833
|
+
'created_at' => 'created_at-input',
|
834
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
835
|
+
'id' => 'id-input',
|
836
|
+
'links' => 'links-input',
|
837
|
+
'mandate_request' => 'mandate_request-input',
|
838
|
+
'metadata' => 'metadata-input',
|
839
|
+
'payment_request' => 'payment_request-input',
|
840
|
+
'resources' => 'resources-input',
|
841
|
+
'status' => 'status-input',
|
842
|
+
},
|
843
|
+
}.to_json,
|
844
|
+
|
845
|
+
headers: response_headers
|
846
|
+
)
|
847
|
+
end
|
848
|
+
|
849
|
+
it 'wraps the response and calls the right endpoint' do
|
850
|
+
expect(post_response).to be_a(GoCardlessPro::Resources::BillingRequest)
|
851
|
+
|
852
|
+
expect(stub).to have_been_requested
|
853
|
+
end
|
854
|
+
|
855
|
+
context 'when the request needs a body and custom header' do
|
856
|
+
let(:body) { { foo: 'bar' } }
|
857
|
+
let(:headers) { { 'Foo' => 'Bar' } }
|
858
|
+
subject(:post_response) { client.billing_requests.fallback(resource_id, body, headers) }
|
859
|
+
|
860
|
+
let(:resource_id) { 'ABC123' }
|
861
|
+
|
862
|
+
let!(:stub) do
|
863
|
+
# /billing_requests/%v/actions/fallback
|
864
|
+
stub_url = '/billing_requests/:identity/actions/fallback'.gsub(':identity', resource_id)
|
865
|
+
stub_request(:post, /.*api.gocardless.com#{stub_url}/).
|
866
|
+
with(
|
867
|
+
body: { foo: 'bar' },
|
868
|
+
headers: { 'Foo' => 'Bar' }
|
869
|
+
).to_return(
|
870
|
+
body: {
|
871
|
+
'billing_requests' => {
|
872
|
+
|
873
|
+
'actions' => 'actions-input',
|
874
|
+
'created_at' => 'created_at-input',
|
875
|
+
'fallback_enabled' => 'fallback_enabled-input',
|
722
876
|
'id' => 'id-input',
|
723
877
|
'links' => 'links-input',
|
724
878
|
'mandate_request' => 'mandate_request-input',
|