openpay 0.9.8

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 (51) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +17 -0
  3. data/.idea/.name +1 -0
  4. data/.idea/.rakeTasks +7 -0
  5. data/.idea/OpenPay.iml +614 -0
  6. data/.idea/dictionaries/ronnie.xml +7 -0
  7. data/.idea/encodings.xml +5 -0
  8. data/.idea/misc.xml +5 -0
  9. data/.idea/modules.xml +9 -0
  10. data/.idea/runConfigurations/Run_spec__bankaccounts_spec___OpenPay.xml +37 -0
  11. data/.idea/runConfigurations/Run_spec__customers_spec___OpenPay.xml +37 -0
  12. data/.idea/runConfigurations/all_specs.xml +41 -0
  13. data/.idea/scopes/scope_settings.xml +5 -0
  14. data/.idea/vcs.xml +7 -0
  15. data/Gemfile +11 -0
  16. data/LICENSE.txt +13 -0
  17. data/OpenPay.gemspec +24 -0
  18. data/README.md +370 -0
  19. data/Rakefile +1 -0
  20. data/lib/OpenPay/Cards.rb +76 -0
  21. data/lib/OpenPay/Charges.rb +79 -0
  22. data/lib/OpenPay/Customers.rb +195 -0
  23. data/lib/OpenPay/Fees.rb +5 -0
  24. data/lib/OpenPay/Payouts.rb +59 -0
  25. data/lib/OpenPay/Plans.rb +28 -0
  26. data/lib/OpenPay/Subscriptions.rb +58 -0
  27. data/lib/OpenPay/Transfers.rb +43 -0
  28. data/lib/OpenPay/bankaccounts.rb +66 -0
  29. data/lib/OpenPay/errors/open_pay_exception.rb +51 -0
  30. data/lib/OpenPay/errors/open_pay_exception_factory.rb +58 -0
  31. data/lib/OpenPay/errors/openpay_connection_exception.rb +3 -0
  32. data/lib/OpenPay/errors/openpay_transaction_exception.rb +5 -0
  33. data/lib/OpenPay/open_pay_resource.rb +242 -0
  34. data/lib/OpenPay/open_pay_resource_factory.rb +10 -0
  35. data/lib/OpenPay/openpay_api.rb +63 -0
  36. data/lib/OpenPay/version.rb +3 -0
  37. data/lib/openpay.rb +34 -0
  38. data/test/Factories.rb +258 -0
  39. data/test/spec/bankaccounts_spec.rb +187 -0
  40. data/test/spec/cards_spec.rb +411 -0
  41. data/test/spec/charges_spec.rb +377 -0
  42. data/test/spec/customers_spec.rb +230 -0
  43. data/test/spec/exceptions_spec.rb +138 -0
  44. data/test/spec/fees_spec.rb +113 -0
  45. data/test/spec/openpayresource_spec.rb +52 -0
  46. data/test/spec/payouts_spec.rb +197 -0
  47. data/test/spec/plans_spec.rb +229 -0
  48. data/test/spec/subscriptions_spec.rb +228 -0
  49. data/test/spec/transfers_spec.rb +221 -0
  50. data/test/spec_helper.rb +16 -0
  51. metadata +135 -0
@@ -0,0 +1,228 @@
1
+ require '../spec_helper'
2
+
3
+ describe Subscriptions do
4
+
5
+
6
+ before(:all) do
7
+
8
+ @merchant_id='mywvupjjs9xdnryxtplq'
9
+ @private_key='sk_92b25d3baec149e6b428d81abfe37006'
10
+
11
+ @openpay=OpenpayApi.new(@merchant_id, @private_key)
12
+ @customers=@openpay.create(:customers)
13
+ @cards=@openpay.create(:cards)
14
+ @charges=@openpay.create(:charges)
15
+
16
+ @plans=@openpay.create(:plans)
17
+
18
+ @subscriptions=@openpay.create(:subscriptions)
19
+
20
+ end
21
+
22
+
23
+
24
+ describe '.create' do
25
+
26
+ it 'creates a subscription' do
27
+
28
+ #creates a customer
29
+ customer_hash= FactoryGirl.build(:customer)
30
+ customer=@customers.create(customer_hash)
31
+
32
+ #creates a customer card
33
+ card_hash= FactoryGirl.build(:valid_card)
34
+ card=@cards.create(card_hash, customer['id'])
35
+
36
+ #creates a plan
37
+ plan_hash= FactoryGirl.build(:plan, repeat_every: 5, amount: 500)
38
+ plan=@plans.create(plan_hash)
39
+
40
+ #creates subscription
41
+ subscription_hash= FactoryGirl.build(:subscription, plan_id: plan['id'], card_id: card['id'])
42
+ subscription=@subscriptions.create(subscription_hash, customer['id'])
43
+
44
+ #performs check
45
+ saved_subscription=@subscriptions.get(subscription['id'], customer['id'])
46
+ expect(saved_subscription['plan_id']).to match plan['id']
47
+
48
+ #cleanup
49
+ @subscriptions.delete(subscription['id'], customer['id'])
50
+
51
+ end
52
+
53
+
54
+ end
55
+
56
+
57
+ describe '.get' do
58
+
59
+ it 'gets customer subscriptions' do
60
+
61
+ #creates a customer
62
+ customer_hash= FactoryGirl.build(:customer)
63
+ customer=@customers.create(customer_hash)
64
+
65
+ #creates a customer card
66
+ card_hash= FactoryGirl.build(:valid_card)
67
+ card=@cards.create(card_hash, customer['id'])
68
+
69
+ #creates a plan
70
+ plan_hash= FactoryGirl.build(:plan, repeat_every: 5, amount: 500)
71
+ plan=@plans.create(plan_hash)
72
+
73
+ #creates subscription
74
+ subscription_hash= FactoryGirl.build(:subscription, plan_id: plan['id'], card_id: card['id'])
75
+ subscription=@subscriptions.create(subscription_hash, customer['id'])
76
+
77
+ #get customer subscription
78
+ stored_s=@subscriptions.get(subscription['id'], customer['id'])
79
+
80
+ #performs check
81
+ expect(stored_s['status']).to match 'trial'
82
+
83
+ #cleanup
84
+ @subscriptions.delete(subscription['id'], customer['id'])
85
+
86
+ end
87
+
88
+ end
89
+
90
+
91
+ describe '.all' do
92
+
93
+ it 'returns all subscriptions for a given customer' do
94
+
95
+ #creates a customer
96
+ customer_hash= FactoryGirl.build(:customer)
97
+ customer=@customers.create(customer_hash)
98
+
99
+ #creates a customer card
100
+ card_hash= FactoryGirl.build(:valid_card)
101
+ card=@cards.create(card_hash, customer['id'])
102
+
103
+ #creates a plan
104
+ plan_hash= FactoryGirl.build(:plan, repeat_every: 5, amount: 500)
105
+ plan=@plans.create(plan_hash)
106
+
107
+ #creates subscription
108
+ subscription_hash= FactoryGirl.build(:subscription, plan_id: plan['id'], card_id: card['id'])
109
+ expect(@subscriptions.all(customer['id']).size).to be 0
110
+ subscription=@subscriptions.create(subscription_hash, customer['id'])
111
+
112
+ #performs check
113
+ expect(@subscriptions.all(customer['id']).size).to be 1
114
+
115
+ #cleanup
116
+ @subscriptions.delete(subscription['id'], customer['id'])
117
+
118
+ end
119
+
120
+ end
121
+
122
+
123
+
124
+ describe '.each' do
125
+
126
+ it 'iterates over all subscriptions for a given customer' do
127
+
128
+ #creates a customer
129
+ customer_hash= FactoryGirl.build(:customer)
130
+ customer=@customers.create(customer_hash)
131
+
132
+ #creates a customer card
133
+ card_hash= FactoryGirl.build(:valid_card)
134
+ card=@cards.create(card_hash, customer['id'])
135
+
136
+ #creates a plan
137
+ plan_hash= FactoryGirl.build(:plan, repeat_every: 5, amount: 500)
138
+ plan=@plans.create(plan_hash)
139
+
140
+ #creates subscription
141
+ subscription_hash= FactoryGirl.build(:subscription, plan_id: plan['id'], card_id: card['id'])
142
+ expect(@subscriptions.all(customer['id']).size).to be 0
143
+ @subscriptions.create(subscription_hash, customer['id'])
144
+
145
+ #performs check
146
+ @subscriptions.each(customer['id']) do |stored_s|
147
+ #check and clean
148
+ expect(stored_s['status']).to match 'trial'
149
+ @subscriptions.delete(stored_s['id'],customer['id'])
150
+ end
151
+ expect(@subscriptions.all(customer['id']).size).to be 0
152
+
153
+ end
154
+
155
+ end
156
+
157
+
158
+ describe '.delete' do
159
+
160
+ it 'deletes an existing subscription for a given customer' do
161
+
162
+ #creates a customer
163
+ customer_hash= FactoryGirl.build(:customer)
164
+ customer=@customers.create(customer_hash)
165
+
166
+ #creates a customer card
167
+ card_hash= FactoryGirl.build(:valid_card)
168
+ card=@cards.create(card_hash, customer['id'])
169
+
170
+ #creates a plan
171
+ plan_hash= FactoryGirl.build(:plan, repeat_every: 5, amount: 500)
172
+ plan=@plans.create(plan_hash)
173
+
174
+ #creates subscription
175
+ subscription_hash= FactoryGirl.build(:subscription, plan_id: plan['id'], card_id: card['id'])
176
+ expect(@subscriptions.all(customer['id']).size).to be 0
177
+ subscription=@subscriptions.create(subscription_hash, customer['id'])
178
+
179
+ #performs check
180
+ expect(@subscriptions.all(customer['id']).size).to be 1
181
+
182
+ #cleanup
183
+ @subscriptions.delete(subscription['id'], customer['id'])
184
+
185
+ end
186
+
187
+ end
188
+
189
+
190
+ describe '.delete_all' do
191
+
192
+ it 'deletes all existing subscription for a given customer' do
193
+
194
+ #creates a customer
195
+ customer_hash= FactoryGirl.build(:customer)
196
+ customer=@customers.create(customer_hash)
197
+
198
+ #creates a customer card
199
+ card_hash= FactoryGirl.build(:valid_card)
200
+ card=@cards.create(card_hash, customer['id'])
201
+
202
+ #creates a plan
203
+ plan_hash= FactoryGirl.build(:plan, repeat_every: 5, amount: 500)
204
+ plan=@plans.create(plan_hash)
205
+
206
+ #creates subscriptions
207
+ subscription_hash= FactoryGirl.build(:subscription, plan_id: plan['id'], card_id: card['id'])
208
+ expect(@subscriptions.all(customer['id']).size).to be 0
209
+ @subscriptions.create(subscription_hash, customer['id'])
210
+ @subscriptions.create(subscription_hash, customer['id'])
211
+
212
+ #perform check and clean up
213
+ expect(@subscriptions.all(customer['id']).size).to be 2
214
+ @subscriptions.delete_all(customer['id'])
215
+ expect(@subscriptions.all(customer['id']).size).to be 0
216
+
217
+ end
218
+
219
+ end
220
+
221
+ end
222
+
223
+
224
+
225
+
226
+
227
+
228
+
@@ -0,0 +1,221 @@
1
+ require '../spec_helper'
2
+
3
+ describe Transfers do
4
+
5
+
6
+
7
+
8
+ before(:all) do
9
+
10
+ @merchant_id='mywvupjjs9xdnryxtplq'
11
+ @private_key='sk_92b25d3baec149e6b428d81abfe37006'
12
+
13
+ @openpay=OpenpayApi.new(@merchant_id, @private_key)
14
+ @customers=@openpay.create(:customers)
15
+ @cards=@openpay.create(:cards)
16
+ @charges=@openpay.create(:charges)
17
+
18
+ @bank_accounts=@openpay.create(:bankaccounts)
19
+ @transfers=@openpay.create(:transfers)
20
+
21
+
22
+ end
23
+
24
+ describe '.create' do
25
+
26
+
27
+ it 'transfers money from customer to customer' do
28
+
29
+
30
+ #create new customer
31
+ customer_hash= FactoryGirl.build(:customer)
32
+ customer=@customers.create(customer_hash)
33
+
34
+ #create new customer card
35
+ card_hash=FactoryGirl.build(:valid_card)
36
+ card=@cards.create(card_hash, customer['id'])
37
+
38
+ #create charge
39
+ charge_hash=FactoryGirl.build(:card_charge, source_id:card['id'],order_id: card['id'])
40
+ charge=@charges.create(charge_hash,customer['id'])
41
+
42
+
43
+
44
+ #create customer 2
45
+ customer_hash= FactoryGirl.build(:customer,name: 'Alejandro')
46
+ customer2=@customers.create(customer_hash)
47
+
48
+ #create new transfer
49
+ customer_hash= FactoryGirl.build(:transfer,customer_id: customer2['id'])
50
+
51
+
52
+ transfer=@transfers.create(customer_hash,customer['id'])
53
+ t=@transfers.get(transfer['id'],customer['id'])
54
+ expect(t['amount']).to be_within(0.1).of 12.5
55
+ expect(t['method']).to match 'customer'
56
+
57
+
58
+
59
+
60
+ #clanup
61
+ @cards.delete_all(customer['id'])
62
+
63
+
64
+
65
+
66
+
67
+ end
68
+
69
+
70
+
71
+
72
+
73
+ end
74
+
75
+
76
+
77
+
78
+
79
+ describe 'get' do
80
+
81
+ it 'gets a customer transfer' do
82
+
83
+ #create new customer
84
+ customer_hash= FactoryGirl.build(:customer)
85
+ customer=@customers.create(customer_hash)
86
+
87
+ #create new customer card
88
+ card_hash=FactoryGirl.build(:valid_card)
89
+ card=@cards.create(card_hash, customer['id'])
90
+
91
+ #create charge
92
+ charge_hash=FactoryGirl.build(:card_charge, source_id:card['id'],order_id: card['id'])
93
+ charge=@charges.create(charge_hash,customer['id'])
94
+
95
+
96
+
97
+ #create customer 2
98
+ customer_hash= FactoryGirl.build(:customer,name: 'Alejandro')
99
+ customer2=@customers.create(customer_hash)
100
+
101
+ #create new transfer
102
+ customer_hash= FactoryGirl.build(:transfer,customer_id: customer2['id'])
103
+
104
+
105
+ transfer=@transfers.create(customer_hash,customer['id'])
106
+ t=@transfers.get(transfer['id'],customer['id'])
107
+ expect(t).to be_a Hash
108
+ expect(t['amount']).to be_within(0.1).of 12.5
109
+ expect(t['method']).to match 'customer'
110
+
111
+
112
+
113
+ #clanup
114
+ @cards.delete_all(customer['id'])
115
+
116
+ end
117
+
118
+
119
+
120
+ it 'fails to get a non existing transfer' do
121
+ expect { @transfers.get(11111,11111) }.to raise_exception OpenpayTransactionException
122
+ end
123
+
124
+
125
+ end
126
+
127
+
128
+ describe '.each' do
129
+
130
+
131
+ it 'iterates over a given customer transfers' do
132
+
133
+ #create new customer
134
+ customer_hash= FactoryGirl.build(:customer)
135
+ customer=@customers.create(customer_hash)
136
+
137
+ #create new customer card
138
+ card_hash=FactoryGirl.build(:valid_card)
139
+ card=@cards.create(card_hash, customer['id'])
140
+
141
+ #create charge
142
+ charge_hash=FactoryGirl.build(:card_charge, source_id:card['id'],order_id: card['id'])
143
+ charge=@charges.create(charge_hash,customer['id'])
144
+
145
+
146
+
147
+ #create customer 2
148
+ customer_hash= FactoryGirl.build(:customer,name: 'Alejandro')
149
+ customer2=@customers.create(customer_hash)
150
+
151
+ #create new transfer
152
+ customer_hash= FactoryGirl.build(:transfer,customer_id: customer2['id'])
153
+ transfer=@transfers.create(customer_hash,customer['id'])
154
+
155
+
156
+ #iterates over transfers
157
+ @transfers.each(customer2['id']) do |tran|
158
+
159
+ expect(tran['amount']).to be_within(0.1).of 12.5
160
+ expect(tran['method']).to match 'customer'
161
+
162
+ end
163
+
164
+ #clanup
165
+ @cards.delete_all(customer['id'])
166
+
167
+
168
+
169
+
170
+
171
+ end
172
+
173
+
174
+
175
+ end
176
+
177
+
178
+
179
+
180
+
181
+ describe '.all' do
182
+
183
+
184
+ it 'returns all customer transfers' do
185
+
186
+ #create new customer
187
+ customer_hash= FactoryGirl.build(:customer)
188
+ customer=@customers.create(customer_hash)
189
+
190
+ #create new customer card
191
+ card_hash=FactoryGirl.build(:valid_card)
192
+ card=@cards.create(card_hash, customer['id'])
193
+
194
+ #create charge
195
+ charge_hash=FactoryGirl.build(:card_charge, source_id:card['id'],order_id: card['id'])
196
+ charge=@charges.create(charge_hash,customer['id'])
197
+
198
+
199
+ #create customer 2
200
+ customer_hash= FactoryGirl.build(:customer,name: 'Alejandro')
201
+ customer2=@customers.create(customer_hash)
202
+
203
+ #create new transfer
204
+ customer_hash= FactoryGirl.build(:transfer,customer_id: customer2['id'])
205
+ transfer=@transfers.create(customer_hash,customer['id'])
206
+
207
+
208
+ #returns all transfers
209
+ @transfers.all(customer2['id'])
210
+ expect(@transfers.all(customer2['id']).size ).to be 1
211
+
212
+ #cleanup
213
+ @cards.delete_all(customer['id'])
214
+
215
+ end
216
+
217
+
218
+ end
219
+
220
+
221
+ end
@@ -0,0 +1,16 @@
1
+ require 'openpay'
2
+
3
+
4
+ require 'factory_girl'
5
+ require '../Factories'
6
+ require 'rspec'
7
+ require 'rspec-expectations'
8
+ require 'json_spec'
9
+
10
+
11
+ RSpec.configure do |config|
12
+ config.expect_with :rspec do |c|
13
+ c.syntax = :expect
14
+ config.include JsonSpec::Helpers
15
+ end
16
+ end