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
|
@@ -10,108 +10,73 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
context "validations" do
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
it { must validate_length_of(:versao_aplicativo).is_at_most(4).with_message("deve ter no máximo 4 dígitos.") }
|
|
20
|
-
it { must validate_length_of(:agencia ).is_at_most(5).with_message("deve ter no máximo 5 dígitos.") }
|
|
21
|
-
it { must validate_length_of(:modalidade_carteira).is_equal_to(2).with_message("deve ter 2 dígitos.") }
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
describe "#default_values" do
|
|
25
|
-
it "for emissao_boleto" do
|
|
26
|
-
object = subject.class.new()
|
|
27
|
-
object.emissao_boleto.must_equal '2'
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
it "for distribuicao_boleto" do
|
|
31
|
-
object = subject.class.new()
|
|
32
|
-
object.distribuicao_boleto.must_equal '2'
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it "for especie_titulo" do
|
|
36
|
-
object = subject.class.new()
|
|
37
|
-
object.especie_titulo.must_equal '02'
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it "for modalidade_carteira" do
|
|
41
|
-
object = subject.class.new()
|
|
42
|
-
object.modalidade_carteira.must_equal '14'
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
it "for forma_cadastramento" do
|
|
46
|
-
object = subject.class.new()
|
|
47
|
-
object.forma_cadastramento.must_equal '0'
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
it "for versao_aplicativo" do
|
|
51
|
-
object = subject.class.new()
|
|
52
|
-
object.instance_variable_get(:@versao_aplicativo).must_equal '0'
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
it "for codigo_carteira" do
|
|
56
|
-
object = subject.class.new()
|
|
57
|
-
object.codigo_carteira.must_equal '1'
|
|
58
|
-
end
|
|
13
|
+
describe 'Validações personalizadas da conta' do
|
|
14
|
+
it 'valid_carteira_required' do
|
|
15
|
+
# subject.send(:valid_carteira_required).must_equal true
|
|
16
|
+
subject.conta.carteira = ''
|
|
17
|
+
conta_must_be_msg_error(:carteira, :blank)
|
|
18
|
+
end
|
|
59
19
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
20
|
+
it 'valid_carteira_length' do
|
|
21
|
+
# subject.send(:valid_carteira_length).must_equal 2
|
|
22
|
+
subject.conta.carteira = '1234567890123456'
|
|
23
|
+
conta_must_be_msg_error(:carteira, :custom_length_is, {count: 2})
|
|
64
24
|
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
25
|
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
26
|
+
it 'valid_convenio_required' do
|
|
27
|
+
# subject.send(:valid_convenio_required).must_equal true
|
|
28
|
+
subject.conta.convenio = ''
|
|
29
|
+
conta_must_be_msg_error(:convenio, :blank)
|
|
30
|
+
end
|
|
71
31
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
32
|
+
it 'valid_convenio_length' do
|
|
33
|
+
# subject.send(:valid_convenio_length).must_equal 2
|
|
34
|
+
subject.conta.convenio = '1234567890123456'
|
|
35
|
+
conta_must_be_msg_error(:convenio, :custom_length_maximum, {count: 6})
|
|
36
|
+
end
|
|
75
37
|
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
38
|
+
it 'agencia_required' do
|
|
39
|
+
# subject.send(:agencia_required).must_equal true
|
|
40
|
+
subject.conta.agencia = ''
|
|
41
|
+
conta_must_be_msg_error(:agencia, :blank)
|
|
42
|
+
end
|
|
79
43
|
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
44
|
+
it 'agencia_length' do
|
|
45
|
+
# subject.send(:agencia_length).must_equal 2
|
|
46
|
+
subject.conta.agencia = '1234567890123456'
|
|
47
|
+
conta_must_be_msg_error(:agencia, :custom_length_is, {count: 4})
|
|
48
|
+
end
|
|
83
49
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
50
|
+
it 'versao_aplicativo_required' do
|
|
51
|
+
# subject.send(:versao_aplicativo_required).must_equal true
|
|
52
|
+
subject.conta.versao_aplicativo = ''
|
|
53
|
+
conta_must_be_msg_error(:versao_aplicativo, :blank)
|
|
54
|
+
end
|
|
88
55
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
56
|
+
it 'versao_aplicativo_length' do
|
|
57
|
+
# subject.send(:versao_aplicativo_length).must_equal 2
|
|
58
|
+
subject.conta.versao_aplicativo = '1234567890123456'
|
|
59
|
+
conta_must_be_msg_error(:versao_aplicativo, :custom_length_maximum, {count: 4})
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
private
|
|
92
63
|
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
64
|
+
def conta_must_be_msg_error(attr_validation, msg_key, options_msg={})
|
|
65
|
+
must_be_message_error(:base, "#{BrBoleto::Conta::Caixa.human_attribute_name(attr_validation)} #{get_message(msg_key, options_msg)}")
|
|
66
|
+
end
|
|
96
67
|
end
|
|
97
68
|
end
|
|
98
69
|
|
|
99
|
-
it "o digito_agencia deve calcular o modulo11 de 2 a 9 com resto zero " do
|
|
100
|
-
subject.agencia = '33'
|
|
101
|
-
BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.expects(:new).with('33').returns(1)
|
|
102
|
-
subject.digito_agencia.must_equal '1'
|
|
103
|
-
end
|
|
104
|
-
|
|
105
70
|
it "o codigo_convenio deve ter 20 posições com Zeros" do
|
|
106
71
|
subject.codigo_convenio.must_equal '0' * 20
|
|
107
72
|
end
|
|
108
73
|
|
|
109
74
|
describe "#convenio_lote" do
|
|
110
75
|
it "as 6 primeiras posições deve ser o valor do convenio ajustado com zeros a esquerda" do
|
|
111
|
-
subject.convenio = '88'
|
|
76
|
+
subject.conta.convenio = '88'
|
|
112
77
|
subject.convenio_lote(lote)[0..5].must_equal '000088'
|
|
113
78
|
|
|
114
|
-
subject.convenio = '2878'
|
|
79
|
+
subject.conta.convenio = '2878'
|
|
115
80
|
subject.convenio_lote(lote)[0..5].must_equal '002878'
|
|
116
81
|
end
|
|
117
82
|
it "as 14 ultimas posições deve ser tudo Zeros" do
|
|
@@ -129,23 +94,23 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
|
129
94
|
end
|
|
130
95
|
|
|
131
96
|
it "1 - Primeira parte = agencia 5 posicoes - ajustados com zeros a esquerda" do
|
|
132
|
-
subject.agencia = '123'
|
|
97
|
+
subject.conta.agencia = '123'
|
|
133
98
|
subject.informacoes_da_conta[0..4].must_equal '00123'
|
|
134
99
|
|
|
135
|
-
subject.agencia = '1234'
|
|
100
|
+
subject.conta.agencia = '1234'
|
|
136
101
|
subject.informacoes_da_conta[0..4].must_equal '01234'
|
|
137
102
|
end
|
|
138
103
|
|
|
139
|
-
it "2 - Segunda parte =
|
|
140
|
-
subject.expects(:
|
|
141
|
-
subject.informacoes_da_conta[5].must_equal "&"
|
|
104
|
+
it "2 - Segunda parte = agencia_dv" do
|
|
105
|
+
subject.conta.expects(:agencia_dv).returns("&")
|
|
106
|
+
subject.informacoes_da_conta[5].must_equal "&"
|
|
142
107
|
end
|
|
143
108
|
|
|
144
109
|
it "3 - Terceira parte = convenio 6 posicoes - ajustados com zeros a esquerda" do
|
|
145
|
-
subject.convenio = '123'
|
|
110
|
+
subject.conta.convenio = '123'
|
|
146
111
|
subject.informacoes_da_conta[6..11].must_equal '000123'
|
|
147
112
|
|
|
148
|
-
subject.convenio = '1234'
|
|
113
|
+
subject.conta.convenio = '1234'
|
|
149
114
|
subject.informacoes_da_conta[6..11].must_equal '001234'
|
|
150
115
|
end
|
|
151
116
|
|
|
@@ -154,7 +119,7 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
|
154
119
|
end
|
|
155
120
|
|
|
156
121
|
it "5 - Quinta parte = Exclusivo caixa - Deve ter 1 zero" do
|
|
157
|
-
subject.informacoes_da_conta[19].must_equal('0')
|
|
122
|
+
subject.informacoes_da_conta[19].must_equal('0')
|
|
158
123
|
end
|
|
159
124
|
end
|
|
160
125
|
|
|
@@ -164,10 +129,10 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
|
164
129
|
end
|
|
165
130
|
|
|
166
131
|
it "1 - Primeira parte = versao_aplicativo 4 posicoes - ajustados com zeros a esquerda" do
|
|
167
|
-
subject.versao_aplicativo = '12'
|
|
132
|
+
subject.conta.versao_aplicativo = '12'
|
|
168
133
|
subject.complemento_header_arquivo[0..3].must_equal '0012'
|
|
169
134
|
|
|
170
|
-
subject.versao_aplicativo = '123'
|
|
135
|
+
subject.conta.versao_aplicativo = '123'
|
|
171
136
|
subject.complemento_header_arquivo[0..3].must_equal '0123'
|
|
172
137
|
end
|
|
173
138
|
|
|
@@ -183,10 +148,10 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
|
183
148
|
end
|
|
184
149
|
|
|
185
150
|
it "1 - Primeira parte = convenio com 6 posicoes - ajustados com zeros a esquerda" do
|
|
186
|
-
subject.convenio = '12'
|
|
151
|
+
subject.conta.convenio = '12'
|
|
187
152
|
subject.complemento_p(pagamento)[0..5].must_equal '000012'
|
|
188
153
|
|
|
189
|
-
subject.convenio = '123'
|
|
154
|
+
subject.conta.convenio = '123'
|
|
190
155
|
subject.complemento_p(pagamento)[0..5].must_equal '000123'
|
|
191
156
|
end
|
|
192
157
|
|
|
@@ -195,9 +160,9 @@ describe BrBoleto::Remessa::Cnab240::Caixa do
|
|
|
195
160
|
end
|
|
196
161
|
|
|
197
162
|
it "3 - Terceira parte = Modalidade carteira com 2 posicoes" do
|
|
198
|
-
subject.
|
|
163
|
+
subject.conta.carteira = '14'
|
|
199
164
|
subject.complemento_p(pagamento)[17..18].must_equal '14'
|
|
200
|
-
subject.
|
|
165
|
+
subject.conta.carteira = 'XX'
|
|
201
166
|
subject.complemento_p(pagamento)[17..18].must_equal 'XX'
|
|
202
167
|
end
|
|
203
168
|
|
|
@@ -30,7 +30,7 @@ module Helper
|
|
|
30
30
|
# Por padrão deve retornar o "codigo_banco"
|
|
31
31
|
#
|
|
32
32
|
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_001_a_003
|
|
33
|
-
subject.expects(:codigo_banco).returns("669")
|
|
33
|
+
subject.conta.expects(:codigo_banco).returns("669")
|
|
34
34
|
subject.header_arquivo_posicao_001_a_003.must_equal("669")
|
|
35
35
|
end
|
|
36
36
|
|
|
@@ -63,7 +63,7 @@ module Helper
|
|
|
63
63
|
# retorna o valor do metodo "tipo_inscricao"
|
|
64
64
|
#
|
|
65
65
|
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_018_a_018
|
|
66
|
-
subject.expects(:
|
|
66
|
+
subject.conta.expects(:tipo_cpf_cnpj).with(1).returns("5")
|
|
67
67
|
subject.header_arquivo_posicao_018_a_018.must_equal("5")
|
|
68
68
|
end
|
|
69
69
|
|
|
@@ -72,7 +72,7 @@ module Helper
|
|
|
72
72
|
# Retorna o documento_cedente com 14 posições preenchendo com zeros
|
|
73
73
|
#
|
|
74
74
|
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_019_a_032
|
|
75
|
-
subject.expects(:
|
|
75
|
+
subject.conta.expects(:cpf_cnpj).returns("1234567890")
|
|
76
76
|
subject.header_arquivo_posicao_019_a_032.must_equal("00001234567890")
|
|
77
77
|
end
|
|
78
78
|
|
|
@@ -81,8 +81,8 @@ module Helper
|
|
|
81
81
|
# Deve retornar o valor do metodo "codigo_convenio"
|
|
82
82
|
#
|
|
83
83
|
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_033_a_052
|
|
84
|
-
subject.expects(:codigo_convenio).returns("
|
|
85
|
-
subject.header_arquivo_posicao_033_a_052.must_equal("
|
|
84
|
+
subject.expects(:codigo_convenio).returns("123456789012345")
|
|
85
|
+
subject.header_arquivo_posicao_033_a_052.must_equal("123456789012345 ")
|
|
86
86
|
end
|
|
87
87
|
|
|
88
88
|
# Informações da conta bancária
|
|
@@ -107,8 +107,8 @@ module Helper
|
|
|
107
107
|
# retorna o valor do metodo "nome_empresa_formatada"
|
|
108
108
|
#
|
|
109
109
|
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_073_a_102
|
|
110
|
-
subject.expects(:
|
|
111
|
-
subject.header_arquivo_posicao_073_a_102.must_equal("EMPRESA")
|
|
110
|
+
subject.conta.expects(:razao_social).returns("EMPRESA")
|
|
111
|
+
subject.header_arquivo_posicao_073_a_102.must_equal("EMPRESA".ljust(30, ' '))
|
|
112
112
|
end
|
|
113
113
|
|
|
114
114
|
# Nome do Banco
|
|
@@ -116,8 +116,8 @@ module Helper
|
|
|
116
116
|
# retorna o valor do metodo "nome_banco"
|
|
117
117
|
#
|
|
118
118
|
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_103_a_132
|
|
119
|
-
subject.expects(:nome_banco).returns("nome_banco")
|
|
120
|
-
subject.header_arquivo_posicao_103_a_132.must_equal('nome_banco')
|
|
119
|
+
subject.conta.expects(:nome_banco).returns("nome_banco")
|
|
120
|
+
subject.header_arquivo_posicao_103_a_132.must_equal('nome_banco'.ljust(30, ' '))
|
|
121
121
|
end
|
|
122
122
|
|
|
123
123
|
# Uso Exclusivo FEBRABAN / CNAB
|
|
@@ -168,8 +168,8 @@ module Helper
|
|
|
168
168
|
# Deve pegar o valor contido no metodo "versao_layout_arquivo"
|
|
169
169
|
#
|
|
170
170
|
def test_HeaderArquivoTest_metodo_header_arquivo_posicao_164_a_166
|
|
171
|
-
subject.expects(:
|
|
172
|
-
subject.header_arquivo_posicao_164_a_166.must_equal("
|
|
171
|
+
subject.conta.expects(:versao_layout_arquivo_cnab_240).returns("1")
|
|
172
|
+
subject.header_arquivo_posicao_164_a_166.must_equal("001")
|
|
173
173
|
end
|
|
174
174
|
|
|
175
175
|
# Densidade de Gravação do Arquivo
|
|
@@ -29,7 +29,7 @@ module Helper
|
|
|
29
29
|
# Por padrão deve retornar o "codigo_banco"
|
|
30
30
|
#
|
|
31
31
|
def test_HeaderLoteTest_metodo_header_lote_posicao_001_a_003
|
|
32
|
-
subject.expects(:codigo_banco).returns("669")
|
|
32
|
+
subject.conta.expects(:codigo_banco).returns("669")
|
|
33
33
|
subject.header_lote_posicao_001_a_003.must_equal("669")
|
|
34
34
|
end
|
|
35
35
|
|
|
@@ -78,8 +78,8 @@ module Helper
|
|
|
78
78
|
# Deve pegar o valor do metodo "versao_layout_lote"
|
|
79
79
|
#
|
|
80
80
|
def test_HeaderLoteTest_metodo_header_lote_posicao_014_a_016
|
|
81
|
-
subject.expects(:
|
|
82
|
-
subject.header_lote_posicao_014_a_016.must_equal "
|
|
81
|
+
subject.conta.expects(:versao_layout_lote_cnab_240).returns('56')
|
|
82
|
+
subject.header_lote_posicao_014_a_016.must_equal "056"
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
# Uso Exclusivo da FEBRABAN/CNAB
|
|
@@ -95,8 +95,8 @@ module Helper
|
|
|
95
95
|
# Deve pegar o valor do metodo "tipo_inscricao"
|
|
96
96
|
#
|
|
97
97
|
def test_HeaderLoteTest_metodo_header_lote_posicao_018_a_018
|
|
98
|
-
subject.expects(:
|
|
99
|
-
subject.header_lote_posicao_018_a_018.must_equal '
|
|
98
|
+
subject.conta.expects(:tipo_cpf_cnpj).with(1).returns('3')
|
|
99
|
+
subject.header_lote_posicao_018_a_018.must_equal '3'
|
|
100
100
|
end
|
|
101
101
|
|
|
102
102
|
# Número de Inscrição da Empresa
|
|
@@ -104,7 +104,7 @@ module Helper
|
|
|
104
104
|
# Deve pegar o valor do 'documento_cedente' e ajustar com 0 o espaço em branco
|
|
105
105
|
#
|
|
106
106
|
def test_HeaderLoteTest_metodo_header_lote_posicao_019_a_033
|
|
107
|
-
subject.expects(:
|
|
107
|
+
subject.conta.expects(:cpf_cnpj).returns('1234567890')
|
|
108
108
|
subject.header_lote_posicao_019_a_033.must_equal '000001234567890'
|
|
109
109
|
end
|
|
110
110
|
|
|
@@ -139,8 +139,8 @@ module Helper
|
|
|
139
139
|
# deve retornar o valor do metodo 'nome_empresa_formatada'
|
|
140
140
|
#
|
|
141
141
|
def test_HeaderLoteTest_metodo_header_lote_posicao_074_a_103
|
|
142
|
-
subject.expects(:
|
|
143
|
-
subject.header_lote_posicao_074_a_103.must_equal 'nome_empresa_formatada'
|
|
142
|
+
subject.conta.expects(:razao_social).returns('nome_empresa_formatada')
|
|
143
|
+
subject.header_lote_posicao_074_a_103.must_equal 'nome_empresa_formatada'.ljust(30, ' ')
|
|
144
144
|
end
|
|
145
145
|
|
|
146
146
|
# Mensagem 1
|
|
@@ -49,7 +49,7 @@ module Helper
|
|
|
49
49
|
# Por padrão deve retornar o "codigo_banco"
|
|
50
50
|
#
|
|
51
51
|
def test_SegmentoPTest_metodo_segmento_p_posicao_001_a_003
|
|
52
|
-
subject.expects(:codigo_banco).returns("669")
|
|
52
|
+
subject.conta.expects(:codigo_banco).returns("669")
|
|
53
53
|
subject.segmento_p_posicao_001_a_003.must_equal("669")
|
|
54
54
|
end
|
|
55
55
|
|
|
@@ -112,7 +112,7 @@ module Helper
|
|
|
112
112
|
# Deve pegar a "agencia" e ajustar para 5 caracteres incluindo 0 na frente
|
|
113
113
|
#
|
|
114
114
|
def test_SegmentoPTest_metodo_segmento_p_posicao_018_a_022
|
|
115
|
-
subject.expects(:agencia).returns(89)
|
|
115
|
+
subject.conta.expects(:agencia).returns(89)
|
|
116
116
|
subject.segmento_p_posicao_018_a_022.must_equal '00089'
|
|
117
117
|
end
|
|
118
118
|
|
|
@@ -121,7 +121,7 @@ module Helper
|
|
|
121
121
|
# Deve pegar o "digito_agencia"
|
|
122
122
|
#
|
|
123
123
|
def test_SegmentoPTest_metodo_segmento_p_posicao_023_a_023
|
|
124
|
-
subject.expects(:
|
|
124
|
+
subject.conta.expects(:agencia_dv).returns(1)
|
|
125
125
|
subject.segmento_p_posicao_023_a_023.must_equal '1'
|
|
126
126
|
end
|
|
127
127
|
|
|
@@ -144,7 +144,7 @@ module Helper
|
|
|
144
144
|
# Deve pegar o valor do metodo "codigo_carteira"
|
|
145
145
|
#
|
|
146
146
|
def test_SegmentoPTest_metodo_segmento_p_posicao_058_a_058
|
|
147
|
-
subject.expects(:
|
|
147
|
+
subject.conta.expects(:carteira).returns('3')
|
|
148
148
|
subject.segmento_p_posicao_058_a_058.must_equal '3'
|
|
149
149
|
end
|
|
150
150
|
|
|
@@ -153,8 +153,8 @@ module Helper
|
|
|
153
153
|
# Deve pegar o valor da "forma_cadastramento"
|
|
154
154
|
#
|
|
155
155
|
def test_SegmentoPTest_metodo_segmento_p_posicao_059_a_059
|
|
156
|
-
|
|
157
|
-
subject.segmento_p_posicao_059_a_059.must_equal '
|
|
156
|
+
pagamento.expects(:forma_cadastramento).returns('56')
|
|
157
|
+
subject.segmento_p_posicao_059_a_059(pagamento).must_equal '5'
|
|
158
158
|
end
|
|
159
159
|
|
|
160
160
|
# Tipo de Documento
|
|
@@ -170,8 +170,8 @@ module Helper
|
|
|
170
170
|
# Deve pegar o valor do metodo "emissao_boleto"
|
|
171
171
|
#
|
|
172
172
|
def test_SegmentoPTest_metodo_segmento_p_posicao_061_a_061
|
|
173
|
-
|
|
174
|
-
subject.segmento_p_posicao_061_a_061.must_equal '123'
|
|
173
|
+
pagamento.expects(:emissao_boleto).returns('123')
|
|
174
|
+
subject.segmento_p_posicao_061_a_061(pagamento).must_equal '123'
|
|
175
175
|
end
|
|
176
176
|
|
|
177
177
|
# Identificação da Distribuição
|
|
@@ -179,8 +179,8 @@ module Helper
|
|
|
179
179
|
# Deve pegar o valor do metodo "distribuicao_boleto"
|
|
180
180
|
#
|
|
181
181
|
def test_SegmentoPTest_metodo_segmento_p_posicao_062_a_062
|
|
182
|
-
|
|
183
|
-
subject.segmento_p_posicao_062_a_062.must_equal 'distribuicao_boleto'
|
|
182
|
+
pagamento.expects(:distribuicao_boleto).returns('distribuicao_boleto')
|
|
183
|
+
subject.segmento_p_posicao_062_a_062(pagamento).must_equal 'distribuicao_boleto'
|
|
184
184
|
end
|
|
185
185
|
|
|
186
186
|
# Número do Documento de Cobrança
|
|
@@ -232,8 +232,8 @@ module Helper
|
|
|
232
232
|
# Deve retornar o valro do metodo "especie_titulo"
|
|
233
233
|
#
|
|
234
234
|
def test_SegmentoPTest_metodo_segmento_p_posicao_107_a_108
|
|
235
|
-
|
|
236
|
-
subject.segmento_p_posicao_107_a_108
|
|
235
|
+
pagamento.expects(:especie_titulo).returns('123')
|
|
236
|
+
subject.segmento_p_posicao_107_a_108(pagamento).must_equal '12'
|
|
237
237
|
end
|
|
238
238
|
|
|
239
239
|
# Identific. de Título Aceito/Não Aceito (A ou N)
|
|
@@ -241,8 +241,10 @@ module Helper
|
|
|
241
241
|
# Deve retornar o valor do "aceite"
|
|
242
242
|
#
|
|
243
243
|
def test_SegmentoPTest_metodo_segmento_p_posicao_109_a_109
|
|
244
|
-
|
|
245
|
-
subject.segmento_p_posicao_109_a_109.must_equal '
|
|
244
|
+
pagamento.aceite = true
|
|
245
|
+
subject.segmento_p_posicao_109_a_109(pagamento).must_equal 'A'
|
|
246
|
+
pagamento.aceite = false
|
|
247
|
+
subject.segmento_p_posicao_109_a_109(pagamento).must_equal 'N'
|
|
246
248
|
end
|
|
247
249
|
|
|
248
250
|
# Data da Emissão do Título
|
|
@@ -302,7 +304,7 @@ module Helper
|
|
|
302
304
|
#
|
|
303
305
|
def test_SegmentoPTest_metodo_segmento_p_posicao_142_a_142#(pagamento)
|
|
304
306
|
pagamento.expects(:cod_desconto).returns('123')
|
|
305
|
-
subject.segmento_p_posicao_142_a_142(pagamento).must_equal '
|
|
307
|
+
subject.segmento_p_posicao_142_a_142(pagamento).must_equal '1'
|
|
306
308
|
end
|
|
307
309
|
|
|
308
310
|
# Data do Desconto 1
|
|
@@ -32,7 +32,7 @@ module Helper
|
|
|
32
32
|
# Por padrão deve retornar o "codigo_banco"
|
|
33
33
|
#
|
|
34
34
|
def test_SegmentoQTest_metodo_segmento_q_posicao_001_a_003
|
|
35
|
-
subject.expects(:codigo_banco).returns("669")
|
|
35
|
+
subject.conta.expects(:codigo_banco).returns("669")
|
|
36
36
|
subject.segmento_q_posicao_001_a_003.must_equal("669")
|
|
37
37
|
end
|
|
38
38
|
|
|
@@ -92,7 +92,7 @@ module Helper
|
|
|
92
92
|
# Deve pegar o 'tipo_documento_sacado' com 1 posição
|
|
93
93
|
#
|
|
94
94
|
def test_SegmentoQTest_metodo_segmento_q_posicao_018_a_018#(pagamento)
|
|
95
|
-
pagamento.expects(:
|
|
95
|
+
pagamento.pagador.expects(:tipo_cpf_cnpj).with(1).returns('1')
|
|
96
96
|
subject.segmento_q_posicao_018_a_018(pagamento).must_equal '1'
|
|
97
97
|
end
|
|
98
98
|
|
|
@@ -101,7 +101,7 @@ module Helper
|
|
|
101
101
|
# Deve retornar o "documento_sacado" com 15 posições
|
|
102
102
|
#
|
|
103
103
|
def test_SegmentoQTest_metodo_segmento_q_posicao_019_a_033#(pagamento)
|
|
104
|
-
pagamento.
|
|
104
|
+
pagamento.pagador.cpf_cnpj = 1234567890
|
|
105
105
|
subject.segmento_q_posicao_019_a_033(pagamento).must_equal '000001234567890'
|
|
106
106
|
end
|
|
107
107
|
|
|
@@ -110,7 +110,7 @@ module Helper
|
|
|
110
110
|
# Deve retornar o nome do sacado ajustando para 40 posições
|
|
111
111
|
#
|
|
112
112
|
def test_SegmentoQTest_metodo_segmento_q_posicao_034_a_073#(pagamento)
|
|
113
|
-
pagamento.
|
|
113
|
+
pagamento.pagador.nome = '556698'
|
|
114
114
|
subject.segmento_q_posicao_034_a_073(pagamento).must_equal '556698'.adjust_size_to(40)
|
|
115
115
|
end
|
|
116
116
|
|
|
@@ -119,7 +119,7 @@ module Helper
|
|
|
119
119
|
# Deve pegar o "endereco_sacado" ajsutando para 40 posições
|
|
120
120
|
#
|
|
121
121
|
def test_SegmentoQTest_metodo_segmento_q_posicao_074_a_113#(pagamento)
|
|
122
|
-
pagamento.
|
|
122
|
+
pagamento.pagador.endereco = '111'.rjust(43, '2')
|
|
123
123
|
subject.segmento_q_posicao_074_a_113(pagamento).must_equal ''.rjust(40, '2')
|
|
124
124
|
end
|
|
125
125
|
|
|
@@ -128,7 +128,7 @@ module Helper
|
|
|
128
128
|
# Deve retornar o 'bairro_sacado' com 15 posições
|
|
129
129
|
#
|
|
130
130
|
def test_SegmentoQTest_metodo_segmento_q_posicao_114_a_128#(pagamento)
|
|
131
|
-
pagamento.
|
|
131
|
+
pagamento.pagador.bairro = '50'
|
|
132
132
|
subject.segmento_q_posicao_114_a_128(pagamento).must_equal '50'.adjust_size_to(15)
|
|
133
133
|
end
|
|
134
134
|
|
|
@@ -137,7 +137,7 @@ module Helper
|
|
|
137
137
|
# Deve retornar o CEP com 5 posições
|
|
138
138
|
#
|
|
139
139
|
def test_SegmentoQTest_metodo_segmento_q_posicao_129_a_133#(pagamento)
|
|
140
|
-
pagamento.
|
|
140
|
+
pagamento.pagador.cep = '12345678'
|
|
141
141
|
subject.segmento_q_posicao_129_a_133(pagamento).must_equal '12345'
|
|
142
142
|
end
|
|
143
143
|
|
|
@@ -146,7 +146,7 @@ module Helper
|
|
|
146
146
|
# Deve pegar as ultimas 3 posições do cep
|
|
147
147
|
#
|
|
148
148
|
def test_SegmentoQTest_metodo_segmento_q_posicao_134_a_136#(pagamento)
|
|
149
|
-
pagamento.
|
|
149
|
+
pagamento.pagador.cep = '12345678'
|
|
150
150
|
subject.segmento_q_posicao_134_a_136(pagamento).must_equal '678'
|
|
151
151
|
end
|
|
152
152
|
|
|
@@ -155,7 +155,7 @@ module Helper
|
|
|
155
155
|
# Deve retornar a "cidade_sacado" ajustando para 15 posições
|
|
156
156
|
#
|
|
157
157
|
def test_SegmentoQTest_metodo_segmento_q_posicao_137_a_151#(pagamento)
|
|
158
|
-
pagamento.
|
|
158
|
+
pagamento.pagador.cidade = '5555'
|
|
159
159
|
subject.segmento_q_posicao_137_a_151(pagamento).must_equal '5555'.adjust_size_to(15)
|
|
160
160
|
end
|
|
161
161
|
|
|
@@ -164,7 +164,7 @@ module Helper
|
|
|
164
164
|
# Retorna o UF do sacado
|
|
165
165
|
#
|
|
166
166
|
def test_SegmentoQTest_metodo_segmento_q_posicao_152_a_153#(pagamento)
|
|
167
|
-
pagamento.
|
|
167
|
+
pagamento.pagador.uf = "XX"
|
|
168
168
|
subject.segmento_q_posicao_152_a_153(pagamento).must_equal 'XX'
|
|
169
169
|
end
|
|
170
170
|
|
|
@@ -173,7 +173,7 @@ module Helper
|
|
|
173
173
|
# Deve retornar o "tipo_documento_avalista" com 1 posição do pagamento
|
|
174
174
|
#
|
|
175
175
|
def test_SegmentoQTest_metodo_segmento_q_posicao_154_a_154#(pagamento)
|
|
176
|
-
pagamento.expects(:tipo_documento_avalista).with(1).returns("6")
|
|
176
|
+
pagamento.pagador.expects(:tipo_documento_avalista).with(1).returns("6")
|
|
177
177
|
subject.segmento_q_posicao_154_a_154(pagamento).must_equal '6'
|
|
178
178
|
end
|
|
179
179
|
|
|
@@ -182,7 +182,7 @@ module Helper
|
|
|
182
182
|
# Deve pegar o "documento_avalista" com 15 posições
|
|
183
183
|
#
|
|
184
184
|
def test_SegmentoQTest_metodo_segmento_q_posicao_155_a_169#(pagamento)
|
|
185
|
-
pagamento.expects(:documento_avalista).returns(123)
|
|
185
|
+
pagamento.pagador.expects(:documento_avalista).returns(123)
|
|
186
186
|
subject.segmento_q_posicao_155_a_169(pagamento).must_equal '123'.rjust(15, '0')
|
|
187
187
|
end
|
|
188
188
|
|
|
@@ -191,7 +191,7 @@ module Helper
|
|
|
191
191
|
# Deve retornar o "nome_avalista" ajustando para 40 posições
|
|
192
192
|
#
|
|
193
193
|
def test_SegmentoQTest_metodo_segmento_q_posicao_170_a_209#(pagamento)
|
|
194
|
-
pagamento.expects(:nome_avalista).returns('avalista')
|
|
194
|
+
pagamento.pagador.expects(:nome_avalista).returns('avalista')
|
|
195
195
|
subject.segmento_q_posicao_170_a_209(pagamento).must_equal 'avalista'.adjust_size_to(40)
|
|
196
196
|
end
|
|
197
197
|
|
|
@@ -35,7 +35,7 @@ module Helper
|
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
def test_SegmentoRHelper_deve_ter_240_posicoes
|
|
38
|
-
subject.stubs(:codigo_banco).returns("123")
|
|
38
|
+
subject.conta.stubs(:codigo_banco).returns("123")
|
|
39
39
|
subject.monta_segmento_r(pagamento, 1, 2).size.must_equal 240
|
|
40
40
|
|
|
41
41
|
end
|
|
@@ -44,7 +44,7 @@ module Helper
|
|
|
44
44
|
# 3 posições
|
|
45
45
|
#
|
|
46
46
|
def test_SegmentoRHelper_metodo_segmento_r_posicao_001_a_003
|
|
47
|
-
subject.expects(:codigo_banco).returns("123")
|
|
47
|
+
subject.conta.expects(:codigo_banco).returns("123")
|
|
48
48
|
subject.segmento_r_posicao_001_a_003 .must_equal '123'
|
|
49
49
|
end
|
|
50
50
|
|
|
@@ -50,13 +50,13 @@ module Helper
|
|
|
50
50
|
|
|
51
51
|
def test_SegmentoSHelper_deve_ter_240_posicoes_com_tipo_impressao_1_ou_2
|
|
52
52
|
pagamento.tipo_impressao = '1'
|
|
53
|
-
subject.stubs(:codigo_banco).returns("123")
|
|
53
|
+
subject.conta.stubs(:codigo_banco).returns("123")
|
|
54
54
|
subject.monta_segmento_s(pagamento, 1, 2).size.must_equal 240
|
|
55
55
|
end
|
|
56
56
|
|
|
57
57
|
def test_SegmentoSHelper_deve_ter_240_posicoes_com_tipo_impressao_3
|
|
58
58
|
pagamento.tipo_impressao = '3'
|
|
59
|
-
subject.stubs(:codigo_banco).returns("123")
|
|
59
|
+
subject.conta.stubs(:codigo_banco).returns("123")
|
|
60
60
|
subject.monta_segmento_s(pagamento, 1, 2).size.must_equal 240
|
|
61
61
|
end
|
|
62
62
|
|
|
@@ -64,7 +64,7 @@ module Helper
|
|
|
64
64
|
# 3 posições
|
|
65
65
|
#
|
|
66
66
|
def test_SegmentoSHelper_metodo_segmento_s_posicao_001_a_003
|
|
67
|
-
subject.expects(:codigo_banco).returns("123")
|
|
67
|
+
subject.conta.expects(:codigo_banco).returns("123")
|
|
68
68
|
subject.segmento_s_posicao_001_a_003 .must_equal '123'
|
|
69
69
|
end
|
|
70
70
|
|
|
@@ -18,7 +18,7 @@ module Helper
|
|
|
18
18
|
# Por padrão deve retornar o "codigo_banco"
|
|
19
19
|
#
|
|
20
20
|
def test_TrailerArquivo_metodo_trailer_arquivo_posicao_001_a_003
|
|
21
|
-
subject.expects(:codigo_banco).returns("669")
|
|
21
|
+
subject.conta.expects(:codigo_banco).returns("669")
|
|
22
22
|
subject.trailer_arquivo_posicao_001_a_003.must_equal("669")
|
|
23
23
|
end
|
|
24
24
|
|
|
@@ -16,7 +16,7 @@ module Helper
|
|
|
16
16
|
# Por padrão deve retornar o "codigo_banco"
|
|
17
17
|
#
|
|
18
18
|
def test_TrailerLote_metodo_trailer_lote_posicao_001_a_003
|
|
19
|
-
subject.expects(:codigo_banco).returns("669")
|
|
19
|
+
subject.conta.expects(:codigo_banco).returns("669")
|
|
20
20
|
subject.trailer_lote_posicao_001_a_003.must_equal("669")
|
|
21
21
|
end
|
|
22
22
|
|