gocardless_pro 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +9 -0
  3. data/lib/gocardless_pro/resources/bank_details_lookup.rb +3 -0
  4. data/lib/gocardless_pro/resources/creditor.rb +4 -1
  5. data/lib/gocardless_pro/resources/creditor_bank_account.rb +12 -9
  6. data/lib/gocardless_pro/resources/customer_bank_account.rb +4 -1
  7. data/lib/gocardless_pro/resources/event.rb +4 -1
  8. data/lib/gocardless_pro/resources/mandate.rb +4 -1
  9. data/lib/gocardless_pro/resources/mandate_pdf.rb +1 -1
  10. data/lib/gocardless_pro/resources/payment.rb +8 -5
  11. data/lib/gocardless_pro/resources/payout.rb +8 -4
  12. data/lib/gocardless_pro/resources/redirect_flow.rb +8 -1
  13. data/lib/gocardless_pro/resources/refund.rb +4 -1
  14. data/lib/gocardless_pro/resources/subscription.rb +4 -1
  15. data/lib/gocardless_pro/services/payouts_service.rb +1 -1
  16. data/lib/gocardless_pro/version.rb +1 -1
  17. data/spec/resources/bank_details_lookup_spec.rb +16 -1
  18. data/spec/resources/creditor_bank_account_spec.rb +13 -1
  19. data/spec/resources/creditor_spec.rb +13 -1
  20. data/spec/resources/customer_bank_account_spec.rb +13 -1
  21. data/spec/resources/customer_spec.rb +8 -1
  22. data/spec/resources/event_spec.rb +13 -1
  23. data/spec/resources/mandate_pdf_spec.rb +8 -1
  24. data/spec/resources/mandate_spec.rb +13 -1
  25. data/spec/resources/payment_spec.rb +13 -1
  26. data/spec/resources/payout_spec.rb +13 -1
  27. data/spec/resources/redirect_flow_spec.rb +21 -1
  28. data/spec/resources/refund_spec.rb +13 -1
  29. data/spec/resources/subscription_spec.rb +13 -1
  30. data/spec/services/bank_details_lookups_service_spec.rb +8 -4
  31. data/spec/services/creditor_bank_accounts_service_spec.rb +25 -21
  32. data/spec/services/creditors_service_spec.rb +24 -19
  33. data/spec/services/customer_bank_accounts_service_spec.rb +28 -23
  34. data/spec/services/customers_service_spec.rb +24 -19
  35. data/spec/services/events_service_spec.rb +17 -13
  36. data/spec/services/mandate_pdfs_service_spec.rb +5 -4
  37. data/spec/services/mandates_service_spec.rb +32 -27
  38. data/spec/services/payments_service_spec.rb +32 -27
  39. data/spec/services/payouts_service_spec.rb +17 -13
  40. data/spec/services/redirect_flows_service_spec.rb +19 -15
  41. data/spec/services/refunds_service_spec.rb +24 -19
  42. data/spec/services/subscriptions_service_spec.rb +28 -23
  43. metadata +3 -3
@@ -64,7 +64,7 @@ describe GoCardlessPro::Resources::Customer do
64
64
  }
65
65
  end
66
66
 
67
- it "can be initialized from an uneveloped response" do
67
+ it "can be initialized from an unenveloped response" do
68
68
  resource = described_class.new(data)
69
69
 
70
70
 
@@ -125,6 +125,13 @@ describe GoCardlessPro::Resources::Customer do
125
125
 
126
126
  end
127
127
 
128
+ it "can handle new attributes without erroring" do
129
+ data["foo"] = "bar"
130
+ expect { described_class.new(data) }.to_not raise_error
131
+ end
132
+
133
+
134
+
128
135
  describe "#to_h" do
129
136
  it "returns a hash representing the resource" do
130
137
  expect(described_class.new(data).to_h).to eq(data)
@@ -54,7 +54,7 @@ describe GoCardlessPro::Resources::Event do
54
54
  }
55
55
  end
56
56
 
57
- it "can be initialized from an uneveloped response" do
57
+ it "can be initialized from an unenveloped response" do
58
58
  resource = described_class.new(data)
59
59
 
60
60
 
@@ -103,6 +103,18 @@ describe GoCardlessPro::Resources::Event do
103
103
 
104
104
  end
105
105
 
106
+ it "can handle new attributes without erroring" do
107
+ data["foo"] = "bar"
108
+ expect { described_class.new(data) }.to_not raise_error
109
+ end
110
+
111
+
112
+ it "can handle new link attributes without erroring" do
113
+ data["links"]["foo"] = "bar"
114
+ expect { described_class.new(data) }.to_not raise_error
115
+ end
116
+
117
+
106
118
  describe "#to_h" do
107
119
  it "returns a hash representing the resource" do
108
120
  expect(described_class.new(data).to_h).to eq(data)
@@ -16,7 +16,7 @@ describe GoCardlessPro::Resources::MandatePdf do
16
16
  }
17
17
  end
18
18
 
19
- it "can be initialized from an uneveloped response" do
19
+ it "can be initialized from an unenveloped response" do
20
20
  resource = described_class.new(data)
21
21
 
22
22
 
@@ -29,6 +29,13 @@ describe GoCardlessPro::Resources::MandatePdf do
29
29
 
30
30
  end
31
31
 
32
+ it "can handle new attributes without erroring" do
33
+ data["foo"] = "bar"
34
+ expect { described_class.new(data) }.to_not raise_error
35
+ end
36
+
37
+
38
+
32
39
  describe "#to_h" do
33
40
  it "returns a hash representing the resource" do
34
41
  expect(described_class.new(data).to_h).to eq(data)
@@ -46,7 +46,7 @@ describe GoCardlessPro::Resources::Mandate do
46
46
  }
47
47
  end
48
48
 
49
- it "can be initialized from an uneveloped response" do
49
+ it "can be initialized from an unenveloped response" do
50
50
  resource = described_class.new(data)
51
51
 
52
52
 
@@ -87,6 +87,18 @@ describe GoCardlessPro::Resources::Mandate do
87
87
 
88
88
  end
89
89
 
90
+ it "can handle new attributes without erroring" do
91
+ data["foo"] = "bar"
92
+ expect { described_class.new(data) }.to_not raise_error
93
+ end
94
+
95
+
96
+ it "can handle new link attributes without erroring" do
97
+ data["links"]["foo"] = "bar"
98
+ expect { described_class.new(data) }.to_not raise_error
99
+ end
100
+
101
+
90
102
  describe "#to_h" do
91
103
  it "returns a hash representing the resource" do
92
104
  expect(described_class.new(data).to_h).to eq(data)
@@ -62,7 +62,7 @@ describe GoCardlessPro::Resources::Payment do
62
62
  }
63
63
  end
64
64
 
65
- it "can be initialized from an uneveloped response" do
65
+ it "can be initialized from an unenveloped response" do
66
66
  resource = described_class.new(data)
67
67
 
68
68
 
@@ -119,6 +119,18 @@ describe GoCardlessPro::Resources::Payment do
119
119
 
120
120
  end
121
121
 
122
+ it "can handle new attributes without erroring" do
123
+ data["foo"] = "bar"
124
+ expect { described_class.new(data) }.to_not raise_error
125
+ end
126
+
127
+
128
+ it "can handle new link attributes without erroring" do
129
+ data["links"]["foo"] = "bar"
130
+ expect { described_class.new(data) }.to_not raise_error
131
+ end
132
+
133
+
122
134
  describe "#to_h" do
123
135
  it "returns a hash representing the resource" do
124
136
  expect(described_class.new(data).to_h).to eq(data)
@@ -42,7 +42,7 @@ describe GoCardlessPro::Resources::Payout do
42
42
  }
43
43
  end
44
44
 
45
- it "can be initialized from an uneveloped response" do
45
+ it "can be initialized from an unenveloped response" do
46
46
  resource = described_class.new(data)
47
47
 
48
48
 
@@ -79,6 +79,18 @@ describe GoCardlessPro::Resources::Payout do
79
79
 
80
80
  end
81
81
 
82
+ it "can handle new attributes without erroring" do
83
+ data["foo"] = "bar"
84
+ expect { described_class.new(data) }.to_not raise_error
85
+ end
86
+
87
+
88
+ it "can handle new link attributes without erroring" do
89
+ data["links"]["foo"] = "bar"
90
+ expect { described_class.new(data) }.to_not raise_error
91
+ end
92
+
93
+
82
94
  describe "#to_h" do
83
95
  it "returns a hash representing the resource" do
84
96
  expect(described_class.new(data).to_h).to eq(data)
@@ -22,6 +22,10 @@ describe GoCardlessPro::Resources::RedirectFlow do
22
22
 
23
23
  "creditor" => "creditor-input",
24
24
 
25
+ "customer" => "customer-input",
26
+
27
+ "customer_bank_account" => "customer_bank_account-input",
28
+
25
29
  "mandate" => "mandate-input",
26
30
 
27
31
  },
@@ -46,7 +50,7 @@ describe GoCardlessPro::Resources::RedirectFlow do
46
50
  }
47
51
  end
48
52
 
49
- it "can be initialized from an uneveloped response" do
53
+ it "can be initialized from an unenveloped response" do
50
54
  resource = described_class.new(data)
51
55
 
52
56
 
@@ -65,6 +69,10 @@ describe GoCardlessPro::Resources::RedirectFlow do
65
69
 
66
70
  expect(resource.links.creditor).to eq("creditor-input")
67
71
 
72
+ expect(resource.links.customer).to eq("customer-input")
73
+
74
+ expect(resource.links.customer_bank_account).to eq("customer_bank_account-input")
75
+
68
76
  expect(resource.links.mandate).to eq("mandate-input")
69
77
 
70
78
 
@@ -87,6 +95,18 @@ describe GoCardlessPro::Resources::RedirectFlow do
87
95
 
88
96
  end
89
97
 
98
+ it "can handle new attributes without erroring" do
99
+ data["foo"] = "bar"
100
+ expect { described_class.new(data) }.to_not raise_error
101
+ end
102
+
103
+
104
+ it "can handle new link attributes without erroring" do
105
+ data["links"]["foo"] = "bar"
106
+ expect { described_class.new(data) }.to_not raise_error
107
+ end
108
+
109
+
90
110
  describe "#to_h" do
91
111
  it "returns a hash representing the resource" do
92
112
  expect(described_class.new(data).to_h).to eq(data)
@@ -36,7 +36,7 @@ describe GoCardlessPro::Resources::Refund do
36
36
  }
37
37
  end
38
38
 
39
- it "can be initialized from an uneveloped response" do
39
+ it "can be initialized from an unenveloped response" do
40
40
  resource = described_class.new(data)
41
41
 
42
42
 
@@ -67,6 +67,18 @@ describe GoCardlessPro::Resources::Refund do
67
67
 
68
68
  end
69
69
 
70
+ it "can handle new attributes without erroring" do
71
+ data["foo"] = "bar"
72
+ expect { described_class.new(data) }.to_not raise_error
73
+ end
74
+
75
+
76
+ it "can handle new link attributes without erroring" do
77
+ data["links"]["foo"] = "bar"
78
+ expect { described_class.new(data) }.to_not raise_error
79
+ end
80
+
81
+
70
82
  describe "#to_h" do
71
83
  it "returns a hash representing the resource" do
72
84
  expect(described_class.new(data).to_h).to eq(data)
@@ -80,7 +80,7 @@ describe GoCardlessPro::Resources::Subscription do
80
80
  }
81
81
  end
82
82
 
83
- it "can be initialized from an uneveloped response" do
83
+ it "can be initialized from an unenveloped response" do
84
84
  resource = described_class.new(data)
85
85
 
86
86
 
@@ -155,6 +155,18 @@ describe GoCardlessPro::Resources::Subscription do
155
155
 
156
156
  end
157
157
 
158
+ it "can handle new attributes without erroring" do
159
+ data["foo"] = "bar"
160
+ expect { described_class.new(data) }.to_not raise_error
161
+ end
162
+
163
+
164
+ it "can handle new link attributes without erroring" do
165
+ data["links"]["foo"] = "bar"
166
+ expect { described_class.new(data) }.to_not raise_error
167
+ end
168
+
169
+
158
170
  describe "#to_h" do
159
171
  it "returns a hash representing the resource" do
160
172
  expect(described_class.new(data).to_h).to eq(data)
@@ -9,6 +9,7 @@ describe GoCardlessPro::Services::BankDetailsLookupsService do
9
9
 
10
10
 
11
11
 
12
+
12
13
 
13
14
 
14
15
 
@@ -20,26 +21,29 @@ describe GoCardlessPro::Services::BankDetailsLookupsService do
20
21
 
21
22
  "available_debit_schemes" => "available_debit_schemes-input",
22
23
  "bank_name" => "bank_name-input",
24
+ "bic" => "bic-input",
23
25
  }
24
26
  end
25
27
 
26
28
  before do
27
- stub_request(:post, /.*api.gocardless.com\/bank_details_lookups/).
29
+ stub_request(:post, %r(.*api.gocardless.com/bank_details_lookups)).
28
30
  with(
29
31
  body: {
30
- bank_details_lookups: {
32
+ "bank_details_lookups" => {
31
33
 
32
34
  "available_debit_schemes" => "available_debit_schemes-input",
33
35
  "bank_name" => "bank_name-input",
36
+ "bic" => "bic-input",
34
37
  }
35
38
  }
36
39
  ).
37
40
  to_return(
38
41
  body: {
39
- bank_details_lookups: {
42
+ "bank_details_lookups" => {
40
43
 
41
44
  "available_debit_schemes" => "available_debit_schemes-input",
42
45
  "bank_name" => "bank_name-input",
46
+ "bic" => "bic-input",
43
47
  }
44
48
  }.to_json,
45
49
  :headers => {'Content-Type' => 'application/json'}
@@ -55,7 +59,7 @@ describe GoCardlessPro::Services::BankDetailsLookupsService do
55
59
  let(:new_resource) { {} }
56
60
 
57
61
  before do
58
- stub_request(:post, /.*api.gocardless.com\/bank_details_lookups/).to_return(
62
+ stub_request(:post, %r(.*api.gocardless.com/bank_details_lookups)).to_return(
59
63
  body: {
60
64
  error: {
61
65
  type: 'validation_failed',
@@ -9,6 +9,7 @@ describe GoCardlessPro::Services::CreditorBankAccountsService do
9
9
 
10
10
 
11
11
 
12
+
12
13
 
13
14
 
14
15
 
@@ -32,10 +33,10 @@ describe GoCardlessPro::Services::CreditorBankAccountsService do
32
33
  end
33
34
 
34
35
  before do
35
- stub_request(:post, /.*api.gocardless.com\/creditor_bank_accounts/).
36
+ stub_request(:post, %r(.*api.gocardless.com/creditor_bank_accounts)).
36
37
  with(
37
38
  body: {
38
- creditor_bank_accounts: {
39
+ "creditor_bank_accounts" => {
39
40
 
40
41
  "account_holder_name" => "account_holder_name-input",
41
42
  "account_number_ending" => "account_number_ending-input",
@@ -52,7 +53,7 @@ describe GoCardlessPro::Services::CreditorBankAccountsService do
52
53
  ).
53
54
  to_return(
54
55
  body: {
55
- creditor_bank_accounts: {
56
+ "creditor_bank_accounts" => {
56
57
 
57
58
  "account_holder_name" => "account_holder_name-input",
58
59
  "account_number_ending" => "account_number_ending-input",
@@ -79,7 +80,7 @@ describe GoCardlessPro::Services::CreditorBankAccountsService do
79
80
  let(:new_resource) { {} }
80
81
 
81
82
  before do
82
- stub_request(:post, /.*api.gocardless.com\/creditor_bank_accounts/).to_return(
83
+ stub_request(:post, %r(.*api.gocardless.com/creditor_bank_accounts)).to_return(
83
84
  body: {
84
85
  error: {
85
86
  type: 'validation_failed',
@@ -109,9 +110,9 @@ describe GoCardlessPro::Services::CreditorBankAccountsService do
109
110
  subject(:get_list_response) { client.creditor_bank_accounts.list }
110
111
 
111
112
  before do
112
- stub_request(:get, /.*api.gocardless.com\/creditor_bank_accounts/).to_return(
113
+ stub_request(:get, %r(.*api.gocardless.com/creditor_bank_accounts)).to_return(
113
114
  body: {
114
- creditor_bank_accounts: [{
115
+ "creditor_bank_accounts" => [{
115
116
 
116
117
  "account_holder_name" => "account_holder_name-input",
117
118
  "account_number_ending" => "account_number_ending-input",
@@ -190,9 +191,9 @@ describe GoCardlessPro::Services::CreditorBankAccountsService do
190
191
 
191
192
  describe "#all" do
192
193
  let!(:first_response_stub) do
193
- stub_request(:get, /.*api.gocardless.com\/creditor_bank_accounts$/).to_return(
194
+ stub_request(:get, %r(.*api.gocardless.com/creditor_bank_accounts$)).to_return(
194
195
  body: {
195
- creditor_bank_accounts: [{
196
+ "creditor_bank_accounts" => [{
196
197
 
197
198
  "account_holder_name" => "account_holder_name-input",
198
199
  "account_number_ending" => "account_number_ending-input",
@@ -215,9 +216,9 @@ describe GoCardlessPro::Services::CreditorBankAccountsService do
215
216
  end
216
217
 
217
218
  let!(:second_response_stub) do
218
- stub_request(:get, /.*api.gocardless.com\/creditor_bank_accounts\?after=AB345/).to_return(
219
+ stub_request(:get, %r(.*api.gocardless.com/creditor_bank_accounts\?after=AB345)).to_return(
219
220
  body: {
220
- creditor_bank_accounts: [{
221
+ "creditor_bank_accounts" => [{
221
222
 
222
223
  "account_holder_name" => "account_holder_name-input",
223
224
  "account_number_ending" => "account_number_ending-input",
@@ -258,11 +259,12 @@ describe GoCardlessPro::Services::CreditorBankAccountsService do
258
259
 
259
260
  context "passing in a custom header" do
260
261
  let!(:stub) do
261
- stub_request(:get, /.*api.gocardless.com\/creditor_bank_accounts\/ID123/)
262
- .with(headers: { 'Foo' => 'Bar' })
263
- .to_return(
262
+ stub_url = "/creditor_bank_accounts/:identity".gsub(':identity', id)
263
+ stub_request(:get, %r(.*api.gocardless.com#{stub_url})).
264
+ with(headers: { 'Foo' => 'Bar' }).
265
+ to_return(
264
266
  body: {
265
- creditor_bank_accounts: {
267
+ "creditor_bank_accounts" => {
266
268
 
267
269
  "account_holder_name" => "account_holder_name-input",
268
270
  "account_number_ending" => "account_number_ending-input",
@@ -294,9 +296,10 @@ describe GoCardlessPro::Services::CreditorBankAccountsService do
294
296
 
295
297
  context "when there is a creditor_bank_account to return" do
296
298
  before do
297
- stub_request(:get, /.*api.gocardless.com\/creditor_bank_accounts\/ID123/).to_return(
299
+ stub_url = "/creditor_bank_accounts/:identity".gsub(':identity', id)
300
+ stub_request(:get, %r(.*api.gocardless.com#{stub_url})).to_return(
298
301
  body: {
299
- creditor_bank_accounts: {
302
+ "creditor_bank_accounts" => {
300
303
 
301
304
  "account_holder_name" => "account_holder_name-input",
302
305
  "account_number_ending" => "account_number_ending-input",
@@ -321,7 +324,8 @@ describe GoCardlessPro::Services::CreditorBankAccountsService do
321
324
 
322
325
  context "when nothing is returned" do
323
326
  before do
324
- stub_request(:get, /.*api.gocardless.com\/creditor_bank_accounts\/ID123/).to_return(
327
+ stub_url = "/creditor_bank_accounts/:identity".gsub(':identity', id)
328
+ stub_request(:get, %r(.*api.gocardless.com#{stub_url})).to_return(
325
329
  body: "",
326
330
  headers: { 'Content-Type' => 'application/json' }
327
331
  )
@@ -348,9 +352,9 @@ describe GoCardlessPro::Services::CreditorBankAccountsService do
348
352
  let!(:stub) do
349
353
  # /creditor_bank_accounts/%v/actions/disable
350
354
  stub_url = "/creditor_bank_accounts/:identity/actions/disable".gsub(':identity', resource_id)
351
- stub_request(:post, /.*api.gocardless.com#{stub_url}/).to_return(
355
+ stub_request(:post, %r(.*api.gocardless.com#{stub_url})).to_return(
352
356
  body: {
353
- creditor_bank_accounts: {
357
+ "creditor_bank_accounts" => {
354
358
 
355
359
  "account_holder_name" => "account_holder_name-input",
356
360
  "account_number_ending" => "account_number_ending-input",
@@ -385,13 +389,13 @@ describe GoCardlessPro::Services::CreditorBankAccountsService do
385
389
  let!(:stub) do
386
390
  # /creditor_bank_accounts/%v/actions/disable
387
391
  stub_url = "/creditor_bank_accounts/:identity/actions/disable".gsub(':identity', resource_id)
388
- stub_request(:post, /.*api.gocardless.com#{stub_url}/).
392
+ stub_request(:post, %r(.*api.gocardless.com#{stub_url})).
389
393
  with(
390
394
  body: { foo: 'bar' },
391
395
  headers: { 'Foo' => 'Bar' }
392
396
  ).to_return(
393
397
  body: {
394
- creditor_bank_accounts: {
398
+ "creditor_bank_accounts" => {
395
399
 
396
400
  "account_holder_name" => "account_holder_name-input",
397
401
  "account_number_ending" => "account_number_ending-input",