edools_mymoip 0.8.1
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 +7 -0
- data/.document +5 -0
- data/.gitignore +15 -0
- data/.travis.yml +4 -0
- data/CHANGELOG.md +128 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +20 -0
- data/README.md +3 -0
- data/Rakefile +10 -0
- data/lib/mymoip.rb +57 -0
- data/lib/mymoip/bank_debit.rb +22 -0
- data/lib/mymoip/commission.rb +54 -0
- data/lib/mymoip/credit_card.rb +73 -0
- data/lib/mymoip/exceptions.rb +15 -0
- data/lib/mymoip/formatter.rb +23 -0
- data/lib/mymoip/instruction.rb +134 -0
- data/lib/mymoip/json_parser.rb +11 -0
- data/lib/mymoip/payer.rb +75 -0
- data/lib/mymoip/payment.rb +10 -0
- data/lib/mymoip/payment_methods.rb +46 -0
- data/lib/mymoip/payment_slip.rb +74 -0
- data/lib/mymoip/payments/bank_debit_payment.rb +27 -0
- data/lib/mymoip/payments/credit_card_payment.rb +53 -0
- data/lib/mymoip/payments/payment_slip_payment.rb +12 -0
- data/lib/mymoip/purchase.rb +40 -0
- data/lib/mymoip/request.rb +34 -0
- data/lib/mymoip/requests/payment_request.rb +53 -0
- data/lib/mymoip/requests/transparent_request.rb +36 -0
- data/lib/mymoip/validators.rb +12 -0
- data/lib/mymoip/version.rb +3 -0
- data/mymoip.gemspec +30 -0
- data/test/fixtures/fixture.rb +73 -0
- data/test/fixtures/vcr_cassettes/payment_request.yml +37 -0
- data/test/fixtures/vcr_cassettes/payment_request_with_payment_slip.yml +32 -0
- data/test/fixtures/vcr_cassettes/transparent_request.yml +34 -0
- data/test/fixtures/vcr_cassettes/transparent_request_with_commissions.yml +35 -0
- data/test/lib/test_bank_debit.rb +36 -0
- data/test/lib/test_bank_debit_payment.rb +32 -0
- data/test/lib/test_commission.rb +121 -0
- data/test/lib/test_credit_card_payment.rb +107 -0
- data/test/lib/test_creditcard.rb +206 -0
- data/test/lib/test_formatter.rb +49 -0
- data/test/lib/test_instruction.rb +243 -0
- data/test/lib/test_mymoip.rb +79 -0
- data/test/lib/test_payer.rb +249 -0
- data/test/lib/test_payment.rb +15 -0
- data/test/lib/test_payment_methods.rb +54 -0
- data/test/lib/test_payment_request.rb +120 -0
- data/test/lib/test_payment_slip.rb +78 -0
- data/test/lib/test_payment_slip_payment.rb +8 -0
- data/test/lib/test_purchase.rb +109 -0
- data/test/lib/test_request.rb +88 -0
- data/test/lib/test_transparent_request.rb +71 -0
- data/test/lib/test_validators.rb +13 -0
- data/test/live_test.rb +4 -0
- data/test/test_helper.rb +17 -0
- metadata +251 -0
@@ -0,0 +1,49 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
class TestFormatter < Test::Unit::TestCase
|
4
|
+
def test_cep_method_returns_the_given_cep_with_section_separator
|
5
|
+
assert_equal '92400-123', MyMoip::Formatter.cep('92400123')
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_cep_method_raises_exception_with_nil_cep_given
|
9
|
+
assert_raise ArgumentError do
|
10
|
+
MyMoip::Formatter.cep(nil)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_phone_method_returns_the_given_8_digit_phone_with_section_separators
|
15
|
+
assert_equal '(51)3040-5060', MyMoip::Formatter.phone('5130405060')
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_phone_method_returns_the_given_9_digit_phone_with_section_separators
|
19
|
+
assert_equal '(51)93040-5060', MyMoip::Formatter.phone('51930405060')
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_phone_method_raises_exception_with_nil_phone_given
|
23
|
+
assert_raise ArgumentError do
|
24
|
+
MyMoip::Formatter.phone(nil)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_date_method_returns_the_given_date_in_the_format_expected
|
29
|
+
date = Date.new(2040, 10, 30)
|
30
|
+
assert_equal '30/10/2040', MyMoip::Formatter.date(date)
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_date_method_raises_exception_with_nil_date_given
|
34
|
+
assert_raise ArgumentError do
|
35
|
+
MyMoip::Formatter.date(nil)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_cpf_method_returns_the_given_number_with_section_separators
|
40
|
+
cpf = '522.116.706-95'
|
41
|
+
assert_equal '522.116.706-95', MyMoip::Formatter.cpf('52211670695')
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_cpf_method_raises_exception_with_nil_cpf_given
|
45
|
+
assert_raise ArgumentError do
|
46
|
+
MyMoip::Formatter.cpf(nil)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,243 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
class TestInstruction < Test::Unit::TestCase
|
4
|
+
def test_getters_for_attributes
|
5
|
+
payer = Fixture.payer
|
6
|
+
commissions = [Fixture.commission]
|
7
|
+
installments = [{min: 2, max: 12, forward_taxes: true, fee: 1.99, receive_in_installments: true}]
|
8
|
+
instruction = MyMoip::Instruction.new(
|
9
|
+
id: "some id",
|
10
|
+
payment_reason: "some payment_reason",
|
11
|
+
values: [100.0, 200.0],
|
12
|
+
payer: payer,
|
13
|
+
commissions: commissions,
|
14
|
+
fee_payer_login: "fee_payer_login",
|
15
|
+
payment_receiver_login: "payment_receiver_login",
|
16
|
+
payment_receiver_name: "nick_fury",
|
17
|
+
installments: installments,
|
18
|
+
notification_url: 'http://please.notify.me',
|
19
|
+
return_url: 'http://return.to.my.address.com'
|
20
|
+
)
|
21
|
+
|
22
|
+
assert_equal "some id", instruction.id
|
23
|
+
assert_equal "some payment_reason", instruction.payment_reason
|
24
|
+
assert_equal [100.0, 200.0], instruction.values
|
25
|
+
assert_equal payer, instruction.payer
|
26
|
+
assert_equal commissions, instruction.commissions
|
27
|
+
assert_equal installments, instruction.installments
|
28
|
+
assert_equal "fee_payer_login", instruction.fee_payer_login
|
29
|
+
assert_equal "payment_receiver_login", instruction.payment_receiver_login
|
30
|
+
assert_equal "nick_fury", instruction.payment_receiver_name
|
31
|
+
assert_equal 'http://please.notify.me', instruction.notification_url
|
32
|
+
assert_equal 'http://return.to.my.address.com', instruction.return_url
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_should_generate_a_string_when_converting_to_xml
|
36
|
+
payer = Fixture.payer
|
37
|
+
instruction = Fixture.instruction(payer: payer)
|
38
|
+
|
39
|
+
assert_equal String, instruction.to_xml.class
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_xml_format
|
43
|
+
payer = Fixture.payer
|
44
|
+
instruction = Fixture.instruction(payer: payer)
|
45
|
+
|
46
|
+
expected_format = <<XML
|
47
|
+
<EnviarInstrucao><InstrucaoUnica TipoValidacao=\"Transparente\"><Razao>some payment_reason</Razao><Valores><Valor moeda=\"BRL\">100.00</Valor><Valor moeda=\"BRL\">200.00</Valor></Valores><IdProprio>your_own_instruction_id</IdProprio><Parcelamentos><Parcelamento><MinimoParcelas>2</MinimoParcelas><MaximoParcelas>12</MaximoParcelas><Repassar>true</Repassar><Juros>1.99</Juros></Parcelamento></Parcelamentos><Pagador><Nome>Juquinha da Rocha</Nome><Email>juquinha@rocha.com</Email><IdPagador>your_own_payer_id</IdPagador><EnderecoCobranca><Logradouro>Felipe Neri</Logradouro><Numero>406</Numero><Complemento>Sala 501</Complemento><Bairro>Auxiliadora</Bairro><Cidade>Porto Alegre</Cidade><Estado>RS</Estado><Pais>BRA</Pais><CEP>90440-150</CEP><TelefoneFixo>(51)3040-5060</TelefoneFixo></EnderecoCobranca></Pagador></InstrucaoUnica></EnviarInstrucao>
|
48
|
+
XML
|
49
|
+
assert_equal expected_format.rstrip, instruction.to_xml
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_xml_format_with_urls
|
53
|
+
payer = Fixture.payer
|
54
|
+
instruction = Fixture.instruction(payer: payer)
|
55
|
+
instruction.notification_url = 'http://qwerty.me/nasp'
|
56
|
+
instruction.return_url = 'http://return.to.me'
|
57
|
+
|
58
|
+
expected_format = <<XML
|
59
|
+
<EnviarInstrucao><InstrucaoUnica TipoValidacao=\"Transparente\"><Razao>some payment_reason</Razao><Valores><Valor moeda=\"BRL\">100.00</Valor><Valor moeda=\"BRL\">200.00</Valor></Valores><IdProprio>your_own_instruction_id</IdProprio><Parcelamentos><Parcelamento><MinimoParcelas>2</MinimoParcelas><MaximoParcelas>12</MaximoParcelas><Repassar>true</Repassar><Juros>1.99</Juros></Parcelamento></Parcelamentos><Pagador><Nome>Juquinha da Rocha</Nome><Email>juquinha@rocha.com</Email><IdPagador>your_own_payer_id</IdPagador><EnderecoCobranca><Logradouro>Felipe Neri</Logradouro><Numero>406</Numero><Complemento>Sala 501</Complemento><Bairro>Auxiliadora</Bairro><Cidade>Porto Alegre</Cidade><Estado>RS</Estado><Pais>BRA</Pais><CEP>90440-150</CEP><TelefoneFixo>(51)3040-5060</TelefoneFixo></EnderecoCobranca></Pagador><URLNotificacao>http://qwerty.me/nasp</URLNotificacao><URLRetorno>http://return.to.me</URLRetorno></InstrucaoUnica></EnviarInstrucao>
|
60
|
+
XML
|
61
|
+
assert_equal expected_format.rstrip, instruction.to_xml
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_xml_format_with_installments
|
65
|
+
payer = Fixture.payer
|
66
|
+
installments = [
|
67
|
+
{min: 5, max: 10, fee: 2.99, receive_in_installments: true}
|
68
|
+
]
|
69
|
+
instruction = Fixture.instruction(payer: payer, installments: installments)
|
70
|
+
|
71
|
+
expected_format = <<XML
|
72
|
+
<EnviarInstrucao><InstrucaoUnica TipoValidacao=\"Transparente\"><Razao>some payment_reason</Razao><Valores><Valor moeda=\"BRL\">100.00</Valor><Valor moeda=\"BRL\">200.00</Valor></Valores><IdProprio>your_own_instruction_id</IdProprio><Parcelamentos><Parcelamento><MinimoParcelas>5</MinimoParcelas><MaximoParcelas>10</MaximoParcelas><Juros>2.99</Juros><Recebimento>Parcelado</Recebimento></Parcelamento></Parcelamentos><Pagador><Nome>Juquinha da Rocha</Nome><Email>juquinha@rocha.com</Email><IdPagador>your_own_payer_id</IdPagador><EnderecoCobranca><Logradouro>Felipe Neri</Logradouro><Numero>406</Numero><Complemento>Sala 501</Complemento><Bairro>Auxiliadora</Bairro><Cidade>Porto Alegre</Cidade><Estado>RS</Estado><Pais>BRA</Pais><CEP>90440-150</CEP><TelefoneFixo>(51)3040-5060</TelefoneFixo></EnderecoCobranca></Pagador></InstrucaoUnica></EnviarInstrucao>
|
73
|
+
XML
|
74
|
+
assert_equal expected_format.rstrip, instruction.to_xml
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_xml_format_with_mutiple_installments
|
78
|
+
payer = Fixture.payer
|
79
|
+
installments = [
|
80
|
+
{min: 2, max: 6, fee: 1.99},
|
81
|
+
{min: 7, max: 12, fee: 2.99}
|
82
|
+
]
|
83
|
+
instruction = Fixture.instruction(payer: payer, installments: installments)
|
84
|
+
|
85
|
+
expected_format = <<XML
|
86
|
+
<EnviarInstrucao><InstrucaoUnica TipoValidacao=\"Transparente\"><Razao>some payment_reason</Razao><Valores><Valor moeda=\"BRL\">100.00</Valor><Valor moeda=\"BRL\">200.00</Valor></Valores><IdProprio>your_own_instruction_id</IdProprio><Parcelamentos><Parcelamento><MinimoParcelas>2</MinimoParcelas><MaximoParcelas>6</MaximoParcelas><Juros>1.99</Juros></Parcelamento><Parcelamento><MinimoParcelas>7</MinimoParcelas><MaximoParcelas>12</MaximoParcelas><Juros>2.99</Juros></Parcelamento></Parcelamentos><Pagador><Nome>Juquinha da Rocha</Nome><Email>juquinha@rocha.com</Email><IdPagador>your_own_payer_id</IdPagador><EnderecoCobranca><Logradouro>Felipe Neri</Logradouro><Numero>406</Numero><Complemento>Sala 501</Complemento><Bairro>Auxiliadora</Bairro><Cidade>Porto Alegre</Cidade><Estado>RS</Estado><Pais>BRA</Pais><CEP>90440-150</CEP><TelefoneFixo>(51)3040-5060</TelefoneFixo></EnderecoCobranca></Pagador></InstrucaoUnica></EnviarInstrucao>
|
87
|
+
XML
|
88
|
+
assert_equal expected_format.rstrip, instruction.to_xml
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_xml_format_with_commissions
|
92
|
+
commissions = [Fixture.commission(fixed_value: 5), Fixture.commission(percentage_value: 0.15, fixed_value: nil)]
|
93
|
+
payer = Fixture.payer
|
94
|
+
instruction = Fixture.instruction(payer: payer, commissions: commissions, installments: nil)
|
95
|
+
expected_format = <<XML
|
96
|
+
<EnviarInstrucao><InstrucaoUnica TipoValidacao=\"Transparente\"><Razao>some payment_reason</Razao><Valores><Valor moeda=\"BRL\">100.00</Valor><Valor moeda=\"BRL\">200.00</Valor></Valores><IdProprio>your_own_instruction_id</IdProprio><Comissoes><Comissionamento><Razao>Because we can</Razao><Comissionado><LoginMoIP>commissioned_indentifier</LoginMoIP></Comissionado><ValorFixo>5.00</ValorFixo></Comissionamento><Comissionamento><Razao>Because we can</Razao><Comissionado><LoginMoIP>commissioned_indentifier</LoginMoIP></Comissionado><ValorPercentual>15.00</ValorPercentual></Comissionamento></Comissoes><Pagador><Nome>Juquinha da Rocha</Nome><Email>juquinha@rocha.com</Email><IdPagador>your_own_payer_id</IdPagador><EnderecoCobranca><Logradouro>Felipe Neri</Logradouro><Numero>406</Numero><Complemento>Sala 501</Complemento><Bairro>Auxiliadora</Bairro><Cidade>Porto Alegre</Cidade><Estado>RS</Estado><Pais>BRA</Pais><CEP>90440-150</CEP><TelefoneFixo>(51)3040-5060</TelefoneFixo></EnderecoCobranca></Pagador></InstrucaoUnica></EnviarInstrucao>
|
97
|
+
XML
|
98
|
+
assert_equal expected_format.rstrip, instruction.to_xml
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_xml_format_with_commissions_and_fee_payer
|
102
|
+
commissions = [Fixture.commission(fixed_value: 5), Fixture.commission(percentage_value: 0.15,fixed_value: nil)]
|
103
|
+
payer = Fixture.payer
|
104
|
+
instruction = Fixture.instruction(payer: payer, commissions: commissions, fee_payer_login: 'fee_payer_indentifier', installments: nil)
|
105
|
+
expected_format = <<XML
|
106
|
+
<EnviarInstrucao><InstrucaoUnica TipoValidacao=\"Transparente\"><Razao>some payment_reason</Razao><Valores><Valor moeda=\"BRL\">100.00</Valor><Valor moeda=\"BRL\">200.00</Valor></Valores><IdProprio>your_own_instruction_id</IdProprio><Comissoes><Comissionamento><Razao>Because we can</Razao><Comissionado><LoginMoIP>commissioned_indentifier</LoginMoIP></Comissionado><ValorFixo>5.00</ValorFixo></Comissionamento><Comissionamento><Razao>Because we can</Razao><Comissionado><LoginMoIP>commissioned_indentifier</LoginMoIP></Comissionado><ValorPercentual>15.00</ValorPercentual></Comissionamento><PagadorTaxa><LoginMoIP>fee_payer_indentifier</LoginMoIP></PagadorTaxa></Comissoes><Pagador><Nome>Juquinha da Rocha</Nome><Email>juquinha@rocha.com</Email><IdPagador>your_own_payer_id</IdPagador><EnderecoCobranca><Logradouro>Felipe Neri</Logradouro><Numero>406</Numero><Complemento>Sala 501</Complemento><Bairro>Auxiliadora</Bairro><Cidade>Porto Alegre</Cidade><Estado>RS</Estado><Pais>BRA</Pais><CEP>90440-150</CEP><TelefoneFixo>(51)3040-5060</TelefoneFixo></EnderecoCobranca></Pagador></InstrucaoUnica></EnviarInstrucao>
|
107
|
+
XML
|
108
|
+
assert_equal expected_format.rstrip, instruction.to_xml
|
109
|
+
end
|
110
|
+
|
111
|
+
def test_xml_format_with_commissions_and_payment_receiver
|
112
|
+
commissions = [Fixture.commission(fixed_value: 5), Fixture.commission(percentage_value: 0.15, fixed_value: nil)]
|
113
|
+
payer = Fixture.payer
|
114
|
+
instruction = Fixture.instruction(payer: payer, commissions: commissions,
|
115
|
+
payment_receiver_login:'payment_receiver_indentifier',
|
116
|
+
payment_receiver_name: 'nick_fury', installments: nil)
|
117
|
+
expected_format = <<XML
|
118
|
+
<EnviarInstrucao><InstrucaoUnica TipoValidacao=\"Transparente\"><Razao>some payment_reason</Razao><Valores><Valor moeda=\"BRL\">100.00</Valor><Valor moeda=\"BRL\">200.00</Valor></Valores><IdProprio>your_own_instruction_id</IdProprio><Comissoes><Comissionamento><Razao>Because we can</Razao><Comissionado><LoginMoIP>commissioned_indentifier</LoginMoIP></Comissionado><ValorFixo>5.00</ValorFixo></Comissionamento><Comissionamento><Razao>Because we can</Razao><Comissionado><LoginMoIP>commissioned_indentifier</LoginMoIP></Comissionado><ValorPercentual>15.00</ValorPercentual></Comissionamento></Comissoes><Recebedor><LoginMoIP>payment_receiver_indentifier</LoginMoIP><Apelido>nick_fury</Apelido></Recebedor><Pagador><Nome>Juquinha da Rocha</Nome><Email>juquinha@rocha.com</Email><IdPagador>your_own_payer_id</IdPagador><EnderecoCobranca><Logradouro>Felipe Neri</Logradouro><Numero>406</Numero><Complemento>Sala 501</Complemento><Bairro>Auxiliadora</Bairro><Cidade>Porto Alegre</Cidade><Estado>RS</Estado><Pais>BRA</Pais><CEP>90440-150</CEP><TelefoneFixo>(51)3040-5060</TelefoneFixo></EnderecoCobranca></Pagador></InstrucaoUnica></EnviarInstrucao>
|
119
|
+
XML
|
120
|
+
assert_equal expected_format.rstrip, instruction.to_xml
|
121
|
+
end
|
122
|
+
|
123
|
+
def test_xml_format_with_commissions_and_payment_receiver_and_fee_payer
|
124
|
+
commissions = [Fixture.commission(fixed_value: 5), Fixture.commission(percentage_value: 0.15, fixed_value: nil)]
|
125
|
+
payer = Fixture.payer
|
126
|
+
instruction = Fixture.instruction(payer: payer, commissions: commissions,
|
127
|
+
payment_receiver_login:'payment_receiver_indentifier',
|
128
|
+
payment_receiver_name: 'nick_fury',
|
129
|
+
fee_payer_login: 'fee_payer_indentifier',
|
130
|
+
installments: nil)
|
131
|
+
expected_format = <<XML
|
132
|
+
<EnviarInstrucao><InstrucaoUnica TipoValidacao=\"Transparente\"><Razao>some payment_reason</Razao><Valores><Valor moeda=\"BRL\">100.00</Valor><Valor moeda=\"BRL\">200.00</Valor></Valores><IdProprio>your_own_instruction_id</IdProprio><Comissoes><Comissionamento><Razao>Because we can</Razao><Comissionado><LoginMoIP>commissioned_indentifier</LoginMoIP></Comissionado><ValorFixo>5.00</ValorFixo></Comissionamento><Comissionamento><Razao>Because we can</Razao><Comissionado><LoginMoIP>commissioned_indentifier</LoginMoIP></Comissionado><ValorPercentual>15.00</ValorPercentual></Comissionamento><PagadorTaxa><LoginMoIP>fee_payer_indentifier</LoginMoIP></PagadorTaxa></Comissoes><Recebedor><LoginMoIP>payment_receiver_indentifier</LoginMoIP><Apelido>nick_fury</Apelido></Recebedor><Pagador><Nome>Juquinha da Rocha</Nome><Email>juquinha@rocha.com</Email><IdPagador>your_own_payer_id</IdPagador><EnderecoCobranca><Logradouro>Felipe Neri</Logradouro><Numero>406</Numero><Complemento>Sala 501</Complemento><Bairro>Auxiliadora</Bairro><Cidade>Porto Alegre</Cidade><Estado>RS</Estado><Pais>BRA</Pais><CEP>90440-150</CEP><TelefoneFixo>(51)3040-5060</TelefoneFixo></EnderecoCobranca></Pagador></InstrucaoUnica></EnviarInstrucao>
|
133
|
+
XML
|
134
|
+
assert_equal expected_format.rstrip, instruction.to_xml
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_to_xml_method_raises_exception_when_called_with_some_invalid_comission
|
138
|
+
invalid_commission = Fixture.commission
|
139
|
+
invalid_commission.stubs(:invalid?).returns(true)
|
140
|
+
subject = Fixture.instruction(commissions: [Fixture.commission, invalid_commission])
|
141
|
+
assert_raise MyMoip::InvalidComission do
|
142
|
+
subject.to_xml
|
143
|
+
end
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_to_xml_method_raises_exception_when_called_with_invalid_payer
|
147
|
+
subject = Fixture.instruction
|
148
|
+
MyMoip::Payer.any_instance.stubs(:invalid?).returns(true)
|
149
|
+
assert_raise MyMoip::InvalidPayer do
|
150
|
+
subject.to_xml
|
151
|
+
end
|
152
|
+
end
|
153
|
+
|
154
|
+
def test_to_xml_method_dont_raises_exception_when_called_with_valid_payer
|
155
|
+
subject = Fixture.instruction
|
156
|
+
MyMoip::Payer.any_instance.stubs(:invalid?).returns(false)
|
157
|
+
assert_nothing_raised MyMoip::InvalidPayer do
|
158
|
+
subject.to_xml
|
159
|
+
end
|
160
|
+
end
|
161
|
+
|
162
|
+
def test_to_xml_method_raises_exception_when_called_with_invalid_params
|
163
|
+
subject = Fixture.instruction
|
164
|
+
MyMoip::Instruction.any_instance.stubs(:invalid?).returns(true)
|
165
|
+
assert_raise MyMoip::InvalidInstruction do
|
166
|
+
subject.to_xml
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
def test_to_xml_method_dont_raises_exception_when_called_with_valid_params
|
171
|
+
subject = Fixture.instruction
|
172
|
+
MyMoip::Instruction.any_instance.stubs(:invalid?).returns(false)
|
173
|
+
assert_nothing_raised MyMoip::InvalidInstruction do
|
174
|
+
subject.to_xml
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
def test_validate_no_presence_of_payment_receiver_in_commissions
|
179
|
+
commissions = [Fixture.commission(receiver_login: 'payment_receiver_id')]
|
180
|
+
subject = Fixture.instruction(payment_receiver_login: 'payment_receiver_id', commissions: commissions)
|
181
|
+
assert subject.invalid? && subject.errors[:payment_receiver_login].present?,
|
182
|
+
"should be invalid with receiver present on commissions"
|
183
|
+
end
|
184
|
+
|
185
|
+
def test_gross_amount
|
186
|
+
subject = Fixture.instruction(values: [6, 5])
|
187
|
+
assert_equal 11, subject.gross_amount
|
188
|
+
end
|
189
|
+
|
190
|
+
def test_commissions_sum
|
191
|
+
commissions = [Fixture.commission(fixed_value: 5), Fixture.commission(percentage_value: 0.1, fixed_value: nil)]
|
192
|
+
subject = Fixture.instruction(commissions: commissions, values: [10])
|
193
|
+
assert_equal 6, subject.commissions_sum
|
194
|
+
end
|
195
|
+
|
196
|
+
def test_validate_commissions_sum
|
197
|
+
commissions = [Fixture.commission(fixed_value: 5), Fixture.commission(fixed_value: 5)]
|
198
|
+
subject = Fixture.instruction(commissions: commissions, values: [6])
|
199
|
+
assert subject.invalid? && subject.errors[:commissions].present?,
|
200
|
+
"should be invalid with commissions sum greater than values sum"
|
201
|
+
end
|
202
|
+
|
203
|
+
def test_validate_presence_of_id_attribute
|
204
|
+
subject = Fixture.instruction
|
205
|
+
subject.id = nil
|
206
|
+
assert subject.invalid? && subject.errors[:id].present?,
|
207
|
+
'should be invalid without an id'
|
208
|
+
end
|
209
|
+
|
210
|
+
def test_validate_presence_of_payment_reason_attribute
|
211
|
+
subject = Fixture.instruction
|
212
|
+
subject.payment_reason = nil
|
213
|
+
assert subject.invalid? && subject.errors[:payment_reason].present?,
|
214
|
+
'should be invalid without a payment_reason'
|
215
|
+
subject.payment_reason = ''
|
216
|
+
assert subject.invalid? && subject.errors[:payment_reason].present?,
|
217
|
+
'should be invalid without a payment_reason'
|
218
|
+
end
|
219
|
+
|
220
|
+
def test_validate_presence_of_values_attribute
|
221
|
+
subject = Fixture.instruction
|
222
|
+
subject.values = nil
|
223
|
+
assert subject.invalid? && subject.errors[:values].present?,
|
224
|
+
'should be invalid without values'
|
225
|
+
end
|
226
|
+
|
227
|
+
def test_validate_presence_of_payer_attribute
|
228
|
+
subject = Fixture.instruction
|
229
|
+
subject.payer = nil
|
230
|
+
assert subject.invalid? && subject.errors[:payer].present?,
|
231
|
+
'should be invalid without a payer'
|
232
|
+
end
|
233
|
+
|
234
|
+
def test_validate_url
|
235
|
+
subject = Fixture.instruction
|
236
|
+
assert subject.valid?
|
237
|
+
|
238
|
+
subject.notification_url = 'ftp://sdfsdfs.com'
|
239
|
+
subject.return_url = 'xxftpsdfsdfs.com'
|
240
|
+
|
241
|
+
assert subject.invalid? && subject.errors[:notification_url].present? && subject.errors[:return_url].present?
|
242
|
+
end
|
243
|
+
end
|
@@ -0,0 +1,79 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
class TestMymoip < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@default_environment = MyMoip.environment
|
6
|
+
@default_key = MyMoip.key
|
7
|
+
@default_token = MyMoip.token
|
8
|
+
@default_logger = MyMoip.logger
|
9
|
+
end
|
10
|
+
|
11
|
+
def teardown
|
12
|
+
MyMoip.environment = @default_environment
|
13
|
+
MyMoip.key = @default_key
|
14
|
+
MyMoip.token = @default_token
|
15
|
+
MyMoip.logger = @default_logger
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_default_environment_is_sandbox
|
19
|
+
MyMoip.environment = 'sandbox'
|
20
|
+
assert_equal "sandbox", MyMoip.environment
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_key_setter_updates_sandbox_and_production_keys
|
24
|
+
MyMoip.key = "my_key"
|
25
|
+
assert_equal "my_key", MyMoip.production_key
|
26
|
+
assert_equal "my_key", MyMoip.sandbox_key
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_token_setter_updates_sandbox_and_production_tokens
|
30
|
+
MyMoip.token = "my_token"
|
31
|
+
assert_equal "my_token", MyMoip.production_token
|
32
|
+
assert_equal "my_token", MyMoip.sandbox_token
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_current_auth_when_in_sandbox
|
36
|
+
MyMoip.sandbox_key = "sandbox_key"
|
37
|
+
MyMoip.sandbox_token = "sandbox_token"
|
38
|
+
MyMoip.environment = "sandbox"
|
39
|
+
assert_equal "sandbox_key", MyMoip.key
|
40
|
+
assert_equal "sandbox_token", MyMoip.token
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_current_auth_when_in_production
|
44
|
+
MyMoip.production_key = "production_key"
|
45
|
+
MyMoip.production_token = "production_token"
|
46
|
+
MyMoip.environment = "production"
|
47
|
+
assert_equal "production_key", MyMoip.key
|
48
|
+
assert_equal "production_token", MyMoip.token
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_default_referer_url_setter
|
52
|
+
MyMoip.default_referer_url = "http://localhost"
|
53
|
+
assert_equal "http://localhost", MyMoip.default_referer_url
|
54
|
+
end
|
55
|
+
|
56
|
+
def test_environment_setter
|
57
|
+
MyMoip.environment = "production"
|
58
|
+
assert_equal "production", MyMoip.environment
|
59
|
+
end
|
60
|
+
|
61
|
+
def test_choose_right_api_url_by_sandbox_environment
|
62
|
+
MyMoip.environment = "sandbox"
|
63
|
+
assert_equal "https://desenvolvedor.moip.com.br/sandbox", MyMoip.api_url
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_choose_right_api_url_by_production_environment
|
67
|
+
MyMoip.environment = "production"
|
68
|
+
assert_equal "https://www.moip.com.br", MyMoip.api_url
|
69
|
+
end
|
70
|
+
|
71
|
+
def test_logger_initialization
|
72
|
+
assert MyMoip.logger.instance_of?(Logger)
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_attribution_of_new_logger
|
76
|
+
MyMoip.logger = my_string = ""
|
77
|
+
assert_equal my_string, MyMoip.logger
|
78
|
+
end
|
79
|
+
end
|
@@ -0,0 +1,249 @@
|
|
1
|
+
require_relative '../test_helper'
|
2
|
+
|
3
|
+
class TestPayer < Test::Unit::TestCase
|
4
|
+
def test_getters_for_attributes
|
5
|
+
payer = MyMoip::Payer.new(
|
6
|
+
id: "some id",
|
7
|
+
name: "some name",
|
8
|
+
email: "some email",
|
9
|
+
address_street: "some address_street",
|
10
|
+
address_street_number: "some address_street_number",
|
11
|
+
address_street_extra: "some address_street_extra",
|
12
|
+
address_neighbourhood: "some address_neighbourhood",
|
13
|
+
address_city: "some address_city",
|
14
|
+
address_state: "RS",
|
15
|
+
address_country: "BRA",
|
16
|
+
address_cep: "92123456",
|
17
|
+
address_phone: "5130405060"
|
18
|
+
)
|
19
|
+
|
20
|
+
assert_equal "some id", payer.id
|
21
|
+
assert_equal "some name", payer.name
|
22
|
+
assert_equal "some email", payer.email
|
23
|
+
assert_equal "some address_street", payer.address_street
|
24
|
+
assert_equal "some address_street_number", payer.address_street_number
|
25
|
+
assert_equal "some address_street_extra", payer.address_street_extra
|
26
|
+
assert_equal "some address_neighbourhood", payer.address_neighbourhood
|
27
|
+
assert_equal "some address_city", payer.address_city
|
28
|
+
assert_equal "RS", payer.address_state
|
29
|
+
assert_equal "BRA", payer.address_country
|
30
|
+
assert_equal "92123456", payer.address_cep
|
31
|
+
assert_equal "5130405060", payer.address_phone
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_initialization_and_setters_with_string_keys
|
35
|
+
payer = MyMoip::Payer.new(
|
36
|
+
'id' => 'some id',
|
37
|
+
'name' => 'some name',
|
38
|
+
'email' => 'some email',
|
39
|
+
'address_street' => 'some address_street',
|
40
|
+
'address_street_number' => 'some address_street_number',
|
41
|
+
'address_street_extra' => 'some address_street_extra',
|
42
|
+
'address_neighbourhood' => 'some address_neighbourhood',
|
43
|
+
'address_city' => 'some address_city',
|
44
|
+
'address_state' => 'RS',
|
45
|
+
'address_country' => 'BRA',
|
46
|
+
'address_cep' => '92123456',
|
47
|
+
'address_phone' => '5130405060'
|
48
|
+
)
|
49
|
+
|
50
|
+
assert_equal "some id", payer.id
|
51
|
+
assert_equal "some name", payer.name
|
52
|
+
assert_equal "some email", payer.email
|
53
|
+
assert_equal "some address_street", payer.address_street
|
54
|
+
assert_equal "some address_street_number", payer.address_street_number
|
55
|
+
assert_equal "some address_street_extra", payer.address_street_extra
|
56
|
+
assert_equal "some address_neighbourhood", payer.address_neighbourhood
|
57
|
+
assert_equal "some address_city", payer.address_city
|
58
|
+
assert_equal "RS", payer.address_state
|
59
|
+
assert_equal "BRA", payer.address_country
|
60
|
+
assert_equal "92123456", payer.address_cep
|
61
|
+
assert_equal "5130405060", payer.address_phone
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_validate_presence_of_id_attribute
|
65
|
+
subject = Fixture.payer
|
66
|
+
subject.id = nil
|
67
|
+
assert subject.invalid?, 'should be invalid without an id'
|
68
|
+
subject.id = ''
|
69
|
+
assert subject.invalid?, 'should be invalid without an id'
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_validate_presence_of_name_attribute
|
73
|
+
subject = Fixture.payer
|
74
|
+
subject.name = nil
|
75
|
+
assert subject.invalid?, 'should be invalid without an name'
|
76
|
+
subject.name = ''
|
77
|
+
assert subject.invalid?, 'should be invalid without an name'
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_validate_presence_of_email_attribute
|
81
|
+
subject = Fixture.payer
|
82
|
+
subject.email = nil
|
83
|
+
assert subject.invalid?, 'should be invalid without an email'
|
84
|
+
subject.email = ''
|
85
|
+
assert subject.invalid?, 'should be invalid without an email'
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_validate_presence_of_address_street_attribute
|
89
|
+
subject = Fixture.payer
|
90
|
+
subject.address_street = nil
|
91
|
+
assert subject.invalid?, 'should be invalid without an address_street'
|
92
|
+
subject.address_street = ''
|
93
|
+
assert subject.invalid?, 'should be invalid without an address_street'
|
94
|
+
end
|
95
|
+
|
96
|
+
def test_validate_presence_of_address_street_number_attribute
|
97
|
+
subject = Fixture.payer
|
98
|
+
subject.address_street_number = nil
|
99
|
+
assert subject.invalid?, 'should be invalid without an address_street_number'
|
100
|
+
subject.address_street_number = ''
|
101
|
+
assert subject.invalid?, 'should be invalid without an address_street_number'
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_validate_presence_of_address_neighbourhood_attribute
|
105
|
+
subject = Fixture.payer
|
106
|
+
subject.address_neighbourhood = nil
|
107
|
+
assert subject.invalid?, 'should be invalid without an address_neighbourhood'
|
108
|
+
subject.address_neighbourhood = ''
|
109
|
+
assert subject.invalid?, 'should be invalid without an address_neighbourhood'
|
110
|
+
end
|
111
|
+
|
112
|
+
def test_validate_presence_of_address_city_attribute
|
113
|
+
subject = Fixture.payer
|
114
|
+
subject.address_city = nil
|
115
|
+
assert subject.invalid?, 'should be invalid without an address_city'
|
116
|
+
subject.address_city = ''
|
117
|
+
assert subject.invalid?, 'should be invalid without an address_city'
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_validate_presence_of_address_state_attribute
|
121
|
+
subject = Fixture.payer
|
122
|
+
subject.address_state = nil
|
123
|
+
assert subject.invalid?, 'should be invalid without an address_state'
|
124
|
+
subject.address_state = ''
|
125
|
+
assert subject.invalid?, 'should be invalid without an address_state'
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_validate_length_of_address_state_attribute_in_2_chars
|
129
|
+
subject = Fixture.payer
|
130
|
+
subject.address_state = 'RS'
|
131
|
+
assert subject.valid?, 'should accept 2 chars'
|
132
|
+
subject.address_state = 'RSS'
|
133
|
+
assert subject.invalid? && subject.errors[:address_state].present?,
|
134
|
+
'should not accept strings with other than 2 chars'
|
135
|
+
end
|
136
|
+
|
137
|
+
def test_upcase_assigned_address_state
|
138
|
+
subject = Fixture.payer
|
139
|
+
subject.address_state = 'rs'
|
140
|
+
assert_equal 'RS', subject.address_state
|
141
|
+
end
|
142
|
+
|
143
|
+
def test_validate_presence_of_address_country_attribute
|
144
|
+
subject = Fixture.payer
|
145
|
+
subject.address_country = nil
|
146
|
+
assert subject.invalid?, 'should be invalid without an address_country'
|
147
|
+
subject.address_country = ''
|
148
|
+
assert subject.invalid?, 'should be invalid without an address_country'
|
149
|
+
end
|
150
|
+
|
151
|
+
def test_validate_length_of_address_country_attribute_in_3_chars
|
152
|
+
subject = Fixture.payer
|
153
|
+
subject.address_country = 'BRA'
|
154
|
+
assert subject.valid?, 'should accept 3 chars'
|
155
|
+
subject.address_country = 'BR'
|
156
|
+
assert subject.invalid? && subject.errors[:address_country].present?,
|
157
|
+
'should not accept strings with other than 3 chars'
|
158
|
+
end
|
159
|
+
|
160
|
+
def test_upcase_assigned_address_country
|
161
|
+
subject = Fixture.payer
|
162
|
+
subject.address_country = 'bra'
|
163
|
+
assert_equal 'BRA', subject.address_country
|
164
|
+
end
|
165
|
+
|
166
|
+
def test_validate_presence_of_address_cep_attribute
|
167
|
+
subject = Fixture.payer
|
168
|
+
subject.address_cep = nil
|
169
|
+
assert subject.invalid?, 'should be invalid without an address_cep'
|
170
|
+
subject.address_cep = ''
|
171
|
+
assert subject.invalid?, 'should be invalid without an address_cep'
|
172
|
+
end
|
173
|
+
|
174
|
+
def test_validate_length_of_address_cep_attribute_in_2_chars
|
175
|
+
subject = Fixture.payer
|
176
|
+
subject.address_cep = '92123456'
|
177
|
+
assert subject.valid?, 'should accept 8 chars'
|
178
|
+
subject.address_cep = '921234560000'
|
179
|
+
assert subject.invalid? && subject.errors[:address_cep].present?,
|
180
|
+
'should not accept strings with other than 8 chars'
|
181
|
+
end
|
182
|
+
|
183
|
+
def test_dont_count_dashes_in_the_address_cep_length_validation
|
184
|
+
subject = Fixture.payer
|
185
|
+
subject.address_cep = '92123-456'
|
186
|
+
assert subject.valid?
|
187
|
+
end
|
188
|
+
|
189
|
+
def test_remove_dashes_from_address_cep
|
190
|
+
subject = Fixture.payer
|
191
|
+
subject.address_cep = '92123-456'
|
192
|
+
assert_equal '92123456', subject.address_cep
|
193
|
+
end
|
194
|
+
|
195
|
+
def test_validate_presence_of_address_phone_attribute
|
196
|
+
subject = Fixture.payer
|
197
|
+
subject.address_phone = nil
|
198
|
+
assert subject.invalid?, 'should be invalid without an address_phone'
|
199
|
+
subject.address_phone = ''
|
200
|
+
assert subject.invalid?, 'should be invalid without an address_phone'
|
201
|
+
end
|
202
|
+
|
203
|
+
def test_validate_length_of_address_phone_attribute_in_10_or_11_chars
|
204
|
+
subject = Fixture.payer
|
205
|
+
subject.address_phone = '5130405060'
|
206
|
+
assert subject.valid?, 'should accept 10 chars'
|
207
|
+
subject.address_phone = '51930405060'
|
208
|
+
assert subject.valid?, 'should accept 11 chars'
|
209
|
+
subject.address_phone = '215130405060'
|
210
|
+
assert subject.invalid? && subject.errors[:address_phone].present?,
|
211
|
+
'should not accept strings with other than 10 or 11 chars'
|
212
|
+
end
|
213
|
+
|
214
|
+
def test_remove_left_zeros_from_address_phone
|
215
|
+
subject = Fixture.payer
|
216
|
+
subject.address_phone = '05130405060'
|
217
|
+
assert_equal '5130405060', subject.address_phone
|
218
|
+
end
|
219
|
+
|
220
|
+
def test_remove_dashes_from_address_phone
|
221
|
+
subject = Fixture.payer
|
222
|
+
subject.address_phone = '513040-5060'
|
223
|
+
assert_equal '5130405060', subject.address_phone
|
224
|
+
subject.address_phone = '5193040-5060'
|
225
|
+
assert_equal '51930405060', subject.address_phone
|
226
|
+
end
|
227
|
+
|
228
|
+
def test_remove_parenthesis_from_address_phone
|
229
|
+
subject = Fixture.payer
|
230
|
+
subject.address_phone = '(51)30405060'
|
231
|
+
assert_equal '5130405060', subject.address_phone
|
232
|
+
subject.address_phone = '(51)930405060'
|
233
|
+
assert_equal '51930405060', subject.address_phone
|
234
|
+
end
|
235
|
+
|
236
|
+
def test_to_xml_method_uses_the_formatted_version_of_the_address_cep
|
237
|
+
subject = Fixture.payer(address_cep: '92000123')
|
238
|
+
formatter = stub_everything('formatter')
|
239
|
+
formatter.expects(:cep).with('92000123')
|
240
|
+
subject.to_xml(nil, formatter)
|
241
|
+
end
|
242
|
+
|
243
|
+
def test_to_xml_method_uses_the_formatted_version_of_the_address_phone
|
244
|
+
subject = Fixture.payer(address_phone: '5130405060')
|
245
|
+
formatter = stub_everything('formatter')
|
246
|
+
formatter.expects(:phone).with('5130405060')
|
247
|
+
subject.to_xml(nil, formatter)
|
248
|
+
end
|
249
|
+
end
|