br_boleto 1.2.2 → 2.0.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/.gitignore +1 -0
- data/Gemfile.lock +1 -1
- data/README.markdown +278 -98
- data/br_boleto.gemspec +5 -3
- data/lib/br_boleto/active_model_base.rb +1 -1
- data/lib/br_boleto/association/have_conta.rb +109 -0
- data/lib/br_boleto/association/have_pagador.rb +38 -0
- data/lib/br_boleto/association/have_pagamentos.rb +44 -0
- data/lib/br_boleto/boleto/base.rb +50 -379
- data/lib/br_boleto/boleto/caixa.rb +28 -143
- data/lib/br_boleto/boleto/sicoob.rb +24 -144
- data/lib/br_boleto/conta/base.rb +288 -0
- data/lib/br_boleto/conta/caixa.rb +109 -0
- data/lib/br_boleto/conta/sicoob.rb +64 -0
- data/lib/br_boleto/helper/default_codes.rb +33 -0
- data/lib/br_boleto/helper/format_value.rb +1 -0
- data/lib/br_boleto/helper/number.rb +30 -0
- data/lib/br_boleto/pagador.rb +82 -0
- data/lib/br_boleto/remessa/base.rb +28 -50
- data/lib/br_boleto/remessa/cnab240/base.rb +22 -131
- data/lib/br_boleto/remessa/cnab240/caixa.rb +16 -62
- data/lib/br_boleto/remessa/cnab240/helper/header_arquivo.rb +7 -7
- data/lib/br_boleto/remessa/cnab240/helper/header_lote.rb +6 -6
- data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +22 -22
- data/lib/br_boleto/remessa/cnab240/helper/segmento_q.rb +16 -16
- data/lib/br_boleto/remessa/cnab240/helper/segmento_r.rb +3 -3
- data/lib/br_boleto/remessa/cnab240/helper/segmento_s.rb +3 -3
- data/lib/br_boleto/remessa/cnab240/helper/trailer_arquivo.rb +3 -3
- data/lib/br_boleto/remessa/cnab240/helper/trailer_lote.rb +3 -3
- data/lib/br_boleto/remessa/cnab240/sicoob.rb +36 -73
- data/lib/br_boleto/remessa/cnab400/base.rb +95 -0
- data/lib/br_boleto/remessa/cnab400/helper/detalhe.rb +136 -0
- data/lib/br_boleto/remessa/cnab400/helper/header.rb +114 -0
- data/lib/br_boleto/remessa/cnab400/helper/trailer.rb +50 -0
- data/lib/br_boleto/remessa/cnab400/sicoob.rb +249 -0
- data/lib/br_boleto/remessa/lote.rb +1 -23
- data/lib/br_boleto/remessa/pagamento.rb +188 -51
- data/lib/br_boleto/retorno/base.rb +9 -0
- data/lib/br_boleto/retorno/cnab240/base.rb +2 -10
- data/lib/br_boleto/retorno/cnab400/base.rb +48 -0
- data/lib/br_boleto/retorno/cnab400/sicoob.rb +42 -0
- data/lib/br_boleto/retorno/pagamento.rb +12 -6
- data/lib/br_boleto/string_methods.rb +8 -2
- data/lib/br_boleto/validations.rb +19 -0
- data/lib/br_boleto/version.rb +3 -3
- data/lib/br_boleto.rb +38 -8
- data/lib/config/locales/br-boleto-en.yml +89 -0
- data/lib/config/locales/br-boleto-pt-BR.yml +89 -0
- data/test/br_boleto/association/have_conta_test.rb +319 -0
- data/test/br_boleto/association/have_pagador_test.rb +110 -0
- data/test/br_boleto/association/have_pagamentos_test.rb +113 -0
- data/test/br_boleto/boleto/base_test.rb +127 -201
- data/test/br_boleto/boleto/caixa_test.rb +58 -72
- data/test/br_boleto/boleto/sicoob_test.rb +88 -147
- data/test/br_boleto/conta/base_test.rb +490 -0
- data/test/br_boleto/conta/caixa_test.rb +154 -0
- data/test/br_boleto/conta/sicoob_test.rb +144 -0
- data/test/br_boleto/helper/number_test.rb +29 -0
- data/test/br_boleto/pagador_test.rb +158 -0
- data/test/br_boleto/remessa/base_test.rb +37 -62
- data/test/br_boleto/remessa/cnab240/base_test.rb +75 -95
- data/test/br_boleto/remessa/cnab240/caixa_test.rb +61 -96
- data/test/br_boleto/remessa/cnab240/helper/header_arquivo_test.rb +11 -11
- data/test/br_boleto/remessa/cnab240/helper/header_lote_test.rb +8 -8
- data/test/br_boleto/remessa/cnab240/helper/segmento_p_test.rb +17 -15
- data/test/br_boleto/remessa/cnab240/helper/segmento_q_test.rb +13 -13
- data/test/br_boleto/remessa/cnab240/helper/segmento_r_test.rb +2 -2
- data/test/br_boleto/remessa/cnab240/helper/segmento_s_test.rb +3 -3
- data/test/br_boleto/remessa/cnab240/helper/trailer_arquivo_test.rb +1 -1
- data/test/br_boleto/remessa/cnab240/helper/trailer_lote_test.rb +1 -1
- data/test/br_boleto/remessa/cnab240/sicoob_test.rb +136 -131
- data/test/br_boleto/remessa/cnab400/base_test.rb +263 -0
- data/test/br_boleto/remessa/cnab400/sicoob_test.rb +179 -0
- data/test/br_boleto/remessa/lote_test.rb +2 -41
- data/test/br_boleto/remessa/pagamento_test.rb +186 -188
- data/test/br_boleto/retorno/base_test.rb +0 -1
- data/test/br_boleto/retorno/cnab240/base_test.rb +12 -11
- data/test/br_boleto/retorno/cnab240/caixa_test.rb +11 -11
- data/test/br_boleto/retorno/cnab240/sicoob_test.rb +11 -11
- data/test/br_boleto/retorno/cnab400/sicoob_test.rb +227 -0
- data/test/br_boleto/retorno/pagamento_test.rb +6 -6
- data/test/factories/boleto/base.rb +9 -7
- data/test/factories/boleto/boleto_caixa.rb +2 -9
- data/test/factories/boleto/boleto_sicoob.rb +10 -8
- data/test/factories/conta/base.rb +10 -0
- data/test/factories/conta/caixa.rb +15 -0
- data/test/factories/conta/sicoob.rb +16 -0
- data/test/factories/pagador.rb +15 -0
- data/test/factories/remessa/base.rb +0 -6
- data/test/factories/remessa/cnab240/base.rb +0 -10
- data/test/factories/remessa/cnab240/caixa.rb +1 -6
- data/test/factories/remessa/cnab240/sicoob.rb +1 -10
- data/test/factories/remessa/cnab400/base.rb +8 -0
- data/test/factories/remessa/cnab400/sicoob.rb +8 -0
- data/test/factories/remessa/pagamento.rb +8 -7
- data/test/fixtures/remessa/cnab240/sicoob.rem +8 -0
- data/test/{files → fixtures}/retorno/cnab240/caixa.ret +0 -0
- data/test/{files → fixtures}/retorno/cnab240/padrao240.ret +0 -0
- data/test/fixtures/retorno/cnab400/sicoob.ret +7 -0
- data/test/inheritance/boleto_test.rb +4 -1
- data/test/inheritance/sicoob_test.rb +23 -7
- data/test/test_helper.rb +70 -0
- metadata +63 -6
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
en:
|
|
2
|
+
activemodel:
|
|
3
|
+
errors:
|
|
4
|
+
messages:
|
|
5
|
+
custom_length_maximum:
|
|
6
|
+
one: "must have no more than 1 digit"
|
|
7
|
+
other: "must have a maximum of %{count} digits"
|
|
8
|
+
custom_length_minimum:
|
|
9
|
+
one: "must be at least 1 digit"
|
|
10
|
+
other: "must have at least %{count} digits"
|
|
11
|
+
custom_length_is:
|
|
12
|
+
one: "must have 1 digit"
|
|
13
|
+
other: "must have %{count} digits"
|
|
14
|
+
custom_inclusion: 'must contain one of the following values: %{list}'
|
|
15
|
+
at_least_one: must be at least 1
|
|
16
|
+
attributes:
|
|
17
|
+
br_boleto/pagador:
|
|
18
|
+
nome: Name
|
|
19
|
+
cpf_cnpj: 'CPF/CNPJ'
|
|
20
|
+
endereco: Street
|
|
21
|
+
bairro: District
|
|
22
|
+
cep: Zip code
|
|
23
|
+
cidade: City
|
|
24
|
+
uf: UF
|
|
25
|
+
nome_avalista: Guarantor
|
|
26
|
+
documento_avalista: 'CPF/CNPJ Guarantor'
|
|
27
|
+
br_boleto/boleto/base:
|
|
28
|
+
data_vencimento: Validity
|
|
29
|
+
numero_documento: Document number
|
|
30
|
+
valor_documento: Document value
|
|
31
|
+
conta_corrente: Current account
|
|
32
|
+
codigo_moeda: Currency code
|
|
33
|
+
especie: Kind of money
|
|
34
|
+
especie_documento: Kind of Document
|
|
35
|
+
data_documento: Document date
|
|
36
|
+
local_pagamento: Payment place
|
|
37
|
+
aceite: Acceptance
|
|
38
|
+
instrucoes1: Message 1
|
|
39
|
+
instrucoes2: Message 2
|
|
40
|
+
instrucoes3: Message 3
|
|
41
|
+
instrucoes4: Message 4
|
|
42
|
+
instrucoes5: Message 5
|
|
43
|
+
instrucoes6: Message 6
|
|
44
|
+
parcelas: Plots
|
|
45
|
+
br_boleto/conta/base:
|
|
46
|
+
modalidade: Modality
|
|
47
|
+
razao_social: Company name
|
|
48
|
+
cpf_cnpj: CNPJ
|
|
49
|
+
endereco: Address
|
|
50
|
+
carteira: Carteira
|
|
51
|
+
agencia: Agency
|
|
52
|
+
agencia_dv: DV Agency
|
|
53
|
+
conta_corrente: Conta corrente
|
|
54
|
+
conta_corrente_dv: DV Conta corrente
|
|
55
|
+
convenio: Convênio
|
|
56
|
+
convenio_dv: Dígito do convênio
|
|
57
|
+
codigo_cedente: Código do cedente
|
|
58
|
+
codigo_cedente_dv: Dígito código cedente
|
|
59
|
+
nome_banco: Nome do banco
|
|
60
|
+
br_boleto/remessa/pagamento:
|
|
61
|
+
nosso_numero: Nosso número
|
|
62
|
+
numero_documento: Número do documento
|
|
63
|
+
data_vencimento: Data de vencimento
|
|
64
|
+
data_emissao: Data emissão
|
|
65
|
+
valor_documento: Valor do documento
|
|
66
|
+
tipo_impressao: Tipo de impressão
|
|
67
|
+
cod_primeira_instrucao: Cód. 1ª instrução
|
|
68
|
+
cod_segunda_instrucao: Cód. 2ª instrução
|
|
69
|
+
valor_mora: Valor mora
|
|
70
|
+
data_desconto: Data do desconto
|
|
71
|
+
valor_desconto: Valor de desconto
|
|
72
|
+
cod_desconto: Código de desconto
|
|
73
|
+
valor_iof: Valor IOF
|
|
74
|
+
valor_abatimento: Valor de abatimento
|
|
75
|
+
desconto_2_codigo: Código do 2° desconto
|
|
76
|
+
desconto_3_codigo: Código do 3° desconto
|
|
77
|
+
codigo_multa: Código da multa
|
|
78
|
+
valor_multa: Valor da multa
|
|
79
|
+
codigo_juros: Cpodigo do juros
|
|
80
|
+
valor_juros: Valor do juros
|
|
81
|
+
parcela: Parcela
|
|
82
|
+
tipo_emissao: Tipo de emissão
|
|
83
|
+
identificacao_ocorrencia: ID Ocorrência
|
|
84
|
+
especie_titulo: Espécie do título
|
|
85
|
+
aceite: Aceite
|
|
86
|
+
codigo_moeda: Código moeda
|
|
87
|
+
forma_cadastramento: Forma de cadastramento
|
|
88
|
+
emissao_boleto: Emissão do boleto
|
|
89
|
+
distribuicao_boleto: Tipo de distribuição do boleto
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
pt-BR:
|
|
2
|
+
activemodel:
|
|
3
|
+
errors:
|
|
4
|
+
messages:
|
|
5
|
+
custom_length_maximum:
|
|
6
|
+
one: "deve ter no máximo 1 dígito"
|
|
7
|
+
other: "deve ter no máximo %{count} dígitos"
|
|
8
|
+
custom_length_minimum:
|
|
9
|
+
one: "deve ter no mínimo 1 dígito"
|
|
10
|
+
other: "deve ter no mínimo %{count} dígitos"
|
|
11
|
+
custom_length_is:
|
|
12
|
+
one: "deve ter 1 dígito"
|
|
13
|
+
other: "deve ter %{count} dígitos"
|
|
14
|
+
custom_inclusion: 'deve conter um dos valores a seguir: %{list}'
|
|
15
|
+
at_least_one: deve ter no mínimo 1
|
|
16
|
+
attributes:
|
|
17
|
+
br_boleto/pagador:
|
|
18
|
+
nome: Nome
|
|
19
|
+
cpf_cnpj: 'CPF/CNPJ'
|
|
20
|
+
endereco: Rua
|
|
21
|
+
bairro: Bairro
|
|
22
|
+
cep: CEP
|
|
23
|
+
cidade: Cidade
|
|
24
|
+
uf: UF
|
|
25
|
+
nome_avalista: Avalista
|
|
26
|
+
documento_avalista: CPF/CNPJ Avalista
|
|
27
|
+
br_boleto/boleto/base:
|
|
28
|
+
data_vencimento: Vencimento
|
|
29
|
+
numero_documento: Número do documento
|
|
30
|
+
valor_documento: Valor
|
|
31
|
+
conta_corrente: Conta corrente
|
|
32
|
+
codigo_moeda: Código da moeda
|
|
33
|
+
especie: Espécie
|
|
34
|
+
especie_documento: Espécie Doc.
|
|
35
|
+
data_documento: Data do documento
|
|
36
|
+
local_pagamento: Local de pagamento
|
|
37
|
+
aceite: Aceite
|
|
38
|
+
instrucoes1: Mensagem 1
|
|
39
|
+
instrucoes2: Mensagem 2
|
|
40
|
+
instrucoes3: Mensagem 3
|
|
41
|
+
instrucoes4: Mensagem 4
|
|
42
|
+
instrucoes5: Mensagem 5
|
|
43
|
+
instrucoes6: Mensagem 6
|
|
44
|
+
parcelas: Parcelas
|
|
45
|
+
br_boleto/conta/base:
|
|
46
|
+
modalidade: Modalidade
|
|
47
|
+
razao_social: Razão social
|
|
48
|
+
cpf_cnpj: CNPJ
|
|
49
|
+
endereco: Endereço
|
|
50
|
+
carteira: Carteira
|
|
51
|
+
agencia: Agência
|
|
52
|
+
agencia_dv: DV Agência
|
|
53
|
+
conta_corrente: Conta corrente
|
|
54
|
+
conta_corrente_dv: DV Conta corrente
|
|
55
|
+
convenio: Convênio
|
|
56
|
+
convenio_dv: Dígito do convênio
|
|
57
|
+
codigo_cedente: Código do cedente
|
|
58
|
+
codigo_cedente_dv: Dígito código cedente
|
|
59
|
+
nome_banco: Nome do banco
|
|
60
|
+
br_boleto/remessa/pagamento:
|
|
61
|
+
nosso_numero: Nosso número
|
|
62
|
+
numero_documento: Número do documento
|
|
63
|
+
data_vencimento: Data de vencimento
|
|
64
|
+
data_emissao: Data emissão
|
|
65
|
+
valor_documento: Valor do documento
|
|
66
|
+
tipo_impressao: Tipo de impressão
|
|
67
|
+
cod_primeira_instrucao: Cód. 1ª instrução
|
|
68
|
+
cod_segunda_instrucao: Cód. 2ª instrução
|
|
69
|
+
valor_mora: Valor mora
|
|
70
|
+
data_desconto: Data do desconto
|
|
71
|
+
valor_desconto: Valor de desconto
|
|
72
|
+
cod_desconto: Código de desconto
|
|
73
|
+
valor_iof: Valor IOF
|
|
74
|
+
valor_abatimento: Valor de abatimento
|
|
75
|
+
desconto_2_codigo: Código do 2° desconto
|
|
76
|
+
desconto_3_codigo: Código do 3° desconto
|
|
77
|
+
codigo_multa: Código da multa
|
|
78
|
+
valor_multa: Valor da multa
|
|
79
|
+
codigo_juros: Cpodigo do juros
|
|
80
|
+
valor_juros: Valor do juros
|
|
81
|
+
parcela: Parcela
|
|
82
|
+
tipo_emissao: Tipo de emissão
|
|
83
|
+
identificacao_ocorrencia: ID Ocorrência
|
|
84
|
+
especie_titulo: Espécie do título
|
|
85
|
+
aceite: Aceite
|
|
86
|
+
codigo_moeda: Código moeda
|
|
87
|
+
forma_cadastramento: Forma de cadastramento
|
|
88
|
+
emissao_boleto: Emissão do boleto
|
|
89
|
+
distribuicao_boleto: Tipo de distribuição do boleto
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class HaveContaTest < BrBoleto::ActiveModelBase
|
|
4
|
+
include BrBoleto::HaveConta
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe BrBoleto::HaveConta do
|
|
8
|
+
subject { HaveContaTest.new(conta: {agencia_dv: 1, agencia: '1235', razao_social: 'Razao', cpf_cnpj: '12345678901'}) }
|
|
9
|
+
|
|
10
|
+
before { HaveContaTest.any_instance.stubs(:conta_class).returns(BrBoleto::Conta::Base) }
|
|
11
|
+
|
|
12
|
+
it "Sempre deve vir instanciado um objeto da classe definida em conta_class" do
|
|
13
|
+
subject.conta.must_be_kind_of BrBoleto::Conta::Base
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "se setar outro objeto que não seja da class definida em conta_class deve ignorar e instanciar a classe correta" do
|
|
17
|
+
HaveContaTest.any_instance.stubs(:conta_class).returns(String)
|
|
18
|
+
have_conta = HaveContaTest.new
|
|
19
|
+
have_conta.conta = 123
|
|
20
|
+
have_conta.conta.must_equal ''
|
|
21
|
+
have_conta.conta = '123'
|
|
22
|
+
have_conta.conta.must_equal '123'
|
|
23
|
+
|
|
24
|
+
have_conta.stubs(:conta_class).returns(Array)
|
|
25
|
+
have_conta.conta = '123'
|
|
26
|
+
have_conta.conta.must_equal []
|
|
27
|
+
have_conta.conta = [123]
|
|
28
|
+
have_conta.conta.must_equal [123]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
it "Deve ser possivel inicializar o objeto passando a conta como bloco" do
|
|
32
|
+
result = HaveContaTest.new do |hav|
|
|
33
|
+
hav.conta do |co|
|
|
34
|
+
co.razao_social = 'Empresa banco'
|
|
35
|
+
co.cpf_cnpj = '074.554.663-87'
|
|
36
|
+
co.agencia = '6695'
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
result.conta.razao_social.must_equal 'Empresa banco'
|
|
40
|
+
result.conta.cpf_cnpj.must_equal '07455466387'
|
|
41
|
+
result.conta.agencia.must_equal '6695'
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "Deve ser possivel editar a conta com um bloco" do
|
|
45
|
+
subject.conta.razao_social = 'razao_1'
|
|
46
|
+
subject.conta do |co|
|
|
47
|
+
co.razao_social = 'razao_2'
|
|
48
|
+
co.agencia = '0456'
|
|
49
|
+
end
|
|
50
|
+
subject.conta.razao_social.must_equal 'razao_2'
|
|
51
|
+
subject.conta.agencia.must_equal '0456'
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "Deve ser possivel inicializar o objeto passando a conta como hash" do
|
|
55
|
+
result = HaveContaTest.new({
|
|
56
|
+
conta: {
|
|
57
|
+
razao_social: 'Empresa banco',
|
|
58
|
+
cpf_cnpj: '074.554.663-87',
|
|
59
|
+
agencia: '3456',
|
|
60
|
+
}
|
|
61
|
+
})
|
|
62
|
+
result.conta.razao_social.must_equal 'Empresa banco'
|
|
63
|
+
result.conta.cpf_cnpj.must_equal '07455466387'
|
|
64
|
+
result.conta.agencia.must_equal '3456'
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "Deve ser possivel editar a conta com um hash" do
|
|
68
|
+
subject.conta.cpf_cnpj = '12345678901'
|
|
69
|
+
subject.conta.razao_social = 'razao_1'
|
|
70
|
+
subject.conta = {
|
|
71
|
+
razao_social: 'razao_2',
|
|
72
|
+
agencia: '1234',
|
|
73
|
+
}
|
|
74
|
+
subject.conta.razao_social.must_equal 'razao_2'
|
|
75
|
+
subject.conta.agencia.must_equal '1234'
|
|
76
|
+
subject.conta.cpf_cnpj.must_equal '12345678901'
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it "#conta_class deve ser implementada nas subclasses" do
|
|
80
|
+
HaveContaTest.any_instance.unstub(:conta_class)
|
|
81
|
+
assert_raises NotImplementedError do
|
|
82
|
+
subject.conta_class
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "por padrão nao deve validar nada" do
|
|
87
|
+
wont_be_message_error(:base)
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
it 'Validação para conta_corrente' do
|
|
91
|
+
subject.stubs(:valid_conta_corrente_length).returns (5)
|
|
92
|
+
subject.stubs(:valid_conta_corrente_minimum).returns (5)
|
|
93
|
+
subject.stubs(:valid_conta_corrente_maximum).returns (5)
|
|
94
|
+
subject.stubs(:valid_conta_corrente_required).returns(true)
|
|
95
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:conta_corrente)} #{get_message(:blank, {})}")
|
|
96
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:conta_corrente)} #{get_message(:custom_length_is, {count: 5}) }")
|
|
97
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:conta_corrente)} #{get_message(:custom_length_minimum, {count: 5}) }")
|
|
98
|
+
subject.conta.conta_corrente = '123456'
|
|
99
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:conta_corrente)} #{get_message(:custom_length_maximum, {count: 5}) }")
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it 'Validação para modalidade' do
|
|
103
|
+
subject.stubs(:valid_modalidade_length).returns (5)
|
|
104
|
+
subject.stubs(:valid_modalidade_minimum).returns (5)
|
|
105
|
+
subject.stubs(:valid_modalidade_maximum).returns (5)
|
|
106
|
+
subject.stubs(:valid_modalidade_required).returns (true)
|
|
107
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:modalidade)} #{get_message(:blank, {})}")
|
|
108
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:modalidade)} #{get_message(:custom_length_is, {count: 5}) }")
|
|
109
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:modalidade)} #{get_message(:custom_length_minimum, {count: 5}) }")
|
|
110
|
+
subject.conta.modalidade = '123456'
|
|
111
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:modalidade)} #{get_message(:custom_length_maximum, {count: 5}) }")
|
|
112
|
+
|
|
113
|
+
subject.stubs(:valid_modalidade_inclusion).returns(['50','60'])
|
|
114
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:modalidade)} #{get_message(:custom_inclusion, {list: '50, 60'}) }")
|
|
115
|
+
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
it 'Validação para codigo_cedente (convênio)' do
|
|
119
|
+
subject.stubs(:valid_codigo_cedente_length).returns (5)
|
|
120
|
+
subject.stubs(:valid_codigo_cedente_minimum).returns (5)
|
|
121
|
+
subject.stubs(:valid_codigo_cedente_maximum).returns (5)
|
|
122
|
+
subject.stubs(:valid_codigo_cedente_required).returns(true)
|
|
123
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:blank, {})}")
|
|
124
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_is, {count: 5}) }")
|
|
125
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_minimum, {count: 5}) }")
|
|
126
|
+
subject.conta.codigo_cedente = '123456'
|
|
127
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_maximum, {count: 5}) }")
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it 'Validação para endereco' do
|
|
131
|
+
subject.stubs(:valid_endereco_required).returns(true)
|
|
132
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:endereco)} #{get_message(:blank, {})}")
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it 'Validação para carteira' do
|
|
136
|
+
subject.stubs(:valid_carteira_length).returns (5)
|
|
137
|
+
subject.stubs(:valid_carteira_minimum).returns (5)
|
|
138
|
+
subject.stubs(:valid_carteira_maximum).returns (5)
|
|
139
|
+
subject.stubs(:valid_carteira_required).returns (true)
|
|
140
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:carteira)} #{get_message(:blank, {})}")
|
|
141
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:carteira)} #{get_message(:custom_length_is, {count: 5}) }")
|
|
142
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:carteira)} #{get_message(:custom_length_minimum, {count: 5}) }")
|
|
143
|
+
subject.conta.carteira = '123456'
|
|
144
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:carteira)} #{get_message(:custom_length_maximum, {count: 5}) }")
|
|
145
|
+
|
|
146
|
+
subject.stubs(:valid_carteira_inclusion).returns(['50','60'])
|
|
147
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:carteira)} #{get_message(:custom_inclusion, {list: '50, 60'}) }")
|
|
148
|
+
end
|
|
149
|
+
|
|
150
|
+
it 'Validação para convenio' do
|
|
151
|
+
subject.stubs(:valid_convenio_length).returns (5)
|
|
152
|
+
subject.stubs(:valid_convenio_minimum).returns (5)
|
|
153
|
+
subject.stubs(:valid_convenio_maximum).returns (5)
|
|
154
|
+
subject.stubs(:valid_convenio_required).returns (true)
|
|
155
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:blank, {})}")
|
|
156
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_is, {count: 5}) }")
|
|
157
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_minimum, {count: 5}) }")
|
|
158
|
+
subject.conta.convenio = '123456'
|
|
159
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_maximum, {count: 5}) }")
|
|
160
|
+
|
|
161
|
+
subject.stubs(:valid_convenio_inclusion).returns(['50','60'])
|
|
162
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_inclusion, {list: '50, 60'}) }")
|
|
163
|
+
end
|
|
164
|
+
|
|
165
|
+
|
|
166
|
+
context "o valor setado nas validações devem obedecer a classe que inclui a conta. Mesmo que a conta tenha uma validação diferente" do
|
|
167
|
+
before do
|
|
168
|
+
subject.conta.valid_conta_corrente_length = 2
|
|
169
|
+
subject.conta.valid_conta_corrente_minimum = 3
|
|
170
|
+
subject.conta.valid_conta_corrente_maximum = 4
|
|
171
|
+
subject.conta.valid_conta_corrente_required = false
|
|
172
|
+
subject.conta.valid_modalidade_length = 6
|
|
173
|
+
subject.conta.valid_modalidade_minimum = 7
|
|
174
|
+
subject.conta.valid_modalidade_maximum = 8
|
|
175
|
+
subject.conta.valid_modalidade_required = true
|
|
176
|
+
subject.conta.valid_endereco_required = false
|
|
177
|
+
subject.conta.valid_carteira_length = 15
|
|
178
|
+
subject.conta.valid_carteira_minimum = 16
|
|
179
|
+
subject.conta.valid_carteira_maximum = 17
|
|
180
|
+
subject.conta.valid_carteira_required = false
|
|
181
|
+
subject.conta.valid_convenio_length = 19
|
|
182
|
+
subject.conta.valid_convenio_minimum = 20
|
|
183
|
+
subject.conta.valid_convenio_maximum = 21
|
|
184
|
+
subject.conta.valid_convenio_required = false
|
|
185
|
+
|
|
186
|
+
subject.conta.valid_modalidade_inclusion = ['10','20']
|
|
187
|
+
subject.conta.valid_carteira_inclusion = ['10','20']
|
|
188
|
+
subject.conta.valid_convenio_inclusion = ['10','20']
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
context "Se os metodos do objeto que temm a conta tiverem valor nos seus metodos deve permanecer esses valores" do
|
|
192
|
+
it '#conta_corrente' do
|
|
193
|
+
subject.stubs(:valid_conta_corrente_length).returns (13)
|
|
194
|
+
subject.stubs(:valid_conta_corrente_minimum).returns (14)
|
|
195
|
+
subject.stubs(:valid_conta_corrente_maximum).returns (15)
|
|
196
|
+
subject.stubs(:valid_conta_corrente_required).returns(true)
|
|
197
|
+
|
|
198
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:conta_corrente)} #{get_message(:blank, {})}")
|
|
199
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:conta_corrente)} #{get_message(:custom_length_is, {count: 13}) }")
|
|
200
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:conta_corrente)} #{get_message(:custom_length_minimum, {count: 14}) }")
|
|
201
|
+
subject.conta.conta_corrente = '1'.rjust(16, '0')
|
|
202
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:conta_corrente)} #{get_message(:custom_length_maximum, {count: 15}) }")
|
|
203
|
+
end
|
|
204
|
+
it '#modalidade' do
|
|
205
|
+
subject.stubs(:valid_modalidade_length).returns (16)
|
|
206
|
+
subject.stubs(:valid_modalidade_minimum).returns (17)
|
|
207
|
+
subject.stubs(:valid_modalidade_maximum).returns (18)
|
|
208
|
+
subject.stubs(:valid_modalidade_required).returns (false)
|
|
209
|
+
subject.stubs(:valid_modalidade_inclusion).returns ['30','40']
|
|
210
|
+
|
|
211
|
+
wont_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:modalidade)} #{get_message(:blank, {})}")
|
|
212
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:modalidade)} #{get_message(:custom_length_is, {count: 16}) }")
|
|
213
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:modalidade)} #{get_message(:custom_length_minimum, {count: 17}) }")
|
|
214
|
+
subject.conta.modalidade = '1'.rjust(19, '0')
|
|
215
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:modalidade)} #{get_message(:custom_length_maximum, {count: 18}) }")
|
|
216
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:modalidade)} #{get_message(:custom_inclusion, {list: '30, 40'}) }")
|
|
217
|
+
end
|
|
218
|
+
it '#codigo_cedente (convênio)' do
|
|
219
|
+
subject.stubs(:valid_codigo_cedente_length).returns (19)
|
|
220
|
+
subject.stubs(:valid_codigo_cedente_minimum).returns (20)
|
|
221
|
+
subject.stubs(:valid_codigo_cedente_maximum).returns (21)
|
|
222
|
+
subject.stubs(:valid_codigo_cedente_required).returns(false)
|
|
223
|
+
|
|
224
|
+
wont_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:blank, {})}")
|
|
225
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_is, {count: 19}) }")
|
|
226
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_minimum, {count: 20}) }")
|
|
227
|
+
subject.conta.codigo_cedente = '1'.rjust(22, '0')
|
|
228
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_maximum, {count: 21}) }")
|
|
229
|
+
end
|
|
230
|
+
it '#endereco' do
|
|
231
|
+
subject.stubs(:valid_endereco_required).returns(true)
|
|
232
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:endereco)} #{get_message(:blank, {})}")
|
|
233
|
+
end
|
|
234
|
+
it '#carteira' do
|
|
235
|
+
subject.stubs(:valid_carteira_length).returns (22)
|
|
236
|
+
subject.stubs(:valid_carteira_minimum).returns (23)
|
|
237
|
+
subject.stubs(:valid_carteira_maximum).returns (24)
|
|
238
|
+
subject.stubs(:valid_carteira_required).returns (true)
|
|
239
|
+
subject.stubs(:valid_carteira_inclusion).returns ['30','40']
|
|
240
|
+
|
|
241
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:carteira)} #{get_message(:blank, {})}")
|
|
242
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:carteira)} #{get_message(:custom_length_is, {count: 22}) }")
|
|
243
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:carteira)} #{get_message(:custom_length_minimum, {count: 23}) }")
|
|
244
|
+
subject.conta.carteira = '1'.rjust(25, '0')
|
|
245
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:carteira)} #{get_message(:custom_length_maximum, {count: 24}) }")
|
|
246
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:carteira)} #{get_message(:custom_inclusion, {list: '30, 40'}) }")
|
|
247
|
+
end
|
|
248
|
+
it '#convenio' do
|
|
249
|
+
subject.stubs(:valid_convenio_length).returns (25)
|
|
250
|
+
subject.stubs(:valid_convenio_minimum).returns (26)
|
|
251
|
+
subject.stubs(:valid_convenio_maximum).returns (27)
|
|
252
|
+
subject.stubs(:valid_convenio_required).returns (true)
|
|
253
|
+
subject.stubs(:valid_convenio_inclusion).returns ['30','40']
|
|
254
|
+
|
|
255
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:blank, {})}")
|
|
256
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_is, {count: 25}) }")
|
|
257
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_minimum, {count: 26}) }")
|
|
258
|
+
subject.conta.convenio = '1'.rjust(28, '0')
|
|
259
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_maximum, {count: 27}) }")
|
|
260
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_inclusion, {list: '30, 40'}) }")
|
|
261
|
+
end
|
|
262
|
+
end
|
|
263
|
+
|
|
264
|
+
context "Deve considerar as validações setadas na conta se não houver os metodos sobrescritos no objeto que tem a conta" do
|
|
265
|
+
it '#conta_corrente' do
|
|
266
|
+
wont_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:conta_corrente)} #{get_message(:blank, {})}")
|
|
267
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:conta_corrente)} #{get_message(:custom_length_is, {count: 2}) }")
|
|
268
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:conta_corrente)} #{get_message(:custom_length_minimum, {count: 3}) }")
|
|
269
|
+
subject.conta.conta_corrente = '1'.rjust(16, '0')
|
|
270
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:conta_corrente)} #{get_message(:custom_length_maximum, {count: 4}) }")
|
|
271
|
+
end
|
|
272
|
+
|
|
273
|
+
it '#modalidade' do
|
|
274
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:modalidade)} #{get_message(:blank, {})}")
|
|
275
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:modalidade)} #{get_message(:custom_length_is, {count: 6}) }")
|
|
276
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:modalidade)} #{get_message(:custom_length_minimum, {count: 7}) }")
|
|
277
|
+
subject.conta.modalidade = '1'.rjust(19, '0')
|
|
278
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:modalidade)} #{get_message(:custom_length_maximum, {count: 8}) }")
|
|
279
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:modalidade)} #{get_message(:custom_inclusion, {list: '10, 20'}) }")
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
it '#codigo_cedente (convenio)' do
|
|
283
|
+
subject.conta.valid_codigo_cedente_length = 10
|
|
284
|
+
subject.conta.valid_codigo_cedente_minimum = 11
|
|
285
|
+
subject.conta.valid_codigo_cedente_maximum = 12
|
|
286
|
+
subject.conta.valid_codigo_cedente_required = true
|
|
287
|
+
|
|
288
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:blank, {})}")
|
|
289
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_is, {count: 10}) }")
|
|
290
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_minimum, {count: 11}) }")
|
|
291
|
+
subject.conta.codigo_cedente = '1'.rjust(22, '0')
|
|
292
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_maximum, {count: 12}) }")
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
it '#endereco' do
|
|
296
|
+
wont_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:endereco)} #{get_message(:blank, {})}")
|
|
297
|
+
end
|
|
298
|
+
|
|
299
|
+
it '#carteira' do
|
|
300
|
+
wont_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:carteira)} #{get_message(:blank, {})}")
|
|
301
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:carteira)} #{get_message(:custom_length_is, {count: 15}) }")
|
|
302
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:carteira)} #{get_message(:custom_length_minimum, {count: 16}) }")
|
|
303
|
+
subject.conta.carteira = '1'.rjust(25, '0')
|
|
304
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:carteira)} #{get_message(:custom_length_maximum, {count: 17}) }")
|
|
305
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:carteira)} #{get_message(:custom_inclusion, {list: '10, 20'}) }")
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
it '#convenio' do
|
|
309
|
+
wont_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:blank, {})}")
|
|
310
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_is, {count: 19}) }")
|
|
311
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_minimum, {count: 20}) }")
|
|
312
|
+
subject.conta.convenio = '1'.rjust(28, '0')
|
|
313
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_length_maximum, {count: 21}) }")
|
|
314
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Base.human_attribute_name(:convenio)} #{get_message(:custom_inclusion, {list: '10, 20'}) }")
|
|
315
|
+
end
|
|
316
|
+
|
|
317
|
+
end
|
|
318
|
+
end
|
|
319
|
+
end
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
class HavePagadorTest < BrBoleto::ActiveModelBase
|
|
4
|
+
include BrBoleto::HavePagador
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
describe BrBoleto::HavePagador do
|
|
8
|
+
subject { HavePagadorTest.new(pagador: {nome: 'Razão social', cpf_cnpj: '12345678901'}) }
|
|
9
|
+
|
|
10
|
+
it "por padrão nao deve validar nada" do
|
|
11
|
+
wont_be_message_error(:base)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
it "Sempre deve vir instanciado um objeto da classe definida em pagador_class" do
|
|
15
|
+
subject.pagador.must_be_kind_of BrBoleto::Pagador
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
it "se setar outro objeto que não seja da class definida em pagador_class deve ignorar e instanciar a classe correta" do
|
|
19
|
+
HavePagadorTest.any_instance.stubs(:pagador_class).returns(String)
|
|
20
|
+
have_pag = HavePagadorTest.new
|
|
21
|
+
have_pag.pagador = 123
|
|
22
|
+
have_pag.pagador.must_equal ''
|
|
23
|
+
have_pag.pagador = '123'
|
|
24
|
+
have_pag.pagador.must_equal '123'
|
|
25
|
+
|
|
26
|
+
have_pag.stubs(:pagador_class).returns(Array)
|
|
27
|
+
have_pag.pagador = '123'
|
|
28
|
+
have_pag.pagador.must_equal []
|
|
29
|
+
have_pag.pagador = [123]
|
|
30
|
+
have_pag.pagador.must_equal [123]
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "Deve ser possivel inicializar o objeto passando a pagador como bloco" do
|
|
34
|
+
result = HavePagadorTest.new do |hav|
|
|
35
|
+
hav.pagador do |co|
|
|
36
|
+
co.nome = 'Empresa banco'
|
|
37
|
+
co.cpf_cnpj = '074.554.663-87'
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
result.pagador.nome.must_equal 'Empresa banco'
|
|
41
|
+
result.pagador.cpf_cnpj.must_equal '07455466387'
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "Deve ser possivel editar a pagador com um bloco" do
|
|
45
|
+
subject.pagador.nome = 'razao_1'
|
|
46
|
+
subject.pagador do |co|
|
|
47
|
+
co.nome = 'razao_2'
|
|
48
|
+
co.cep = '456'
|
|
49
|
+
end
|
|
50
|
+
subject.pagador.nome.must_equal 'razao_2'
|
|
51
|
+
subject.pagador.cep.must_equal '456'
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "Deve ser possivel inicializar o objeto passando a pagador como hash" do
|
|
55
|
+
result = HavePagadorTest.new({
|
|
56
|
+
pagador: {
|
|
57
|
+
nome: 'Empresa banco',
|
|
58
|
+
cpf_cnpj: '074.554.663-87',
|
|
59
|
+
endereco: '456',
|
|
60
|
+
}
|
|
61
|
+
})
|
|
62
|
+
result.pagador.nome.must_equal 'Empresa banco'
|
|
63
|
+
result.pagador.cpf_cnpj.must_equal '07455466387'
|
|
64
|
+
result.pagador.endereco.must_equal '456'
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it "Deve ser possivel editar a pagador com um hash" do
|
|
68
|
+
subject.pagador.cpf_cnpj = '12345678901'
|
|
69
|
+
subject.pagador.nome = 'razao_1'
|
|
70
|
+
subject.pagador = {
|
|
71
|
+
nome: 'razao_2',
|
|
72
|
+
endereco: '456',
|
|
73
|
+
}
|
|
74
|
+
subject.pagador.nome.must_equal 'razao_2'
|
|
75
|
+
subject.pagador.endereco.must_equal '456'
|
|
76
|
+
subject.pagador.cpf_cnpj.must_equal '12345678901'
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it 'Validação para endereco' do
|
|
80
|
+
subject.stubs(:valid_endereco_required).returns(true)
|
|
81
|
+
must_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:endereco)} #{get_message(:blank, {})}")
|
|
82
|
+
must_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:bairro)} #{get_message(:blank, {})}")
|
|
83
|
+
must_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:cep)} #{get_message(:blank, {})}")
|
|
84
|
+
must_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:cidade)} #{get_message(:blank, {})}")
|
|
85
|
+
must_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:uf)} #{get_message(:blank, {})}")
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
context "o valor setado nas validações devem obedecer a classe que inclui a pagador. Mesmo que a pagador tenha uma validação diferente" do
|
|
89
|
+
before do
|
|
90
|
+
subject.pagador.valid_endereco_required = true
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it "Se os metodos do objeto que temm a pagador tiverem valor nos seus metodos deve permanecer esses valores" do
|
|
94
|
+
subject.stubs(:valid_endereco_required).returns(false)
|
|
95
|
+
wont_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:endereco)} #{get_message(:blank, {})}")
|
|
96
|
+
wont_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:bairro)} #{get_message(:blank, {})}")
|
|
97
|
+
wont_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:cep)} #{get_message(:blank, {})}")
|
|
98
|
+
wont_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:cidade)} #{get_message(:blank, {})}")
|
|
99
|
+
wont_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:uf)} #{get_message(:blank, {})}")
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it "Deve considerar as validações setadas na pagador se não houver os metodos sobrescritos no objeto que tem a pagador" do
|
|
103
|
+
must_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:endereco)} #{get_message(:blank, {})}")
|
|
104
|
+
must_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:bairro)} #{get_message(:blank, {})}")
|
|
105
|
+
must_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:cep)} #{get_message(:blank, {})}")
|
|
106
|
+
must_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:cidade)} #{get_message(:blank, {})}")
|
|
107
|
+
must_be_message_error(:base, "#{BrBoleto::Pagador.human_attribute_name(:uf)} #{get_message(:blank, {})}")
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|