pagarme 2.0.2 → 2.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +3 -2
  4. data/README.md +285 -4
  5. data/Rakefile +16 -19
  6. data/lib/pagarme.rb +17 -32
  7. data/lib/pagarme/core_ext.rb +9 -0
  8. data/lib/pagarme/errors.rb +39 -25
  9. data/lib/pagarme/model.rb +40 -45
  10. data/lib/pagarme/nested_model.rb +56 -0
  11. data/lib/pagarme/object.rb +133 -92
  12. data/lib/pagarme/request.rb +96 -46
  13. data/lib/pagarme/resources/address.rb +4 -0
  14. data/lib/pagarme/resources/antifraud_analysis.rb +4 -0
  15. data/lib/pagarme/resources/balance.rb +24 -0
  16. data/lib/pagarme/resources/balance_operation.rb +37 -0
  17. data/lib/pagarme/resources/bank_account.rb +4 -0
  18. data/lib/pagarme/resources/bulk_anticipation.rb +65 -0
  19. data/lib/pagarme/resources/card.rb +4 -0
  20. data/lib/pagarme/resources/company.rb +28 -0
  21. data/lib/pagarme/{customer.rb → resources/customer.rb} +0 -0
  22. data/lib/pagarme/resources/payable.rb +11 -0
  23. data/lib/pagarme/resources/phone.rb +4 -0
  24. data/lib/pagarme/{plan.rb → resources/plan.rb} +0 -2
  25. data/lib/pagarme/resources/postal_code.rb +15 -0
  26. data/lib/pagarme/resources/postback.rb +15 -0
  27. data/lib/pagarme/resources/recipient.rb +32 -0
  28. data/lib/pagarme/resources/split_rule.rb +4 -0
  29. data/lib/pagarme/resources/subscription.rb +43 -0
  30. data/lib/pagarme/resources/transaction.rb +41 -0
  31. data/lib/pagarme/{transfer.rb → resources/transfer.rb} +0 -3
  32. data/lib/pagarme/{phone.rb → resources/user.rb} +1 -1
  33. data/lib/pagarme/transaction_common.rb +39 -42
  34. data/lib/pagarme/version.rb +3 -0
  35. data/pagarme.gemspec +16 -13
  36. data/test/assertions.rb +195 -0
  37. data/test/fixtures.rb +222 -0
  38. data/test/pagarme/error_test.rb +13 -0
  39. data/test/pagarme/object_test.rb +19 -0
  40. data/test/pagarme/pagarme_test.rb +10 -0
  41. data/test/pagarme/resources/balance_test.rb +46 -0
  42. data/test/pagarme/resources/bank_account_test.rb +35 -0
  43. data/test/pagarme/resources/bulk_anticipation_test.rb +72 -0
  44. data/test/pagarme/resources/card_test.rb +22 -0
  45. data/test/pagarme/resources/payable_test.rb +30 -0
  46. data/test/pagarme/resources/plan_test.rb +57 -0
  47. data/test/pagarme/resources/postback_test.rb +18 -0
  48. data/test/pagarme/resources/recipient_test.rb +41 -0
  49. data/test/pagarme/resources/subscription_test.rb +100 -0
  50. data/test/pagarme/resources/transaction_test.rb +221 -0
  51. data/test/pagarme/resources/transfer_test.rb +23 -0
  52. data/test/pagarme/resources/zipcode_test.rb +15 -0
  53. data/test/test_helper.rb +52 -175
  54. metadata +102 -30
  55. data/lib/pagarme/address.rb +0 -4
  56. data/lib/pagarme/bank_account.rb +0 -9
  57. data/lib/pagarme/card.rb +0 -7
  58. data/lib/pagarme/subscription.rb +0 -43
  59. data/lib/pagarme/transaction.rb +0 -33
  60. data/lib/pagarme/util.rb +0 -78
  61. data/pagarme.rb +0 -12
  62. data/test/pagarme/bank_account.rb +0 -46
  63. data/test/pagarme/card.rb +0 -26
  64. data/test/pagarme/object.rb +0 -29
  65. data/test/pagarme/pagarme.rb +0 -10
  66. data/test/pagarme/plan.rb +0 -70
  67. data/test/pagarme/subscription.rb +0 -123
  68. data/test/pagarme/transaction.rb +0 -215
  69. data/test/pagarme/transfer.rb +0 -42
@@ -1,10 +0,0 @@
1
- # encoding: utf-8
2
- require_relative '../test_helper'
3
-
4
- module PagarMe
5
- class PagarMeTest < Test::Unit::TestCase
6
- should 'validate fingerprint correctly' do
7
- assert PagarMe::validate_fingerprint(123, Digest::SHA1.hexdigest( "123" + "#" + PagarMe::api_key)) == true
8
- end
9
- end
10
- end
@@ -1,70 +0,0 @@
1
- # encoding: utf-8
2
- require_relative '../test_helper'
3
-
4
- module PagarMe
5
- class PlanTest < Test::Unit::TestCase
6
- should 'be able to create a plan' do
7
- plan = test_plan
8
- plan.create
9
- test_plan_response(plan)
10
- end
11
-
12
- should 'be able to update plan' do
13
- plan = test_plan
14
- plan.create
15
- plan.name = "plano silver"
16
- plan.save
17
- assert plan.name == 'plano silver'
18
- end
19
-
20
- should 'be able to search by anything' do
21
- plan = test_plan
22
- plan.create
23
-
24
- plans = PagarMe::Plan.find_by({:trial_days => 5})
25
-
26
- assert plans.size
27
- plans.each do |p|
28
- assert p.trial_days == 5
29
- end
30
- end
31
-
32
- should 'validate plan' do
33
- exception = assert_raises PagarMeError do
34
- plan = Plan.new({
35
- :amount => -1
36
- })
37
- plan.create
38
- end
39
- assert exception.errors.first.parameter_name == 'amount'
40
- exception = assert_raises PagarMeError do
41
- plan = Plan.new({
42
- :amount => 1000,
43
- :days => -1,
44
- })
45
- plan.create
46
- end
47
- assert exception.errors.first.parameter_name == 'days'
48
-
49
- exception = assert_raises PagarMeError do
50
- plan = Plan.new({
51
- :amount => 1000,
52
- :days => 30,
53
- })
54
- plan.create
55
- end
56
- assert exception.errors.first.parameter_name == 'name'
57
- exception = assert_raises PagarMeError do
58
- plan = Plan.new({
59
- :amount => 1000,
60
- :days => 30,
61
- :name => "Plano Silver"
62
- })
63
- plan.create
64
- plan.days = 'Plano gold'
65
- plan.save
66
- end
67
- assert exception.errors.first.parameter_name == 'days'
68
- end
69
- end
70
- end
@@ -1,123 +0,0 @@
1
- # encoding: utf-8
2
- require_relative '../test_helper'
3
-
4
- module PagarMe
5
- class SubscriptionTest < Test::Unit::TestCase
6
- should 'be able to create subscription with plan' do
7
- plan = test_plan
8
- plan.create
9
- subscription = test_subscription
10
- subscription.plan = plan
11
- subscription.create
12
- test_plan_response(subscription.plan)
13
- test_transaction_with_customer(subscription)
14
- end
15
-
16
- should 'be able to create subscription with plan and unsaved card' do
17
- plan = test_plan
18
- plan.create
19
-
20
- card = test_card
21
-
22
- subscription = PagarMe::Subscription.new({
23
- :postback_url => 'http://test.com/postback',
24
- :payment_method => 'credit_card',
25
- :card => card,
26
- :plan => plan,
27
- :customer => {
28
- :email => 'customer@pagar.me'
29
- }
30
- })
31
- subscription.create
32
-
33
- assert subscription.id
34
- assert subscription.plan.id == plan.id
35
- end
36
-
37
- should 'be able to create subscription with plan and saved card' do
38
- plan = test_plan
39
- plan.create
40
-
41
- card = test_card
42
- card.create
43
-
44
- subscription = PagarMe::Subscription.new({
45
- :postback_url => 'http://test.com/postback',
46
- :payment_method => 'credit_card',
47
- :card => card,
48
- :plan => plan,
49
- :customer => {
50
- :email => 'customer@pagar.me'
51
- }
52
- })
53
- subscription.create
54
-
55
- assert subscription.id
56
- assert subscription.plan.id == plan.id
57
- end
58
-
59
- should 'be able to create subscription without plan' do
60
- subscription = test_subscription({:amount => 2000})
61
- subscription.create
62
- assert subscription.current_transaction.amount == 2000
63
- subscription.charge(2000)
64
- assert subscription.current_transaction.kind_of?(PagarMe::Transaction)
65
- test_subscription_transaction_response(subscription.current_transaction)
66
- end
67
-
68
- should 'be able to create subscription without plan and charge with installments' do
69
- subscription = test_subscription({:amount => 2000, :installments => 6})
70
- subscription.create
71
- # assert subscription.current_transaction.amount == 2000
72
- # assert subscription.current_transaction.installments == 6
73
- subscription.charge(1500, 3)
74
- assert subscription.current_transaction.kind_of?(PagarMe::Transaction)
75
- test_subscription_transaction_response(subscription.current_transaction, 1500, 3)
76
- end
77
-
78
- should 'be able to update subscription' do
79
- subscription = test_subscription
80
- subscription.create
81
- subscription.payment_method = 'boleto'
82
- subscription.save
83
-
84
- subscription2 = PagarMe::Subscription.find_by_id(subscription.id)
85
- assert subscription2.payment_method == 'boleto'
86
- end
87
-
88
- should 'be able to change plans' do
89
- subscription = test_subscription
90
- plan = test_plan
91
- plan.create
92
-
93
- plan2 = PagarMe::Plan.new({
94
- :name => "Plano Silver",
95
- :days => 30,
96
- :amount => 3000
97
- });
98
- plan2.create
99
-
100
- subscription.plan = plan
101
- subscription.create
102
-
103
- assert subscription.plan.id == plan.id
104
- subscription.plan = plan2
105
- subscription.save
106
-
107
- assert subscription.plan.id == plan2.id
108
- end
109
-
110
- should 'be able to cancel a subscription' do
111
- subscription = test_subscription
112
- plan = test_plan
113
- plan.create
114
-
115
- subscription.plan = plan
116
- subscription.create
117
-
118
- subscription.cancel
119
-
120
- assert subscription.status == 'canceled'
121
- end
122
- end
123
- end
@@ -1,215 +0,0 @@
1
- # encoding: utf-8
2
- require_relative '../test_helper'
3
-
4
- module PagarMe
5
- class TransactionTest < Test::Unit::TestCase
6
- should 'be able to charge' do
7
- transaction = test_transaction
8
- assert transaction.status == 'local'
9
- transaction.charge
10
- assert transaction.status == 'paid'
11
- test_transaction_response(transaction)
12
- end
13
-
14
- should 'be able to charge with a saved card' do
15
- card = test_card
16
- card.create
17
-
18
- transaction = PagarMe::Transaction.new({
19
- :card => card,
20
- :amount => 1000,
21
- :payment_method => 'credit_card'
22
- })
23
-
24
- transaction.charge
25
- assert transaction.status == 'paid'
26
- end
27
-
28
- should 'be able to charge with an unsaved card' do
29
- card = test_card
30
- transaction = PagarMe::Transaction.new({
31
- :card => card,
32
- :amount => 1000,
33
- :payment_method => 'credit_card'
34
- })
35
-
36
- transaction.charge
37
- assert transaction.status == 'paid'
38
- end
39
-
40
- should 'return a card object' do
41
- transaction = test_transaction
42
- transaction.create
43
- assert transaction.card.id
44
- assert transaction.card.first_digits == '490172'
45
- assert transaction.card.last_digits == '4448'
46
- end
47
-
48
- should 'be able to refund' do
49
- transaction = test_transaction
50
- transaction.charge
51
- test_transaction_response(transaction)
52
- transaction.refund
53
- assert transaction.status == 'refunded'
54
- end
55
-
56
- should 'be able to create transaciton with boleto' do
57
- transaction = PagarMe::Transaction.new({
58
- :payment_method => "boleto",
59
- :amount => "1000"
60
- })
61
- transaction.charge
62
-
63
- assert transaction.payment_method == 'boleto'
64
- assert transaction.status == 'waiting_payment'
65
- assert transaction.amount.to_s == '1000'
66
- end
67
-
68
- should 'be able to send metadata' do
69
- transaction = test_transaction
70
- transaction.metadata = {event: {:name => "Evento foda", :id => 335}}
71
- transaction.charge
72
- assert transaction.metadata
73
-
74
- transaction2 = PagarMe::Transaction.find_by_id(transaction.id)
75
- assert transaction2.metadata.event.id.to_i == 335
76
- assert transaction2.metadata.event.name == "Evento foda"
77
- end
78
-
79
- should 'be able to find a transaction' do
80
- transaction = test_transaction
81
- transaction.charge
82
- test_transaction_response(transaction)
83
-
84
- transaction_2 = PagarMe::Transaction.find_by_id(transaction.id)
85
- assert transaction_2.id == transaction.id
86
- end
87
-
88
- should 'accept parameters on the refund' do
89
- transaction = PagarMe::Transaction.new({
90
- :payment_method => 'boleto',
91
- :amount => '1000'
92
- })
93
-
94
- transaction2 = PagarMe::Transaction.new({
95
- :payment_method => 'boleto',
96
- :amount => '1000'
97
- })
98
-
99
- transaction.charge
100
- transaction2.charge
101
-
102
- transaction.status = 'paid'
103
- transaction.save
104
-
105
- transaction2.status = 'paid'
106
- transaction2.save
107
-
108
- transaction.refund({bank_account: {:bank_code => '399', :agencia => '1234', :conta => '1234567', :conta_dv => '1', :legal_name => 'Jose da silva', :document_number => '68782915423'}})
109
- assert transaction.status == 'pending_refund'
110
- end
111
-
112
- should 'be able to create transaction with customer' do
113
- transaction = test_transaction_with_customer
114
- transaction.charge
115
- test_transaction_response(transaction)
116
- assert transaction.address.class == Address
117
- assert transaction.address.street== 'Av. Brigadeiro Faria Lima'
118
- assert transaction.customer.class == Customer
119
- test_customer_response(transaction.customer)
120
- assert transaction.customer.email = "henrique+test@pagar.me"
121
- end
122
-
123
- should 'be able to refund transaction with customer' do
124
- transaction = test_transaction_with_customer
125
- transaction.charge
126
- test_transaction_response(transaction)
127
- assert transaction.customer.class == Customer
128
- test_customer_response(transaction.customer)
129
- transaction.refund
130
-
131
- assert transaction.status == 'refunded'
132
- end
133
-
134
- should 'be able to capture a transaction and pass an amount' do
135
- transaction = test_transaction({:capture => false})
136
- transaction.charge
137
- assert transaction.status == 'authorized'
138
- transaction.capture({:amount => 1000})
139
- assert transaction.status == 'paid'
140
- assert transaction.amount == 1000
141
- end
142
-
143
- should 'validate invalid transaction' do
144
-
145
- #Test invalid card_number
146
- exception = assert_raises PagarMeError do
147
- transaction = PagarMe::Transaction.new({
148
- :amount => "1000",
149
- :card_number => '123456',
150
- :card_holder_name => "Jose da Silva",
151
- })
152
- transaction.charge
153
- end
154
- assert exception.errors.first.parameter_name == 'card_number'
155
-
156
- #Test missing card_holder_name
157
- exception = assert_raises PagarMeError do
158
- transaction = PagarMe::Transaction.new({
159
- :card_number => '4111111111111111',
160
- :amount => "1000",
161
- })
162
- transaction.charge
163
- end
164
- assert exception.errors.first.parameter_name == 'card_holder_name'
165
-
166
- #Test invalid expiracy month
167
- exception = assert_raises PagarMeError do
168
- transaction = PagarMe::Transaction.new({
169
- :card_number => '4111111111111111',
170
- :card_holder_name => "Jose da Silva",
171
- :amount => "1000",
172
- :card_expiracy_month => 15
173
- })
174
- transaction.charge
175
- end
176
- assert exception.errors.first.parameter_name == 'card_expiration_date'
177
-
178
- #Test invalid expiracy year
179
- exception = assert_raises PagarMeError do
180
- transaction = PagarMe::Transaction.new({
181
- :card_number => '4111111111111111',
182
- :card_holder_name => "Jose da Silva",
183
- :amount => "1000",
184
- :card_expiration_month => 12,
185
- :card_expiration_year => -1,
186
- })
187
- transaction.charge
188
- end
189
- assert exception.errors.first.parameter_name == 'card_expiration_date'
190
-
191
- #Test invalid expiracy year
192
- exception = assert_raises PagarMeError do
193
- transaction = PagarMe::Transaction.new({
194
- :card_number => '4111111111111111',
195
- :card_holder_name => "Jose da Silva",
196
- :amount => "1000",
197
- :card_expiration_month => 12,
198
- :card_expiration_year => 16,
199
- })
200
- transaction.charge
201
- end
202
- assert exception.errors.first.parameter_name == 'card_cvv'
203
- end
204
-
205
- should 'calculate installments' do
206
- installments_result = PagarMe::Transaction.calculate_installments({
207
- amount: 10000,
208
- interest_rate: 0
209
- })
210
-
211
- assert installments_result['installments'].size == 12
212
- assert installments_result['installments']['2']['installment_amount'] == 5000
213
- end
214
- end
215
- end
@@ -1,42 +0,0 @@
1
- # encoding: utf-8
2
- require_relative '../test_helper'
3
-
4
- module PagarMe
5
- class TransferTest < Test::Unit::TestCase
6
- def setup
7
- super
8
-
9
- t = PagarMe::Transaction.new({
10
- :payment_method => 'boleto',
11
- :amount => 10000
12
- })
13
-
14
- t.charge
15
- t.status = 'paid'
16
- t.save
17
- end
18
-
19
- should 'be able to create a transfer' do
20
- transfer = test_transfer
21
- transfer.create
22
-
23
- assert transfer.id != nil
24
- assert transfer.fee != nil
25
- assert transfer.object == "transfer"
26
- assert %w(doc credito_em_conta ted).include?(transfer.type)
27
- end
28
-
29
- should 'be able to find with id' do
30
- transfer_r = test_transfer
31
- transfer_r.create
32
-
33
- transfer = PagarMe::Transfer.find_by_id transfer_r.id
34
-
35
- assert transfer.id != nil
36
- assert transfer.fee != nil
37
- assert transfer.object == "transfer"
38
- assert %w(doc credito_em_conta ted).include?(transfer.type)
39
- end
40
- end
41
- end
42
-