pagarme 2.0.2 → 2.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.travis.yml +3 -2
- data/README.md +285 -4
- data/Rakefile +16 -19
- data/lib/pagarme.rb +17 -32
- data/lib/pagarme/core_ext.rb +9 -0
- data/lib/pagarme/errors.rb +39 -25
- data/lib/pagarme/model.rb +40 -45
- data/lib/pagarme/nested_model.rb +56 -0
- data/lib/pagarme/object.rb +133 -92
- data/lib/pagarme/request.rb +96 -46
- data/lib/pagarme/resources/address.rb +4 -0
- data/lib/pagarme/resources/antifraud_analysis.rb +4 -0
- data/lib/pagarme/resources/balance.rb +24 -0
- data/lib/pagarme/resources/balance_operation.rb +37 -0
- data/lib/pagarme/resources/bank_account.rb +4 -0
- data/lib/pagarme/resources/bulk_anticipation.rb +65 -0
- data/lib/pagarme/resources/card.rb +4 -0
- data/lib/pagarme/resources/company.rb +28 -0
- data/lib/pagarme/{customer.rb → resources/customer.rb} +0 -0
- data/lib/pagarme/resources/payable.rb +11 -0
- data/lib/pagarme/resources/phone.rb +4 -0
- data/lib/pagarme/{plan.rb → resources/plan.rb} +0 -2
- data/lib/pagarme/resources/postal_code.rb +15 -0
- data/lib/pagarme/resources/postback.rb +15 -0
- data/lib/pagarme/resources/recipient.rb +32 -0
- data/lib/pagarme/resources/split_rule.rb +4 -0
- data/lib/pagarme/resources/subscription.rb +43 -0
- data/lib/pagarme/resources/transaction.rb +41 -0
- data/lib/pagarme/{transfer.rb → resources/transfer.rb} +0 -3
- data/lib/pagarme/{phone.rb → resources/user.rb} +1 -1
- data/lib/pagarme/transaction_common.rb +39 -42
- data/lib/pagarme/version.rb +3 -0
- data/pagarme.gemspec +16 -13
- data/test/assertions.rb +195 -0
- data/test/fixtures.rb +222 -0
- data/test/pagarme/error_test.rb +13 -0
- data/test/pagarme/object_test.rb +19 -0
- data/test/pagarme/pagarme_test.rb +10 -0
- data/test/pagarme/resources/balance_test.rb +46 -0
- data/test/pagarme/resources/bank_account_test.rb +35 -0
- data/test/pagarme/resources/bulk_anticipation_test.rb +72 -0
- data/test/pagarme/resources/card_test.rb +22 -0
- data/test/pagarme/resources/payable_test.rb +30 -0
- data/test/pagarme/resources/plan_test.rb +57 -0
- data/test/pagarme/resources/postback_test.rb +18 -0
- data/test/pagarme/resources/recipient_test.rb +41 -0
- data/test/pagarme/resources/subscription_test.rb +100 -0
- data/test/pagarme/resources/transaction_test.rb +221 -0
- data/test/pagarme/resources/transfer_test.rb +23 -0
- data/test/pagarme/resources/zipcode_test.rb +15 -0
- data/test/test_helper.rb +52 -175
- metadata +102 -30
- data/lib/pagarme/address.rb +0 -4
- data/lib/pagarme/bank_account.rb +0 -9
- data/lib/pagarme/card.rb +0 -7
- data/lib/pagarme/subscription.rb +0 -43
- data/lib/pagarme/transaction.rb +0 -33
- data/lib/pagarme/util.rb +0 -78
- data/pagarme.rb +0 -12
- data/test/pagarme/bank_account.rb +0 -46
- data/test/pagarme/card.rb +0 -26
- data/test/pagarme/object.rb +0 -29
- data/test/pagarme/pagarme.rb +0 -10
- data/test/pagarme/plan.rb +0 -70
- data/test/pagarme/subscription.rb +0 -123
- data/test/pagarme/transaction.rb +0 -215
- data/test/pagarme/transfer.rb +0 -42
@@ -0,0 +1,13 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
module PagarMe
|
4
|
+
class ErrorTest < Test::Unit::TestCase
|
5
|
+
should 'be able to handle single error messages' do
|
6
|
+
assert_transaction_errors card_number: nil
|
7
|
+
end
|
8
|
+
|
9
|
+
should 'be able to handle multiple error messages' do
|
10
|
+
assert_transaction_errors amount: 10, card_expiration_year: 12
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
module PagarMe
|
4
|
+
class ObjectTest < Test::Unit::TestCase
|
5
|
+
should 'be able to create object and add any attribute' do
|
6
|
+
object = PagarMe::PagarMeObject.new attr1: 2
|
7
|
+
assert_equal object.attr1, 2
|
8
|
+
|
9
|
+
object = PagarMe::PagarMeObject.new
|
10
|
+
object.attr1 = 2
|
11
|
+
assert_equal object.attr1, 2
|
12
|
+
end
|
13
|
+
|
14
|
+
should 'be able to add nested attributes' do
|
15
|
+
object = PagarMe::PagarMeObject.new nested: { attrib: 2 }
|
16
|
+
assert_equal object.nested.attrib, 2
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
module PagarMe
|
4
|
+
class PagarMeTest < Test::Unit::TestCase
|
5
|
+
should 'validate fingerprint correctly' do
|
6
|
+
finderprint = Digest::SHA1.hexdigest "123##{PagarMe.api_key}"
|
7
|
+
assert PagarMe.validate_fingerprint(123, finderprint)
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
|
3
|
+
module PagarMe
|
4
|
+
class BalanceTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
should 'change amount amount after transaction being paid' do
|
7
|
+
transaction = PagarMe::Transaction.charge transaction_with_boleto_params
|
8
|
+
previous_balance = PagarMe::Balance.balance
|
9
|
+
|
10
|
+
transaction.status = :paid
|
11
|
+
transaction.save
|
12
|
+
|
13
|
+
balance = PagarMe::Balance.balance
|
14
|
+
assert_increased_available_amount previous_balance, balance
|
15
|
+
end
|
16
|
+
|
17
|
+
should 'change recipient amount after transaction being paid' do
|
18
|
+
recipient = PagarMe::Recipient.create recipient_with_nested_bank_account_params
|
19
|
+
split_rules = [ { recipient_id: recipient.id, percentage: 100 } ]
|
20
|
+
transaction = PagarMe::Transaction.charge transaction_with_boleto_params(split_rules: split_rules)
|
21
|
+
|
22
|
+
assert_empty_balance recipient.balance
|
23
|
+
|
24
|
+
transaction.status = :paid
|
25
|
+
transaction.save
|
26
|
+
|
27
|
+
assert_available_balance recipient.balance
|
28
|
+
end
|
29
|
+
|
30
|
+
should 'change recipient amount after recipient receive money' do
|
31
|
+
recipient = PagarMe::Recipient.create recipient_with_nested_bank_account_params
|
32
|
+
split_rules = [ { recipient_id: recipient.id, percentage: 100 } ]
|
33
|
+
transaction = PagarMe::Transaction.charge transaction_with_boleto_params(split_rules: split_rules)
|
34
|
+
|
35
|
+
assert_empty_balance recipient.balance
|
36
|
+
|
37
|
+
transaction.status = :paid
|
38
|
+
transaction.save
|
39
|
+
|
40
|
+
recipient.receive recipient.balance.available.amount
|
41
|
+
|
42
|
+
assert_transfered_balance recipient.balance
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
|
3
|
+
module PagarMe
|
4
|
+
class BankAccountTest < Test::Unit::TestCase
|
5
|
+
should 'be able to create a bank_account' do
|
6
|
+
bank_account = PagarMe::BankAccount.create bank_account_params
|
7
|
+
assert_equal bank_account.bank_code, '237'
|
8
|
+
end
|
9
|
+
|
10
|
+
should 'be able to search by anything' do
|
11
|
+
bank_account = PagarMe::BankAccount.create bank_account_params
|
12
|
+
bank_accounts = PagarMe::BankAccount.find_by bank_code: '237'
|
13
|
+
|
14
|
+
assert bank_accounts.size > 0
|
15
|
+
bank_accounts.each do |b|
|
16
|
+
assert_equal b.bank_code, '237'
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
20
|
+
{
|
21
|
+
bank_code: 'foo',
|
22
|
+
agencia: 'abcd',
|
23
|
+
agencia_dv: 'Y',
|
24
|
+
conta: 'ABCD',
|
25
|
+
conta_dv: '',
|
26
|
+
legal_name: '',
|
27
|
+
document_number: 'foooo'
|
28
|
+
}.each do |key, value|
|
29
|
+
should "validate bank_account - #{key}" do
|
30
|
+
exception = assert_raises(PagarMe::ValidationError){ BankAccount.create key => value }
|
31
|
+
assert_has_error_param exception, key.to_s
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
|
3
|
+
module PagarMe
|
4
|
+
class BulkAnticipationTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
super
|
8
|
+
ensure_waiting_funds
|
9
|
+
end
|
10
|
+
|
11
|
+
should 'be able to calculate anticipations limits' do
|
12
|
+
assert_anticipation_limits PagarMe::Recipient.default.bulk_anticipations_limits(anticipations_limits_params)
|
13
|
+
end
|
14
|
+
|
15
|
+
should 'be able to request anticipation and cancel it' do
|
16
|
+
recipient = PagarMe::Recipient.default
|
17
|
+
anticipation = recipient.bulk_anticipate anticipation_params
|
18
|
+
|
19
|
+
assert_anticipation anticipation
|
20
|
+
assert_anticipation BulkAnticipation.find(recipient.id, anticipation.id)
|
21
|
+
|
22
|
+
anticipation.cancel
|
23
|
+
assert_canceled_anticipation anticipation
|
24
|
+
|
25
|
+
anticipation = recipient.bulk_anticipate anticipation_params
|
26
|
+
assert_canceled_anticipation PagarMe::BulkAnticipation.cancel(recipient.id, anticipation.id)
|
27
|
+
end
|
28
|
+
|
29
|
+
should 'have bulk anticipations on default recipient ' do
|
30
|
+
recipient = PagarMe::Recipient.default
|
31
|
+
assert recipient.bulk_anticipations.count > 0
|
32
|
+
end
|
33
|
+
|
34
|
+
should 'create a building anticipation an later confirm it' do
|
35
|
+
recipient = PagarMe::Recipient.default
|
36
|
+
anticipation = recipient.bulk_anticipate anticipation_params(build: true)
|
37
|
+
assert_equal anticipation.id, BulkAnticipation.confirm(recipient.id, anticipation.id).id
|
38
|
+
|
39
|
+
anticipation = recipient.bulk_anticipate anticipation_params(build: true)
|
40
|
+
assert_equal anticipation.id, anticipation.confirm.id
|
41
|
+
end
|
42
|
+
|
43
|
+
should 'create a building anticipation an later delete it' do
|
44
|
+
recipient = PagarMe::Recipient.default
|
45
|
+
anticipation = recipient.bulk_anticipate anticipation_params(build: true)
|
46
|
+
|
47
|
+
assert_equal anticipation.id, PagarMe::BulkAnticipation.find(recipient.id, anticipation.id).id
|
48
|
+
PagarMe::BulkAnticipation.delete(recipient.id, anticipation.id).id
|
49
|
+
assert_raises PagarMe::NotFound do
|
50
|
+
PagarMe::BulkAnticipation.find recipient.id, anticipation.id
|
51
|
+
end
|
52
|
+
|
53
|
+
anticipation = recipient.bulk_anticipate anticipation_params(build: true)
|
54
|
+
assert_equal anticipation.id, PagarMe::BulkAnticipation.find(recipient.id, anticipation.id).id
|
55
|
+
anticipation.delete
|
56
|
+
assert_raises PagarMe::NotFound do
|
57
|
+
PagarMe::BulkAnticipation.find recipient.id, anticipation.id
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
protected
|
62
|
+
def anticipation_params(params = Hash.new)
|
63
|
+
anticipations_limits_params(reasonable_amount).merge params
|
64
|
+
end
|
65
|
+
|
66
|
+
def reasonable_amount
|
67
|
+
limits = PagarMe::Recipient.default.bulk_anticipations_limits(anticipations_limits_params)
|
68
|
+
{ requested_amount: (limits.maximum.amount + 9*limits.minimum.amount)/10 + 1 }
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|
72
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
|
3
|
+
module PagarMe
|
4
|
+
class CardTest < Test::Unit::TestCase
|
5
|
+
should 'be able to create' do
|
6
|
+
card = PagarMe::Card.create card_params
|
7
|
+
|
8
|
+
assert card.id
|
9
|
+
assert_equal card.first_digits, '490172'
|
10
|
+
assert_equal card.last_digits, '4448'
|
11
|
+
end
|
12
|
+
|
13
|
+
should 'be able to find by id' do
|
14
|
+
card = PagarMe::Card.create card_params
|
15
|
+
found_card = PagarMe::Card.find_by_id card.id
|
16
|
+
|
17
|
+
assert_equal card.id, found_card.id
|
18
|
+
assert_equal card.first_digits, found_card.first_digits
|
19
|
+
assert_equal card.last_digits, found_card.last_digits
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
|
3
|
+
module PagarMe
|
4
|
+
class PayableTest < Test::Unit::TestCase
|
5
|
+
should 'be created setting default recipient on payable' do
|
6
|
+
transaction = PagarMe::Transaction.create transaction_with_customer_with_card_params
|
7
|
+
payable = transaction.payables.first
|
8
|
+
|
9
|
+
assert_equal transaction.payables.count, 1
|
10
|
+
assert_equal payable.recipient_id, PagarMe::Recipient.default.id
|
11
|
+
end
|
12
|
+
|
13
|
+
should 'create one per split rule' do
|
14
|
+
transaction = PagarMe::Transaction.create transaction_with_customer_with_card_with_split_rules_params
|
15
|
+
payable = transaction.payables.first
|
16
|
+
|
17
|
+
assert_equal transaction.payables.count, 4
|
18
|
+
assert_equal transaction.payables.map(&:recipient_id).sort, fixtures.persistent_recipient_ids.sort
|
19
|
+
end
|
20
|
+
|
21
|
+
should 'create be found' do
|
22
|
+
payables = PagarMe::Payable.find_by type: 'refund'
|
23
|
+
|
24
|
+
assert payables.count > 0
|
25
|
+
payables.each do |payable|
|
26
|
+
assert_equal payable.type, 'refund'
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
|
3
|
+
module PagarMe
|
4
|
+
class PlanTest < Test::Unit::TestCase
|
5
|
+
should 'be able to create a plan' do
|
6
|
+
plan = PagarMe::Plan.create plan_params
|
7
|
+
assert_plan_created plan
|
8
|
+
end
|
9
|
+
|
10
|
+
should 'be able to update plan' do
|
11
|
+
plan = PagarMe::Plan.create plan_params
|
12
|
+
assert_plan_created plan
|
13
|
+
|
14
|
+
plan.name = 'plano bronze'
|
15
|
+
plan.save
|
16
|
+
assert_equal plan.name, 'plano bronze'
|
17
|
+
end
|
18
|
+
|
19
|
+
should 'be able to search by anything' do
|
20
|
+
plan = PagarMe::Plan.create plan_params
|
21
|
+
assert_plan_created plan
|
22
|
+
|
23
|
+
# find_by_hash is possibly consistent, wait to try to ensure!!!
|
24
|
+
sleep 1
|
25
|
+
found_plans = PagarMe::Plan.find_by trial_days: 5
|
26
|
+
|
27
|
+
assert found_plans.size > 0
|
28
|
+
found_plans.each do |plan|
|
29
|
+
assert_equal plan.trial_days, 5
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
should 'validate plan amount' do
|
34
|
+
exception = assert_raises(PagarMe::ValidationError){ Plan.create amount: -1 }
|
35
|
+
assert_has_error_param exception, 'amount'
|
36
|
+
end
|
37
|
+
|
38
|
+
should 'validate plan days' do
|
39
|
+
exception = assert_raises(PagarMe::ValidationError){ Plan.create amount: 1000, days: -1 }
|
40
|
+
assert_has_error_param exception, 'days'
|
41
|
+
end
|
42
|
+
|
43
|
+
should 'validate plan with missing name' do
|
44
|
+
exception = assert_raises(PagarMe::ValidationError){ Plan.create amount: 1000, days: 20 }
|
45
|
+
assert_has_error_param exception, 'name'
|
46
|
+
end
|
47
|
+
|
48
|
+
should 'not be possible to edit days' do
|
49
|
+
plan = Plan.create amount: 1000, days: 20, name: 'Plano Platinum'
|
50
|
+
exception = assert_raises(PagarMe::ValidationError) do
|
51
|
+
plan.days = 30
|
52
|
+
plan.save
|
53
|
+
end
|
54
|
+
assert_has_error_param exception, 'days'
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
|
3
|
+
module PagarMe
|
4
|
+
class TransactionTest < Test::Unit::TestCase
|
5
|
+
should 'be valid when has valid fingerprint' do
|
6
|
+
fixed_api_key do
|
7
|
+
postback = PagarMe::Postback.new postback_response_params
|
8
|
+
assert postback.valid?
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
should 'be valid when has invalid fingerprint' do
|
13
|
+
invalid_fingerprint = Digest::SHA1.hexdigest 'Invalid Fingerprint!'
|
14
|
+
postback = PagarMe::Postback.new postback_response_params(fingerprint: invalid_fingerprint)
|
15
|
+
assert !postback.valid?
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
|
3
|
+
module PagarMe
|
4
|
+
class RecipientTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
should 'be able to create a recipient with bank_account data' do
|
7
|
+
recipient = PagarMe::Recipient.create recipient_with_nested_bank_account_params
|
8
|
+
assert_not_nil recipient.date_created
|
9
|
+
end
|
10
|
+
|
11
|
+
should 'be able to create a recipient with bank_account id' do
|
12
|
+
bank_account = PagarMe::BankAccount.create bank_account_params
|
13
|
+
recipient = PagarMe::Recipient.create recipient_params(bank_account_id: bank_account.id)
|
14
|
+
|
15
|
+
assert_not_nil recipient.date_created
|
16
|
+
end
|
17
|
+
|
18
|
+
should 'not be able to create a recipient without bank_account data' do
|
19
|
+
recipient = PagarMe::Recipient.new recipient_params
|
20
|
+
exception = assert_raises(PagarMe::ValidationError){ recipient.create }
|
21
|
+
|
22
|
+
[:bank_code, :agencia, :conta_dv, :conta, :document_number, :legal_name].each do |missing_attr|
|
23
|
+
assert_has_error_param exception, "bank_account[#{missing_attr}]"
|
24
|
+
end
|
25
|
+
assert_nil recipient.date_created
|
26
|
+
end
|
27
|
+
|
28
|
+
should 'be able to search' do
|
29
|
+
recipient = PagarMe::Recipient.create recipient_with_nested_bank_account_params
|
30
|
+
|
31
|
+
bank_account_doc_number = bank_account_params[:document_number]
|
32
|
+
recipients = PagarMe::Recipient.find_by 'bank_account[document_number]' => bank_account_doc_number
|
33
|
+
|
34
|
+
assert recipients.size > 0
|
35
|
+
recipients.each do |recipient|
|
36
|
+
assert_equal recipient.bank_account.document_number, bank_account_doc_number
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,100 @@
|
|
1
|
+
require_relative '../../test_helper'
|
2
|
+
|
3
|
+
module PagarMe
|
4
|
+
class SubscriptionTest < Test::Unit::TestCase
|
5
|
+
should 'be able to create subscription with plan' do
|
6
|
+
plan = PagarMe::Plan.create plan_params
|
7
|
+
assert_plan_created plan
|
8
|
+
|
9
|
+
subscription = PagarMe::Subscription.create subscription_with_customer_params(plan: plan)
|
10
|
+
assert_subscription_created subscription, plan
|
11
|
+
end
|
12
|
+
|
13
|
+
should 'be able to see subscription transactions' do
|
14
|
+
plan = PagarMe::Plan.create no_trial_plan_params
|
15
|
+
subscription = PagarMe::Subscription.create subscription_with_customer_params(plan: plan)
|
16
|
+
assert_no_trial_subscription_created subscription, plan
|
17
|
+
|
18
|
+
sleep 1
|
19
|
+
assert subscription.transactions.count > 0
|
20
|
+
assert_equal subscription.transactions.first.status, 'paid'
|
21
|
+
end
|
22
|
+
|
23
|
+
should 'be able to create subscription with plan and unsaved card' do
|
24
|
+
plan = PagarMe::Plan.create plan_params
|
25
|
+
card = PagarMe::Card.new card_params
|
26
|
+
subscription = PagarMe::Subscription.create subscription_with_customer_params(plan: plan, card: card)
|
27
|
+
assert_subscription_created subscription, plan
|
28
|
+
end
|
29
|
+
|
30
|
+
should 'be able to create subscription with plan and saved card' do
|
31
|
+
plan = PagarMe::Plan.create plan_params
|
32
|
+
card = PagarMe::Card.create card_params
|
33
|
+
subscription = PagarMe::Subscription.create subscription_with_customer_params(plan: plan, card: card)
|
34
|
+
assert_subscription_created subscription, plan
|
35
|
+
end
|
36
|
+
|
37
|
+
should 'be able to create subscription without plan' do
|
38
|
+
subscription = PagarMe::Subscription.create subscription_with_customer_with_card_params(amount: 2000)
|
39
|
+
assert_subscription_successfully_paid subscription, 2000
|
40
|
+
|
41
|
+
found_subscription = PagarMe::Subscription.find_by_id subscription.id
|
42
|
+
assert_subscription_successfully_paid subscription, 2000
|
43
|
+
end
|
44
|
+
|
45
|
+
should 'be able to create subscription without plan and charge with installments' do
|
46
|
+
subscription = PagarMe::Subscription.create subscription_with_customer_with_card_params(amount: 2000, installments: 6)
|
47
|
+
assert_subscription_successfully_paid subscription, 2000, 6
|
48
|
+
|
49
|
+
id = subscription.id
|
50
|
+
|
51
|
+
subscription.charge 1500, 3
|
52
|
+
assert_equal id, subscription.id
|
53
|
+
assert_subscription_successfully_paid subscription, 1500, 3
|
54
|
+
|
55
|
+
found_subscription = PagarMe::Subscription.find_by_id subscription.id
|
56
|
+
assert_subscription_successfully_paid subscription, 1500, 3
|
57
|
+
end
|
58
|
+
|
59
|
+
should 'be able to update subscription' do
|
60
|
+
subscription = PagarMe::Subscription.create subscription_with_customer_with_card_params
|
61
|
+
|
62
|
+
subscription.payment_method = 'boleto'
|
63
|
+
subscription.save
|
64
|
+
|
65
|
+
found_subscription = PagarMe::Subscription.find_by_id subscription.id
|
66
|
+
assert_equal found_subscription.payment_method, 'boleto'
|
67
|
+
end
|
68
|
+
|
69
|
+
should 'raise an error when nil or empty string as ID' do
|
70
|
+
assert_raises RequestError do
|
71
|
+
PagarMe::Subscription.find_by_id nil
|
72
|
+
end
|
73
|
+
|
74
|
+
assert_raises RequestError do
|
75
|
+
PagarMe::Subscription.find_by_id ''
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
should 'be able to change plans' do
|
80
|
+
plan = PagarMe::Plan.create plan_params
|
81
|
+
other_plan = PagarMe::Plan.create other_plan_params
|
82
|
+
|
83
|
+
subscription = PagarMe::Subscription.create subscription_with_customer_with_card_params(plan: plan)
|
84
|
+
assert_equal subscription.plan.id, plan.id
|
85
|
+
|
86
|
+
subscription.plan = other_plan
|
87
|
+
subscription.save
|
88
|
+
assert_equal subscription.plan.id, other_plan.id
|
89
|
+
end
|
90
|
+
|
91
|
+
should 'be able to cancel a subscription' do
|
92
|
+
plan = PagarMe::Plan.create plan_params
|
93
|
+
subscription = PagarMe::Subscription.create subscription_with_customer_with_card_params(plan: plan)
|
94
|
+
assert_equal subscription.status, 'trialing'
|
95
|
+
|
96
|
+
subscription.cancel
|
97
|
+
assert_equal subscription.status, 'canceled'
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|