pin_up 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.travis.yml +3 -6
- data/Gemfile +2 -3
- data/Gemfile.lock +76 -75
- data/Guardfile +47 -39
- data/README.md +24 -0
- data/VERSION +1 -1
- data/lib/pin_up/balance.rb +15 -0
- data/lib/pin_up/bank_accounts.rb +19 -0
- data/lib/pin_up/base.rb +2 -0
- data/lib/pin_up/client.rb +5 -5
- data/lib/pin_up/customer.rb +39 -0
- data/lib/pin_up/pin_errors.rb +6 -1
- data/lib/pin_up/recipient.rb +50 -0
- data/lib/pin_up/transfer.rb +43 -0
- data/lib/pin_up.rb +5 -0
- data/pin_up.gemspec +19 -16
- data/spec/balance_spec.rb +11 -0
- data/spec/bank_accounts_spec.rb +12 -0
- data/spec/cards_spec.rb +1 -1
- data/spec/charges_spec.rb +16 -16
- data/spec/customers_spec.rb +38 -12
- data/spec/errors_spec.rb +11 -4
- data/spec/recipients_spec.rb +36 -0
- data/spec/refund_spec.rb +5 -5
- data/spec/spec_helper.rb +1 -2
- data/spec/transfers_spec.rb +32 -0
- metadata +39 -46
- data/.DS_Store +0 -0
data/pin_up.gemspec
CHANGED
|
@@ -2,16 +2,14 @@
|
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
|
4
4
|
# -*- encoding: utf-8 -*-
|
|
5
|
-
# stub: pin_up 1.0.0 ruby lib
|
|
6
5
|
|
|
7
6
|
Gem::Specification.new do |s|
|
|
8
7
|
s.name = "pin_up"
|
|
9
|
-
s.version = "1.
|
|
8
|
+
s.version = "1.1.0"
|
|
10
9
|
|
|
11
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
12
|
-
s.require_paths = ["lib"]
|
|
13
11
|
s.authors = ["Daniel Nitsikopoulos"]
|
|
14
|
-
s.date = "2015-
|
|
12
|
+
s.date = "2015-07-17"
|
|
15
13
|
s.description = "A Ruby gem wrapper for the pin-payments (pin.net.au) API"
|
|
16
14
|
s.email = "dnitza@gmail.com"
|
|
17
15
|
s.extra_rdoc_files = [
|
|
@@ -19,7 +17,6 @@ Gem::Specification.new do |s|
|
|
|
19
17
|
"README.md"
|
|
20
18
|
]
|
|
21
19
|
s.files = [
|
|
22
|
-
".DS_Store",
|
|
23
20
|
".document",
|
|
24
21
|
".travis.yml",
|
|
25
22
|
"Gemfile",
|
|
@@ -31,27 +28,36 @@ Gem::Specification.new do |s|
|
|
|
31
28
|
"VERSION",
|
|
32
29
|
"build",
|
|
33
30
|
"lib/pin_up.rb",
|
|
31
|
+
"lib/pin_up/balance.rb",
|
|
32
|
+
"lib/pin_up/bank_accounts.rb",
|
|
34
33
|
"lib/pin_up/base.rb",
|
|
35
34
|
"lib/pin_up/card.rb",
|
|
36
35
|
"lib/pin_up/charge.rb",
|
|
37
36
|
"lib/pin_up/client.rb",
|
|
38
37
|
"lib/pin_up/customer.rb",
|
|
39
38
|
"lib/pin_up/pin_errors.rb",
|
|
39
|
+
"lib/pin_up/recipient.rb",
|
|
40
40
|
"lib/pin_up/refund.rb",
|
|
41
41
|
"lib/pin_up/retrying_client.rb",
|
|
42
|
+
"lib/pin_up/transfer.rb",
|
|
42
43
|
"pin_up.gemspec",
|
|
44
|
+
"spec/balance_spec.rb",
|
|
45
|
+
"spec/bank_accounts_spec.rb",
|
|
43
46
|
"spec/base_spec.rb",
|
|
44
47
|
"spec/cards_spec.rb",
|
|
45
48
|
"spec/charges_spec.rb",
|
|
46
49
|
"spec/client_spec.rb",
|
|
47
50
|
"spec/customers_spec.rb",
|
|
48
51
|
"spec/errors_spec.rb",
|
|
52
|
+
"spec/recipients_spec.rb",
|
|
49
53
|
"spec/refund_spec.rb",
|
|
50
|
-
"spec/spec_helper.rb"
|
|
54
|
+
"spec/spec_helper.rb",
|
|
55
|
+
"spec/transfers_spec.rb"
|
|
51
56
|
]
|
|
52
57
|
s.homepage = "http://github.com/dNitza/pin_up"
|
|
53
58
|
s.licenses = ["MIT"]
|
|
54
|
-
s.
|
|
59
|
+
s.require_paths = ["lib"]
|
|
60
|
+
s.rubygems_version = "2.0.14"
|
|
55
61
|
s.summary = "A Ruby gem wrapper for the pin-payments API"
|
|
56
62
|
|
|
57
63
|
if s.respond_to? :specification_version then
|
|
@@ -61,39 +67,36 @@ Gem::Specification.new do |s|
|
|
|
61
67
|
s.add_runtime_dependency(%q<httparty>, [">= 0.11.0"])
|
|
62
68
|
s.add_development_dependency(%q<shoulda>, ["~> 3.5"])
|
|
63
69
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
|
64
|
-
s.add_development_dependency(%q<rspec>, ["
|
|
70
|
+
s.add_development_dependency(%q<rspec>, [">= 0"])
|
|
65
71
|
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
|
66
72
|
s.add_development_dependency(%q<simplecov>, ["~> 0.7.1"])
|
|
67
73
|
s.add_development_dependency(%q<webmock>, ["~> 1.12.3"])
|
|
68
74
|
s.add_development_dependency(%q<vcr>, ["~> 2.5.0"])
|
|
69
|
-
s.add_development_dependency(%q<guard-rspec>, ["
|
|
75
|
+
s.add_development_dependency(%q<guard-rspec>, [">= 0"])
|
|
70
76
|
s.add_development_dependency(%q<terminal-notifier-guard>, ["~> 1.5.3"])
|
|
71
|
-
s.add_development_dependency(%q<capybara>, ["~> 2.1.0"])
|
|
72
77
|
else
|
|
73
78
|
s.add_dependency(%q<httparty>, [">= 0.11.0"])
|
|
74
79
|
s.add_dependency(%q<shoulda>, ["~> 3.5"])
|
|
75
80
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
|
76
|
-
s.add_dependency(%q<rspec>, ["
|
|
81
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
|
77
82
|
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
|
78
83
|
s.add_dependency(%q<simplecov>, ["~> 0.7.1"])
|
|
79
84
|
s.add_dependency(%q<webmock>, ["~> 1.12.3"])
|
|
80
85
|
s.add_dependency(%q<vcr>, ["~> 2.5.0"])
|
|
81
|
-
s.add_dependency(%q<guard-rspec>, ["
|
|
86
|
+
s.add_dependency(%q<guard-rspec>, [">= 0"])
|
|
82
87
|
s.add_dependency(%q<terminal-notifier-guard>, ["~> 1.5.3"])
|
|
83
|
-
s.add_dependency(%q<capybara>, ["~> 2.1.0"])
|
|
84
88
|
end
|
|
85
89
|
else
|
|
86
90
|
s.add_dependency(%q<httparty>, [">= 0.11.0"])
|
|
87
91
|
s.add_dependency(%q<shoulda>, ["~> 3.5"])
|
|
88
92
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
|
89
|
-
s.add_dependency(%q<rspec>, ["
|
|
93
|
+
s.add_dependency(%q<rspec>, [">= 0"])
|
|
90
94
|
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
|
91
95
|
s.add_dependency(%q<simplecov>, ["~> 0.7.1"])
|
|
92
96
|
s.add_dependency(%q<webmock>, ["~> 1.12.3"])
|
|
93
97
|
s.add_dependency(%q<vcr>, ["~> 2.5.0"])
|
|
94
|
-
s.add_dependency(%q<guard-rspec>, ["
|
|
98
|
+
s.add_dependency(%q<guard-rspec>, [">= 0"])
|
|
95
99
|
s.add_dependency(%q<terminal-notifier-guard>, ["~> 1.5.3"])
|
|
96
|
-
s.add_dependency(%q<capybara>, ["~> 2.1.0"])
|
|
97
100
|
end
|
|
98
101
|
end
|
|
99
102
|
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Pin::Balance, :vcr do
|
|
4
|
+
before(:each) do
|
|
5
|
+
Pin::Base.new(ENV['PIN_SECRET'], :test)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it 'returns the current balance of your Pin Payments account.' do
|
|
9
|
+
expect(Pin::Balance.get).to include('available', 'pending')
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Pin::BankAccounts, :vcr do
|
|
4
|
+
before(:each) do
|
|
5
|
+
Pin::Base.new(ENV['PIN_SECRET'], :test)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it 'creates a bank account token and returns its details' do
|
|
9
|
+
options = { name: 'Roland Robot', bsb: '123456', number: '987654321' }
|
|
10
|
+
expect(Pin::BankAccounts.create(options)['token']).to match(/^[a-z]{2}[_]/)
|
|
11
|
+
end
|
|
12
|
+
end
|
data/spec/cards_spec.rb
CHANGED
|
@@ -7,6 +7,6 @@ RSpec.describe 'Card', :vcr, class: Pin::Card do
|
|
|
7
7
|
|
|
8
8
|
it 'should create a card and respond with the card detail from pin' do
|
|
9
9
|
options = { number: '5520000000000000', expiry_month: '12', expiry_year: '2018', cvc: '123', name: 'Roland Robot', address_line1: '123 Fake Road', address_line2: '', address_city: 'Melbourne', address_postcode: '1223', address_state: 'Vic', address_country: 'AU' }
|
|
10
|
-
Pin::Card.create(options)['token'].
|
|
10
|
+
expect(Pin::Card.create(options)['token']).to match(/^[a-z]{4}[_]/)
|
|
11
11
|
end
|
|
12
12
|
end
|
data/spec/charges_spec.rb
CHANGED
|
@@ -6,42 +6,42 @@ describe 'Charge', :vcr, class: Pin::Charges do
|
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
it 'should list charges in Pin' do
|
|
9
|
-
Pin::Charges.all.
|
|
9
|
+
expect(Pin::Charges.all).to_not eq []
|
|
10
10
|
end
|
|
11
11
|
|
|
12
|
-
it 'should show a charge
|
|
13
|
-
Pin::Charges.
|
|
12
|
+
it 'should not show a charge if end_date is out of range' do
|
|
13
|
+
expect(Pin::Charges.search(end_date: 'Mar 25, 2011')).to eq []
|
|
14
14
|
end
|
|
15
15
|
|
|
16
|
-
it 'should
|
|
17
|
-
|
|
16
|
+
it 'should create a charge given details' do
|
|
17
|
+
options = { email: 'dNitza@gmail.com', description: 'A new charge from testing Pin gem', amount: '400', currency: 'AUD', ip_address: '127.0.0.1', customer_token: 'cus_6XnfOD5bvQ1qkaf3LqmhfQ' }
|
|
18
|
+
expect(Pin::Charges.create(options)['success']).to eq true
|
|
18
19
|
end
|
|
19
20
|
|
|
20
|
-
it 'should
|
|
21
|
-
Pin::Charges.
|
|
21
|
+
it 'should show a charge given a token' do
|
|
22
|
+
expect(Pin::Charges.find('ch_YFEgBSs5qTIWggGt72jn7Q')['token']).to match(/^[a-z]{2}[_]/)
|
|
22
23
|
end
|
|
23
24
|
|
|
24
|
-
it 'should
|
|
25
|
-
|
|
26
|
-
Pin::Charges.create(options)['success'].should eq true
|
|
25
|
+
it 'should show a charge given a search term' do
|
|
26
|
+
expect(Pin::Charges.search(query: 'A new charge from testing Pin gem', end_date: 'Mar 25, 2016')).to_not eq []
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
it 'should return pagination if "pagination" is true' do
|
|
30
|
-
Pin::Charges.all(3, true)[:pagination]['current']
|
|
30
|
+
expect(Pin::Charges.all(3, true)[:pagination]['current']).to eq 3
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
it 'should list charges on a page given a page' do
|
|
34
|
-
Pin::Charges.all(1).
|
|
34
|
+
expect(Pin::Charges.all(1)).to_not eq []
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
it 'should create a pre-auth (capture a charge)' do
|
|
38
|
-
options = { email: 'dNitza@gmail.com', description: 'A new captured charge from testing Pin gem', amount: '400', currency: 'AUD', ip_address: '127.0.0.1', customer_token: '
|
|
39
|
-
Pin::Charges.create(options)['captured'].
|
|
38
|
+
options = { email: 'dNitza@gmail.com', description: 'A new captured charge from testing Pin gem', amount: '400', currency: 'AUD', ip_address: '127.0.0.1', customer_token: 'cus_6XnfOD5bvQ1qkaf3LqmhfQ', capture: false }
|
|
39
|
+
expect(Pin::Charges.create(options)['captured']).to eq false
|
|
40
40
|
end
|
|
41
41
|
|
|
42
42
|
it 'should capture a charge' do
|
|
43
|
-
options = { email: 'dNitza@gmail.com', description: 'A new captured charge from testing Pin gem', amount: '400', currency: 'AUD', ip_address: '127.0.0.1', customer_token: '
|
|
43
|
+
options = { email: 'dNitza@gmail.com', description: 'A new captured charge from testing Pin gem', amount: '400', currency: 'AUD', ip_address: '127.0.0.1', customer_token: 'cus_6XnfOD5bvQ1qkaf3LqmhfQ', capture: false }
|
|
44
44
|
token = Pin::Charges.create(options)['token']
|
|
45
|
-
Pin::Charges.capture(token)['success'].
|
|
45
|
+
expect(Pin::Charges.capture(token)['success']).to eq true
|
|
46
46
|
end
|
|
47
47
|
end
|
data/spec/customers_spec.rb
CHANGED
|
@@ -6,17 +6,17 @@ describe 'Customer', :vcr, class: Pin::Customer do
|
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
it 'should list customers' do
|
|
9
|
-
Pin::Customer.all.
|
|
9
|
+
expect(Pin::Customer.all).to_not eq []
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
it 'should go to a specific page when page paramater is passed' do
|
|
13
13
|
request = Pin::Customer.all(20, true)
|
|
14
|
-
request[:pagination]['current'].
|
|
14
|
+
expect(request[:pagination]['current']).to eq 20
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
it 'should list customers on a page given a page' do
|
|
18
18
|
request = Pin::Customer.all(1, true)
|
|
19
|
-
request[:response].
|
|
19
|
+
expect(request[:response]).to_not eq []
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
it 'should return pagination if true is passed for pagination' do
|
|
@@ -26,38 +26,64 @@ describe 'Customer', :vcr, class: Pin::Customer do
|
|
|
26
26
|
|
|
27
27
|
it 'should not list customers on a page given a page if there are no customers' do
|
|
28
28
|
request = Pin::Customer.all(25, true)
|
|
29
|
-
request[:response].
|
|
29
|
+
expect(request[:response]).to eq []
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
it 'should show a
|
|
33
|
-
Pin::Customer.find('
|
|
32
|
+
it 'should show a customer given a token' do
|
|
33
|
+
expect(Pin::Customer.find('cus_6XnfOD5bvQ1qkaf3LqmhfQ')['token']).to eq 'cus_6XnfOD5bvQ1qkaf3LqmhfQ'
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
it 'should list charges to a customer given a token' do
|
|
37
|
-
Pin::Customer.charges('
|
|
37
|
+
expect(Pin::Customer.charges('cus_6XnfOD5bvQ1qkaf3LqmhfQ')[0]['token']).to match(/^[a-z]{2}[_]/)
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
it 'should show pagination on a page given a token and a page' do
|
|
41
|
-
Pin::Customer.charges('
|
|
41
|
+
expect(Pin::Customer.charges('cus_6XnfOD5bvQ1qkaf3LqmhfQ', 5, true)[:pagination]['current']).to eq 5
|
|
42
42
|
end
|
|
43
43
|
|
|
44
44
|
it 'should list charges to a customer on a page given a token and a page' do
|
|
45
|
-
Pin::Customer.charges('
|
|
45
|
+
expect(Pin::Customer.charges('cus_6XnfOD5bvQ1qkaf3LqmhfQ', 1, true)[:response][0]['token']).to match(/^[a-z]{2}[_]/)
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
it 'should create a customer given an email and card details' do
|
|
49
|
-
Pin::Customer.create('dNitza@gmail.com', number: '5520000000000000', expiry_month: '12', expiry_year: '2016', cvc: '123', name: 'Roland Robot', address_line1: '123 fake street', address_city: 'Melbourne', address_postcode: '1234', address_state: 'Vic', address_country: 'Australia')['token'].
|
|
49
|
+
expect(Pin::Customer.create('dNitza@gmail.com', number: '5520000000000000', expiry_month: '12', expiry_year: '2016', cvc: '123', name: 'Roland Robot', address_line1: '123 fake street', address_city: 'Melbourne', address_postcode: '1234', address_state: 'Vic', address_country: 'Australia')['token']).to match(/^[a-z]{3}[_]/)
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
it 'should update a customer given a token and details to update' do
|
|
53
53
|
options = { email: 'dNitza@gmail.com', card: { number: '5520000000000000', address_line1: '12345 Fake Street', expiry_month: '05', expiry_year: '2016', cvc: '123', name: 'Daniel Nitsikopoulos', address_city: 'Melbourne', address_postcode: '1234', address_state: 'VIC', address_country: 'Australia' } }
|
|
54
|
-
Pin::Customer.update('
|
|
54
|
+
expect(Pin::Customer.update('cus_6XnfOD5bvQ1qkaf3LqmhfQ', options)['card']['address_line1']).to eq '12345 Fake Street'
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
it 'should create a customer given a card token customer email' do
|
|
58
58
|
options = { number: '5520000000000000', expiry_month: '12', expiry_year: '2018', cvc: '123', name: 'Roland TestRobot', address_line1: '123 Fake Road', address_line2: '', address_city: 'Melbourne', address_postcode: '1223', address_state: 'Vic', address_country: 'AU' }
|
|
59
59
|
@card = Pin::Card.create(options)
|
|
60
|
-
Pin::Customer.create('nitza98@hotmail.com', @card['token'])['token'].
|
|
60
|
+
expect(Pin::Customer.create('nitza98@hotmail.com', @card['token'])['token']).to match(/^[a-z]{3}[_]/)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it 'should list all cards belonging to this customer' do
|
|
64
|
+
token = 'cus_6XnfOD5bvQ1qkaf3LqmhfQ'
|
|
65
|
+
expect(Pin::Customer.cards(token).first['token']).to match(/(card)[_]([\w-]{22})/)
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
it 'should create a card given customer token and card hash' do
|
|
69
|
+
customer_token = 'cus_6XnfOD5bvQ1qkaf3LqmhfQ'
|
|
70
|
+
card = { publishable_api_key: ENV['PUBLISHABLE_SECRET'], number: '5520000000000000', expiry_month: '12', expiry_year: '2018', cvc: '123', name: 'Roland TestRobot', address_line1: '123 Fake Road', address_line2: '', address_city: 'Melbourne', address_postcode: '1223', address_state: 'Vic', address_country: 'AU' }
|
|
71
|
+
expect(Pin::Customer.create_card(customer_token, card)['token']).to match(/(card)[_]([\w-]{22})/)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it 'should create a card then add it to a customer' do
|
|
75
|
+
options = { number: '5520000000000000', expiry_month: '12', expiry_year: '2018', cvc: '123', name: 'Roland Robot', address_line1: '123 Fake Road', address_line2: '', address_city: 'Melbourne', address_postcode: '1223', address_state: 'Vic', address_country: 'AU' }
|
|
76
|
+
card_token = Pin::Card.create(options)['token']
|
|
77
|
+
customer_token = 'cus_6XnfOD5bvQ1qkaf3LqmhfQ'
|
|
78
|
+
expect(Pin::Customer.create_card(customer_token, card_token)['token']).to match(/(card)[_]([\w-]{22})/)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it 'should delete a card given a token' do
|
|
82
|
+
options = { number: '5520000000000000', expiry_month: '12', expiry_year: '2018', cvc: '123', name: 'Roland Robot', address_line1: '123 Fake Road', address_line2: '', address_city: 'Melbourne', address_postcode: '1223', address_state: 'Vic', address_country: 'AU' }
|
|
83
|
+
card_token = Pin::Card.create(options)['token']
|
|
84
|
+
customer_token = 'cus_6XnfOD5bvQ1qkaf3LqmhfQ'
|
|
85
|
+
Pin::Customer.create_card(customer_token, card_token)
|
|
86
|
+
expect(Pin::Customer.delete_card(customer_token, card_token).code).to eq 204
|
|
61
87
|
end
|
|
62
88
|
|
|
63
89
|
end
|
data/spec/errors_spec.rb
CHANGED
|
@@ -11,7 +11,7 @@ describe 'Errors', :vcr, class: Pin::PinError do
|
|
|
11
11
|
|
|
12
12
|
it 'should raise a 422 error when trying to update missing a param' do
|
|
13
13
|
options = { email: 'dNitza@gmail.com', card: { address_line1: '12345 Fake Street', expiry_month: '05', expiry_year: '2016', cvc: '123', address_city: 'Melbourne', address_postcode: '1234', address_state: 'VIC', address_country: 'Australia' } }
|
|
14
|
-
expect { Pin::Customer.update('
|
|
14
|
+
expect { Pin::Customer.update('cus_6XnfOD5bvQ1qkaf3LqmhfQ', options) }.to raise_error(Pin::InvalidResource, "card_number_invalid: Card number can't be blank card_name_invalid: Card name can't be blank ")
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
it 'should raise a 422 error when trying to make a payment with an expired card' do
|
|
@@ -67,15 +67,22 @@ describe 'Errors', :vcr, class: Pin::PinError do
|
|
|
67
67
|
end
|
|
68
68
|
|
|
69
69
|
it 'should raise a 422 error if no 2nd argument is given' do
|
|
70
|
-
options = { email: 'dNitza@gmail.com', description: 'A new charge from testing Pin gem', amount: '400', currency: 'AUD', ip_address: '127.0.0.1', customer_token: '
|
|
70
|
+
options = { email: 'dNitza@gmail.com', description: 'A new charge from testing Pin gem', amount: '400', currency: 'AUD', ip_address: '127.0.0.1', customer_token: 'cus_6XnfOD5bvQ1qkaf3LqmhfQ' }
|
|
71
71
|
@charge = Pin::Charges.create(options)
|
|
72
72
|
expect { Pin::Refund.create(@charge['token']) }.to raise_error(Pin::InvalidResource, "amount_invalid: Amount can't be blank amount_invalid: Amount is not a number ")
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
xit 'should raise a 422 error if a value of < 100 is given' do
|
|
76
|
-
options = { email: 'dNitza@gmail.com', description: 'A new charge from testing Pin gem', amount: '10', currency: 'AUD', ip_address: '127.0.0.1', customer_token: '
|
|
76
|
+
options = { email: 'dNitza@gmail.com', description: 'A new charge from testing Pin gem', amount: '10', currency: 'AUD', ip_address: '127.0.0.1', customer_token: 'cus_6XnfOD5bvQ1qkaf3LqmhfQ' }
|
|
77
77
|
@charge = Pin::Charges.create(options)
|
|
78
|
-
expect { Pin::Refund.create(@charge['token'], 90) }.to raise_error(Pin::InvalidResource, 'amount_invalid: Amount must be more than 100 ($1.00 AUD)
|
|
78
|
+
expect { Pin::Refund.create(@charge['token'], 90) }.to raise_error(Pin::InvalidResource, 'amount_invalid: Amount must be more than 100 ($1.00 AUD)')
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it 'should raise a 400 error when attempting to delete customer\'s primary card' do
|
|
82
|
+
customer_token = 'cus_6XnfOD5bvQ1qkaf3LqmhfQ'
|
|
83
|
+
cards = Pin::Customer.cards(customer_token)
|
|
84
|
+
primary_card_token = cards.select{|card| card['primary'] }.first['token']
|
|
85
|
+
expect { Pin::Customer.delete_card(customer_token, primary_card_token) }.to raise_error(Pin::InvalidResource, 'You cannot delete a customer\'s primary card token')
|
|
79
86
|
end
|
|
80
87
|
|
|
81
88
|
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Pin::Recipient, :vcr do
|
|
4
|
+
before(:each) do
|
|
5
|
+
Pin::Base.new(ENV['PIN_SECRET'], :test)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it 'should create a new recipient' do
|
|
9
|
+
options = { email: 'hello@example.com', name: 'Roland Robot', bank_account: { name: 'Roland Robot', bsb: '123456', number: 987654321 } }
|
|
10
|
+
expect(Pin::Recipient.create(options)['token']).to match(/^[a-z]{2}[_]/)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it 'lists out recipients' do
|
|
14
|
+
expect(Pin::Recipient.all).to_not eq []
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it 'gets a recipient given a token' do
|
|
18
|
+
options = { email: 'hello@example.com', name: 'Roland Robot', bank_account: { name: 'Roland Robot', bsb: '123456', number: 987654321 } }
|
|
19
|
+
recipient = Pin::Recipient.create(options)
|
|
20
|
+
expect(Pin::Recipient.find(recipient['token'])['token']).to eq recipient['token']
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it 'updates the given details of a recipient and returns its details' do
|
|
24
|
+
options = { email: 'hello@example.com', name: 'Roland Robot', bank_account: { name: 'Roland Robot', bsb: '123456', number: 987654321 } }
|
|
25
|
+
recipient = Pin::Recipient.create(options)
|
|
26
|
+
updated_options = { email: 'new_email@example.com' }
|
|
27
|
+
expect(Pin::Recipient.update(recipient['token'], updated_options)['email']).to eq 'new_email@example.com'
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
xit 'returns a list of recipients transfers' do
|
|
31
|
+
# disbaled until we have transfers
|
|
32
|
+
options = { email: 'hello@example.com', name: 'Roland Robot', bank_account: { name: 'Roland Robot', bsb: '123456', number: 987654321 } }
|
|
33
|
+
recipient = Pin::Recipient.create(options)
|
|
34
|
+
expect(Pin::Recipient.transfers(recipient['token'])).to_not eq []
|
|
35
|
+
end
|
|
36
|
+
end
|
data/spec/refund_spec.rb
CHANGED
|
@@ -6,21 +6,21 @@ describe 'Refund', :vcr, class: Pin::Refund do
|
|
|
6
6
|
end
|
|
7
7
|
|
|
8
8
|
it 'should list all refunds made to a charge given a token' do
|
|
9
|
-
Pin::Refund.find('
|
|
9
|
+
expect(Pin::Refund.find('ch_5q0DiDnHZIggDfVDqcP-jQ')[0]['token']).to match(/^[a-z]{2}[_]/)
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
it 'should return nothing if looking for a charge without a refund' do
|
|
13
|
-
Pin::Refund.find('
|
|
13
|
+
expect(Pin::Refund.find('ch_Dsd62Ey5Hmd3B1dDHNKYvA')).to eq []
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
it 'should return a page of refunds given a page and token' do
|
|
17
|
-
Pin::Refund.find('
|
|
17
|
+
expect(Pin::Refund.find('ch_5q0DiDnHZIggDfVDqcP-jQ', 1, true)[:response]).to_not eq []
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
it 'should create a refund for a given amount and charge' do
|
|
21
|
-
options = { email: 'dNitza@gmail.com', description: 'A new charge from testing Pin gem', amount: '400', currency: 'AUD', ip_address: '127.0.0.1', customer_token: '
|
|
21
|
+
options = { email: 'dNitza@gmail.com', description: 'A new charge from testing Pin gem', amount: '400', currency: 'AUD', ip_address: '127.0.0.1', customer_token: 'cus_6XnfOD5bvQ1qkaf3LqmhfQ'}
|
|
22
22
|
@charge = Pin::Charges.create(options)
|
|
23
|
-
Pin::Refund.create(@charge['token'], '400')['amount'].
|
|
23
|
+
expect(Pin::Refund.create(@charge['token'], '400')['amount']).to eq 400
|
|
24
24
|
end
|
|
25
25
|
|
|
26
26
|
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -4,7 +4,7 @@ SimpleCov.start
|
|
|
4
4
|
require 'rubygems'
|
|
5
5
|
require 'bundler/setup'
|
|
6
6
|
require 'webmock/rspec'
|
|
7
|
-
require 'capybara/rspec'
|
|
7
|
+
# require 'capybara/rspec'
|
|
8
8
|
require 'vcr'
|
|
9
9
|
|
|
10
10
|
require 'net/https'
|
|
@@ -18,7 +18,6 @@ require 'pin_up'
|
|
|
18
18
|
|
|
19
19
|
RSpec.configure do |config|
|
|
20
20
|
config.include WebMock::API
|
|
21
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
|
22
21
|
config.around(:each, :vcr) do |example|
|
|
23
22
|
name = example
|
|
24
23
|
.metadata[:full_description]
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
describe Pin::Transfer, :vcr do
|
|
4
|
+
before(:each) do
|
|
5
|
+
Pin::Base.new(ENV['PIN_SECRET'], :test)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
options = { email: 'hello@example.com', name: 'Roland Robot', bank_account: { name: 'Roland Robot', bsb: '123456', number: 987654321 } }
|
|
9
|
+
let(:recipient){ Pin::Recipient.create(options) }
|
|
10
|
+
|
|
11
|
+
it 'creates a transfer for a recipient, given a transfer hash' do
|
|
12
|
+
transfer = { amount: 400, currency: 'AUD', description: 'Pay day', recipient: recipient['token'] }
|
|
13
|
+
expect(Pin::Transfer.create(transfer)['token']).to match(/^[a-z]{4}[_]/)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it 'returns a paginated list of all transfers' do
|
|
17
|
+
expect(Pin::Transfer.all).to_not eq []
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it 'returns the details of a transfer' do
|
|
21
|
+
options = { amount: 400, currency: 'AUD', description: 'Pay day', recipient: recipient['token'] }
|
|
22
|
+
transfer_token = Pin::Transfer.create(options)['token']
|
|
23
|
+
expect(Pin::Transfer.find(transfer_token)['token']).to eq transfer_token
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
xit 'returns the line items associated with transfer' do
|
|
27
|
+
# disabled until an issue with recipient creation is worked out
|
|
28
|
+
options = { amount: 400, currency: 'AUD', description: 'Pay day', recipient: recipient['token'] }
|
|
29
|
+
transfer_token = Pin::Transfer.create(options)['token']
|
|
30
|
+
expect(Pin::Transfer.line_items(transfer_token).first).to include('type', 'object', 'token', 'amount')
|
|
31
|
+
end
|
|
32
|
+
end
|