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,490 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
describe BrBoleto::Remessa::Base do
|
|
4
|
+
subject { FactoryGirl.build(:conta_base) }
|
|
5
|
+
|
|
6
|
+
describe "Validations" do
|
|
7
|
+
it { must validate_presence_of(:agencia) }
|
|
8
|
+
it { must validate_presence_of(:razao_social) }
|
|
9
|
+
it { must validate_presence_of(:cpf_cnpj) }
|
|
10
|
+
|
|
11
|
+
context '#endereco' do
|
|
12
|
+
it "por padrão não deve validar nada" do
|
|
13
|
+
subject.endereco = nil
|
|
14
|
+
wont_be_message_error(:endereco)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
context "#valid_endereco_required" do
|
|
18
|
+
it "quando setado deve validar a obrigatoriedade" do
|
|
19
|
+
wont validate_presence_of(:endereco)
|
|
20
|
+
|
|
21
|
+
subject.valid_endereco_required = true
|
|
22
|
+
must validate_presence_of(:endereco)
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
context "#conta_corrente" do
|
|
28
|
+
it "por padrão não deve validar nada" do
|
|
29
|
+
subject.conta_corrente = nil
|
|
30
|
+
wont_be_message_error(:conta_corrente)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
context "#valid_conta_corrente_required" do
|
|
34
|
+
it "quando setado deve validar a obrigatoriedade" do
|
|
35
|
+
wont validate_presence_of(:conta_corrente)
|
|
36
|
+
|
|
37
|
+
subject.valid_conta_corrente_required = true
|
|
38
|
+
must validate_presence_of(:conta_corrente)
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
context "#valid_conta_corrente_length" do
|
|
42
|
+
it "quando setado um valor deve validar através do valor setado" do
|
|
43
|
+
subject.valid_conta_corrente_length = 7
|
|
44
|
+
subject.conta_corrente = '12345678'
|
|
45
|
+
must_be_message_error(:conta_corrente, :custom_length_is, {count: 7})
|
|
46
|
+
subject.conta_corrente = '1234567'
|
|
47
|
+
wont_be_message_error(:conta_corrente, :custom_length_is, {count: 7})
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
context "#valid_conta_corrente_minimum" do
|
|
51
|
+
it "quando setado um valor deve validar através do valor setado" do
|
|
52
|
+
subject.valid_conta_corrente_minimum = 5
|
|
53
|
+
subject.conta_corrente = '1'
|
|
54
|
+
must_be_message_error(:conta_corrente, :custom_length_minimum, {count: 5})
|
|
55
|
+
subject.conta_corrente = '1234567'
|
|
56
|
+
wont_be_message_error(:conta_corrente, :custom_length_minimum, {count: 5})
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
context "#valid_conta_corrente_maximum" do
|
|
60
|
+
it "quando setado um valor deve validar através do valor setado" do
|
|
61
|
+
subject.valid_conta_corrente_maximum = 3
|
|
62
|
+
subject.conta_corrente = '1234'
|
|
63
|
+
must_be_message_error(:conta_corrente, :custom_length_maximum, {count: 3})
|
|
64
|
+
subject.conta_corrente = '123'
|
|
65
|
+
wont_be_message_error(:conta_corrente, :custom_length_maximum, {count: 3})
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
context "sempre retorna o valor ajustado para o tamanho máximo" do
|
|
69
|
+
it "se tiver valor setado deve formatar o tamanho maximo" do
|
|
70
|
+
subject.valid_conta_corrente_maximum = 5
|
|
71
|
+
subject.conta_corrente = '123'
|
|
72
|
+
subject.conta_corrente.must_equal '00123'
|
|
73
|
+
|
|
74
|
+
subject.valid_conta_corrente_maximum = 7
|
|
75
|
+
subject.conta_corrente.must_equal '0000123'
|
|
76
|
+
end
|
|
77
|
+
it "se não tiver valor setado não ajusta os digitos para o tamanho maximo" do
|
|
78
|
+
subject.valid_conta_corrente_maximum = 5
|
|
79
|
+
subject.conta_corrente = ''
|
|
80
|
+
subject.conta_corrente.must_equal ''
|
|
81
|
+
end
|
|
82
|
+
it "se não tiver tamanho maximo definido deve retornar o valor setado" do
|
|
83
|
+
subject.valid_conta_corrente_maximum = nil
|
|
84
|
+
subject.conta_corrente = 456
|
|
85
|
+
subject.conta_corrente.must_equal '456'
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
context "#modalidade" do
|
|
91
|
+
it "por padrão não deve validar nada" do
|
|
92
|
+
subject.modalidade = nil
|
|
93
|
+
wont_be_message_error(:modalidade)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
context "#valid_modalidade_required" do
|
|
97
|
+
it "quando setado deve validar a obrigatoriedade" do
|
|
98
|
+
wont validate_presence_of(:modalidade)
|
|
99
|
+
|
|
100
|
+
subject.valid_modalidade_required = true
|
|
101
|
+
must validate_presence_of(:modalidade)
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
context "#valid_modalidade_length" do
|
|
105
|
+
it "quando setado um valor deve validar através do valor setado" do
|
|
106
|
+
subject.valid_modalidade_length = 7
|
|
107
|
+
subject.modalidade = '12345678'
|
|
108
|
+
must_be_message_error(:modalidade, :custom_length_is, {count: 7})
|
|
109
|
+
subject.modalidade = '1234567'
|
|
110
|
+
wont_be_message_error(:modalidade, :custom_length_is, {count: 7})
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
context "#valid_modalidade_minimum" do
|
|
114
|
+
it "quando setado um valor deve validar através do valor setado" do
|
|
115
|
+
subject.valid_modalidade_minimum = 5
|
|
116
|
+
subject.modalidade = '1'
|
|
117
|
+
must_be_message_error(:modalidade, :custom_length_minimum, {count: 5})
|
|
118
|
+
subject.modalidade = '1234567'
|
|
119
|
+
wont_be_message_error(:modalidade, :custom_length_minimum, {count: 5})
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
context "#valid_modalidade_maximum" do
|
|
123
|
+
it "quando setado um valor deve validar através do valor setado" do
|
|
124
|
+
subject.valid_modalidade_maximum = 3
|
|
125
|
+
subject.modalidade = '1234'
|
|
126
|
+
must_be_message_error(:modalidade, :custom_length_maximum, {count: 3})
|
|
127
|
+
subject.modalidade = '123'
|
|
128
|
+
wont_be_message_error(:modalidade, :custom_length_maximum, {count: 3})
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
context "#valid_modalidade_inclusion" do
|
|
133
|
+
it "deve validar que o valor deve estar entre um dos valores passados" do
|
|
134
|
+
subject.valid_modalidade_inclusion = 3
|
|
135
|
+
subject.modalidade = '4'
|
|
136
|
+
must_be_message_error(:modalidade, :custom_inclusion, {list: '3'})
|
|
137
|
+
subject.valid_modalidade_inclusion = [1,2,'03']
|
|
138
|
+
subject.modalidade = '04'
|
|
139
|
+
must_be_message_error(:modalidade, :custom_inclusion, {list: '1, 2, 03'})
|
|
140
|
+
|
|
141
|
+
subject.modalidade = '2'
|
|
142
|
+
wont_be_message_error(:modalidade)
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
context "sempre retorna o valor ajustado para o tamanho máximo" do
|
|
147
|
+
it "se tiver valor setado deve formatar o tamanho maximo" do
|
|
148
|
+
subject.valid_modalidade_maximum = 5
|
|
149
|
+
subject.modalidade = '123'
|
|
150
|
+
subject.modalidade.must_equal '00123'
|
|
151
|
+
|
|
152
|
+
subject.valid_modalidade_maximum = 7
|
|
153
|
+
subject.modalidade.must_equal '0000123'
|
|
154
|
+
end
|
|
155
|
+
it "se não tiver valor setado não ajusta os digitos para o tamanho maximo" do
|
|
156
|
+
subject.valid_modalidade_maximum = 5
|
|
157
|
+
subject.modalidade = ''
|
|
158
|
+
subject.modalidade.must_equal ''
|
|
159
|
+
end
|
|
160
|
+
it "se não tiver tamanho maximo definido deve retornar o valor setado" do
|
|
161
|
+
subject.valid_modalidade_maximum = nil
|
|
162
|
+
subject.modalidade = 456
|
|
163
|
+
subject.modalidade.must_equal '456'
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
context "#codigo_cedente" do
|
|
169
|
+
it "por padrão não deve validar nada" do
|
|
170
|
+
subject.codigo_cedente = nil
|
|
171
|
+
wont_be_message_error(:codigo_cedente)
|
|
172
|
+
wont_be_message_error(:convenio)
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
context "#valid_codigo_cedente_required" do
|
|
176
|
+
it "quando setado deve validar a obrigatoriedade" do
|
|
177
|
+
wont validate_presence_of(:convenio)
|
|
178
|
+
|
|
179
|
+
subject.valid_codigo_cedente_required = true
|
|
180
|
+
must validate_presence_of(:convenio)
|
|
181
|
+
end
|
|
182
|
+
end
|
|
183
|
+
context "#valid_codigo_cedente_length" do
|
|
184
|
+
it "quando setado um valor deve validar através do valor setado" do
|
|
185
|
+
subject.valid_codigo_cedente_length = 7
|
|
186
|
+
subject.codigo_cedente = '12345678'
|
|
187
|
+
must_be_message_error(:convenio, :custom_length_is, {count: 7})
|
|
188
|
+
subject.codigo_cedente = '1234567'
|
|
189
|
+
wont_be_message_error(:convenio, :custom_length_is, {count: 7})
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
context "#valid_codigo_cedente_minimum" do
|
|
193
|
+
it "quando setado um valor deve validar através do valor setado" do
|
|
194
|
+
subject.valid_codigo_cedente_minimum = 5
|
|
195
|
+
subject.codigo_cedente = '1'
|
|
196
|
+
must_be_message_error(:convenio, :custom_length_minimum, {count: 5})
|
|
197
|
+
subject.codigo_cedente = '1234567'
|
|
198
|
+
wont_be_message_error(:convenio, :custom_length_minimum, {count: 5})
|
|
199
|
+
end
|
|
200
|
+
end
|
|
201
|
+
context "#valid_codigo_cedente_maximum" do
|
|
202
|
+
it "quando setado um valor deve validar através do valor setado" do
|
|
203
|
+
subject.valid_codigo_cedente_maximum = 3
|
|
204
|
+
subject.codigo_cedente = '1234'
|
|
205
|
+
must_be_message_error(:convenio, :custom_length_maximum, {count: 3})
|
|
206
|
+
subject.codigo_cedente = '123'
|
|
207
|
+
wont_be_message_error(:convenio, :custom_length_maximum, {count: 3})
|
|
208
|
+
end
|
|
209
|
+
end
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
context "#carteira" do
|
|
213
|
+
it "por padrão não deve validar nada" do
|
|
214
|
+
subject.carteira = nil
|
|
215
|
+
wont_be_message_error(:carteira)
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
context "#valid_carteira_required" do
|
|
219
|
+
it "quando setado deve validar a obrigatoriedade" do
|
|
220
|
+
wont validate_presence_of(:carteira)
|
|
221
|
+
|
|
222
|
+
subject.valid_carteira_required = true
|
|
223
|
+
must validate_presence_of(:carteira)
|
|
224
|
+
end
|
|
225
|
+
end
|
|
226
|
+
context "#valid_carteira_length" do
|
|
227
|
+
it "quando setado um valor deve validar através do valor setado" do
|
|
228
|
+
subject.valid_carteira_length = 7
|
|
229
|
+
subject.carteira = '12345678'
|
|
230
|
+
must_be_message_error(:carteira, :custom_length_is, {count: 7})
|
|
231
|
+
subject.carteira = '1234567'
|
|
232
|
+
wont_be_message_error(:carteira, :custom_length_is, {count: 7})
|
|
233
|
+
end
|
|
234
|
+
end
|
|
235
|
+
context "#valid_carteira_minimum" do
|
|
236
|
+
it "quando setado um valor deve validar através do valor setado" do
|
|
237
|
+
subject.valid_carteira_minimum = 5
|
|
238
|
+
subject.carteira = '1'
|
|
239
|
+
must_be_message_error(:carteira, :custom_length_minimum, {count: 5})
|
|
240
|
+
subject.carteira = '1234567'
|
|
241
|
+
wont_be_message_error(:carteira, :custom_length_minimum, {count: 5})
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
context "#valid_carteira_maximum" do
|
|
245
|
+
it "quando setado um valor deve validar através do valor setado" do
|
|
246
|
+
subject.valid_carteira_maximum = 3
|
|
247
|
+
subject.carteira = '1234'
|
|
248
|
+
must_be_message_error(:carteira, :custom_length_maximum, {count: 3})
|
|
249
|
+
subject.carteira = '123'
|
|
250
|
+
wont_be_message_error(:carteira, :custom_length_maximum, {count: 3})
|
|
251
|
+
end
|
|
252
|
+
end
|
|
253
|
+
context "#valid_carteira_inclusion" do
|
|
254
|
+
it "deve validar que o valor deve estar entre um dos valores passados" do
|
|
255
|
+
subject.valid_carteira_inclusion = 3
|
|
256
|
+
subject.carteira = '4'
|
|
257
|
+
must_be_message_error(:carteira, :custom_inclusion, {list: '3'})
|
|
258
|
+
subject.valid_carteira_inclusion = [1,2,'03']
|
|
259
|
+
subject.carteira = '04'
|
|
260
|
+
must_be_message_error(:carteira, :custom_inclusion, {list: '1, 2, 03'})
|
|
261
|
+
|
|
262
|
+
subject.carteira = '2'
|
|
263
|
+
wont_be_message_error(:carteira)
|
|
264
|
+
end
|
|
265
|
+
end
|
|
266
|
+
context "sempre retorna o valor ajustado para o tamanho máximo" do
|
|
267
|
+
it "se tiver valor setado deve formatar o tamanho maximo" do
|
|
268
|
+
subject.valid_carteira_maximum = 5
|
|
269
|
+
subject.carteira = '123'
|
|
270
|
+
subject.carteira.must_equal '00123'
|
|
271
|
+
|
|
272
|
+
subject.valid_carteira_maximum = 7
|
|
273
|
+
subject.carteira.must_equal '0000123'
|
|
274
|
+
end
|
|
275
|
+
it "se não tiver valor setado não ajusta os digitos para o tamanho maximo" do
|
|
276
|
+
subject.valid_carteira_maximum = 5
|
|
277
|
+
subject.carteira = ''
|
|
278
|
+
subject.carteira.must_equal ''
|
|
279
|
+
end
|
|
280
|
+
it "se não tiver tamanho maximo definido deve retornar o valor setado" do
|
|
281
|
+
subject.valid_carteira_maximum = nil
|
|
282
|
+
subject.carteira = 456
|
|
283
|
+
subject.carteira.must_equal '456'
|
|
284
|
+
end
|
|
285
|
+
end
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
context "#convenio" do
|
|
289
|
+
it "por padrão não deve validar nada" do
|
|
290
|
+
subject.convenio = nil
|
|
291
|
+
wont_be_message_error(:convenio)
|
|
292
|
+
end
|
|
293
|
+
|
|
294
|
+
context "#valid_convenio_required" do
|
|
295
|
+
it "quando setado deve validar a obrigatoriedade" do
|
|
296
|
+
wont validate_presence_of(:convenio)
|
|
297
|
+
|
|
298
|
+
subject.valid_convenio_required = true
|
|
299
|
+
must validate_presence_of(:convenio)
|
|
300
|
+
end
|
|
301
|
+
end
|
|
302
|
+
context "#valid_convenio_length" do
|
|
303
|
+
it "quando setado um valor deve validar através do valor setado" do
|
|
304
|
+
subject.valid_convenio_length = 7
|
|
305
|
+
subject.convenio = '12345678'
|
|
306
|
+
must_be_message_error(:convenio, :custom_length_is, {count: 7})
|
|
307
|
+
subject.convenio = '1234567'
|
|
308
|
+
wont_be_message_error(:convenio, :custom_length_is, {count: 7})
|
|
309
|
+
end
|
|
310
|
+
end
|
|
311
|
+
context "#valid_convenio_minimum" do
|
|
312
|
+
it "quando setado um valor deve validar através do valor setado" do
|
|
313
|
+
subject.valid_convenio_minimum = 5
|
|
314
|
+
subject.convenio = '1'
|
|
315
|
+
must_be_message_error(:convenio, :custom_length_minimum, {count: 5})
|
|
316
|
+
subject.convenio = '1234567'
|
|
317
|
+
wont_be_message_error(:convenio, :custom_length_minimum, {count: 5})
|
|
318
|
+
end
|
|
319
|
+
end
|
|
320
|
+
context "#valid_convenio_maximum" do
|
|
321
|
+
it "quando setado um valor deve validar através do valor setado" do
|
|
322
|
+
subject.valid_convenio_maximum = 3
|
|
323
|
+
subject.convenio = '1234'
|
|
324
|
+
must_be_message_error(:convenio, :custom_length_maximum, {count: 3})
|
|
325
|
+
subject.convenio = '123'
|
|
326
|
+
wont_be_message_error(:convenio, :custom_length_maximum, {count: 3})
|
|
327
|
+
end
|
|
328
|
+
end
|
|
329
|
+
context "#valid_convenio_inclusion" do
|
|
330
|
+
it "deve validar que o valor deve estar entre um dos valores passados" do
|
|
331
|
+
subject.valid_convenio_inclusion = 3
|
|
332
|
+
subject.convenio = '4'
|
|
333
|
+
must_be_message_error(:convenio, :custom_inclusion, {list: '3'})
|
|
334
|
+
subject.valid_convenio_inclusion = [1,2,'03']
|
|
335
|
+
subject.convenio = '04'
|
|
336
|
+
must_be_message_error(:convenio, :custom_inclusion, {list: '1, 2, 03'})
|
|
337
|
+
|
|
338
|
+
subject.convenio = '2'
|
|
339
|
+
wont_be_message_error(:convenio)
|
|
340
|
+
end
|
|
341
|
+
end
|
|
342
|
+
context "sempre retorna o valor ajustado para o tamanho máximo" do
|
|
343
|
+
it "se tiver valor setado deve formatar o tamanho maximo" do
|
|
344
|
+
subject.valid_convenio_maximum = 5
|
|
345
|
+
subject.convenio = '123'
|
|
346
|
+
subject.convenio.must_equal '00123'
|
|
347
|
+
|
|
348
|
+
subject.valid_convenio_maximum = 7
|
|
349
|
+
subject.convenio.must_equal '0000123'
|
|
350
|
+
end
|
|
351
|
+
it "se não tiver valor setado não ajusta os digitos para o tamanho maximo" do
|
|
352
|
+
subject.valid_convenio_maximum = 5
|
|
353
|
+
subject.convenio = ''
|
|
354
|
+
subject.convenio.must_equal ''
|
|
355
|
+
end
|
|
356
|
+
it "se não tiver tamanho maximo definido deve retornar o valor setado" do
|
|
357
|
+
subject.valid_convenio_maximum = nil
|
|
358
|
+
subject.convenio = 456
|
|
359
|
+
subject.convenio.must_equal '456'
|
|
360
|
+
end
|
|
361
|
+
end
|
|
362
|
+
end
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
it "carteira deve retornar sempre uma string se tiver um valor" do
|
|
366
|
+
subject.carteira = 123
|
|
367
|
+
subject.carteira.must_equal '123'
|
|
368
|
+
subject.carteira = nil
|
|
369
|
+
subject.carteira.must_be_nil
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
it "agencia deve retornar sempre uma string se tiver um valor" do
|
|
373
|
+
subject.agencia = 1230
|
|
374
|
+
subject.agencia.must_equal '1230'
|
|
375
|
+
subject.agencia = nil
|
|
376
|
+
subject.agencia.must_be_nil
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
it "codigo_cedente deve retornar sempre uma string se tiver um valor" do
|
|
380
|
+
subject.codigo_cedente = 123
|
|
381
|
+
subject.codigo_cedente.must_equal '123'
|
|
382
|
+
subject.codigo_cedente = nil
|
|
383
|
+
subject.codigo_cedente.must_be_nil
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
describe "NotImplementedError" do
|
|
387
|
+
it "codigo_banco" do
|
|
388
|
+
assert_raises NotImplementedError do
|
|
389
|
+
subject.codigo_banco
|
|
390
|
+
end
|
|
391
|
+
end
|
|
392
|
+
|
|
393
|
+
it "nome_banco" do
|
|
394
|
+
subject.nome_banco = nil
|
|
395
|
+
assert_raises NotImplementedError do
|
|
396
|
+
subject.nome_banco
|
|
397
|
+
end
|
|
398
|
+
end
|
|
399
|
+
|
|
400
|
+
it "codigo_banco_dv" do
|
|
401
|
+
assert_raises NotImplementedError do
|
|
402
|
+
subject.codigo_banco_dv
|
|
403
|
+
end
|
|
404
|
+
end
|
|
405
|
+
it "versao_layout_arquivo_cnab_240" do
|
|
406
|
+
assert_raises NotImplementedError do
|
|
407
|
+
subject.versao_layout_lote_cnab_240
|
|
408
|
+
end
|
|
409
|
+
end
|
|
410
|
+
it "versao_layout_lote_cnab_240" do
|
|
411
|
+
assert_raises NotImplementedError do
|
|
412
|
+
subject.versao_layout_lote_cnab_240
|
|
413
|
+
end
|
|
414
|
+
end
|
|
415
|
+
end
|
|
416
|
+
|
|
417
|
+
describe "#codigo_banco_formatado" do
|
|
418
|
+
it "deve trazer o codigo do banco e o dv separados por ifen" do
|
|
419
|
+
subject.expects(:codigo_banco).returns(6578)
|
|
420
|
+
subject.expects(:codigo_banco_dv).returns(9)
|
|
421
|
+
subject.codigo_banco_formatado.must_equal '6578-9'
|
|
422
|
+
end
|
|
423
|
+
end
|
|
424
|
+
|
|
425
|
+
describe "#agencia_codigo_cedente" do
|
|
426
|
+
it "deve trazer a agencia e o dv separados por /" do
|
|
427
|
+
subject.expects(:agencia).returns(956781)
|
|
428
|
+
subject.expects(:codigo_cedente).returns(9)
|
|
429
|
+
subject.agencia_codigo_cedente.must_equal '956781 / 9'
|
|
430
|
+
end
|
|
431
|
+
end
|
|
432
|
+
|
|
433
|
+
describe "#cpf_cnpj" do
|
|
434
|
+
it "se setar o cnpj com a pontuação deve sempre retornar apenas os numeros" do
|
|
435
|
+
subject.cpf_cnpj = '84.059.146/0001-00'
|
|
436
|
+
subject.cpf_cnpj.must_equal '84059146000100'
|
|
437
|
+
end
|
|
438
|
+
it "se setar o CPF com a pontuação deve sempre retornar apenas os numeros" do
|
|
439
|
+
subject.cpf_cnpj = '725.211.506-22'
|
|
440
|
+
subject.cpf_cnpj.must_equal '72521150622'
|
|
441
|
+
end
|
|
442
|
+
end
|
|
443
|
+
|
|
444
|
+
describe "#tipo_cpf_cnpj" do
|
|
445
|
+
context "#CPF retorna 01" do
|
|
446
|
+
it "por padrão deve retornar 01 (com 2 digitos)" do
|
|
447
|
+
subject.cpf_cnpj = '725.211.506-22'
|
|
448
|
+
subject.tipo_cpf_cnpj.must_equal '01'
|
|
449
|
+
end
|
|
450
|
+
it "posso passar a quantidade de digitos a retornar" do
|
|
451
|
+
subject.cpf_cnpj = '83944180313'
|
|
452
|
+
subject.tipo_cpf_cnpj(1).must_equal '1'
|
|
453
|
+
end
|
|
454
|
+
end
|
|
455
|
+
context "#CNPJ retorna 02" do
|
|
456
|
+
it "por padrão deve retornar 02 (com 2 digitos)" do
|
|
457
|
+
subject.cpf_cnpj = '84059146000100'
|
|
458
|
+
subject.tipo_cpf_cnpj.must_equal '02'
|
|
459
|
+
end
|
|
460
|
+
it "posso passar a quantidade de digitos a retornar" do
|
|
461
|
+
subject.cpf_cnpj = '32.131.445/0001-05'
|
|
462
|
+
subject.tipo_cpf_cnpj(1).must_equal '2'
|
|
463
|
+
end
|
|
464
|
+
end
|
|
465
|
+
end
|
|
466
|
+
|
|
467
|
+
describe "#cpf_cnpj_formatado" do
|
|
468
|
+
it "deve retornar o cnpj com a pontuação correta" do
|
|
469
|
+
subject.cpf_cnpj = '84059146000100'
|
|
470
|
+
subject.cpf_cnpj_formatado.must_equal '84.059.146/0001-00'
|
|
471
|
+
end
|
|
472
|
+
it "deve retornar o CPF com a pontuação correta" do
|
|
473
|
+
subject.cpf_cnpj = '72521150622'
|
|
474
|
+
subject.cpf_cnpj_formatado.must_equal '725.211.506-22'
|
|
475
|
+
end
|
|
476
|
+
end
|
|
477
|
+
|
|
478
|
+
describe "#cpf_cnpj_formatado_com_label" do
|
|
479
|
+
it "deve retornar o cnpj com a pontuação correta e com o label CNPJ" do
|
|
480
|
+
subject.cpf_cnpj = '84059146000100'
|
|
481
|
+
subject.cpf_cnpj_formatado_com_label.must_equal 'CNPJ 84.059.146/0001-00'
|
|
482
|
+
end
|
|
483
|
+
it "deve retornar o CPF com a pontuação correta e com o label CPF" do
|
|
484
|
+
subject.cpf_cnpj = '72521150622'
|
|
485
|
+
subject.cpf_cnpj_formatado_com_label.must_equal 'CPF 725.211.506-22'
|
|
486
|
+
end
|
|
487
|
+
end
|
|
488
|
+
|
|
489
|
+
|
|
490
|
+
end
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
require 'test_helper'
|
|
2
|
+
|
|
3
|
+
describe BrBoleto::Conta::Caixa do
|
|
4
|
+
subject { FactoryGirl.build(:conta_caixa) }
|
|
5
|
+
|
|
6
|
+
it "deve herdar de Conta::Base" do
|
|
7
|
+
subject.class.superclass.must_equal BrBoleto::Conta::Base
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
context "valores padrões" do
|
|
11
|
+
it "deve setar a carteira com 14'" do
|
|
12
|
+
subject.class.new.carteira.must_equal '14'
|
|
13
|
+
end
|
|
14
|
+
it "deve setar a valid_carteira_required com true" do
|
|
15
|
+
subject.class.new.valid_carteira_required.must_equal true
|
|
16
|
+
end
|
|
17
|
+
it "deve setar a valid_carteira_length com 2" do
|
|
18
|
+
subject.class.new.valid_carteira_length.must_equal 2
|
|
19
|
+
end
|
|
20
|
+
it "deve setar a valid_carteira_inclusion com %w[11 14 21]" do
|
|
21
|
+
subject.class.new.valid_carteira_inclusion.must_equal %w[11 14 21]
|
|
22
|
+
end
|
|
23
|
+
it "deve setar a valid_convenio_maximum com 6" do
|
|
24
|
+
subject.class.new.valid_convenio_maximum.must_equal 6
|
|
25
|
+
end
|
|
26
|
+
it "deve setar a versao_aplicativo com '0'" do
|
|
27
|
+
subject.class.new.versao_aplicativo.must_equal '0000'
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
describe "Validations" do
|
|
31
|
+
it { must validate_presence_of(:agencia) }
|
|
32
|
+
it { must validate_presence_of(:razao_social) }
|
|
33
|
+
it { must validate_presence_of(:cpf_cnpj) }
|
|
34
|
+
it do
|
|
35
|
+
subject.agencia_dv = 21
|
|
36
|
+
must_be_message_error(:agencia_dv, :custom_length_is, {count: 1})
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it 'versao_aplicativo deve ter no maximo 4 digitos' do
|
|
40
|
+
subject.versao_aplicativo = '12345'
|
|
41
|
+
must_be_message_error(:versao_aplicativo, :custom_length_maximum, {count: 4})
|
|
42
|
+
subject.versao_aplicativo = '1234'
|
|
43
|
+
wont_be_message_error(:versao_aplicativo, :custom_length_maximum, {count: 4})
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
context 'Validações padrões da carteira' do
|
|
47
|
+
subject { BrBoleto::Conta::Caixa.new }
|
|
48
|
+
it { must validate_presence_of(:carteira) }
|
|
49
|
+
it 'Tamanho deve ser de 2' do
|
|
50
|
+
subject.carteira = '132'
|
|
51
|
+
must_be_message_error(:carteira, :custom_length_is, {count: 2})
|
|
52
|
+
end
|
|
53
|
+
it "valores aceitos" do
|
|
54
|
+
subject.carteira = '04'
|
|
55
|
+
must_be_message_error(:carteira, :custom_inclusion, {list: '11, 14, 21'})
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
context 'Validações padrões da convenio' do
|
|
60
|
+
subject { BrBoleto::Conta::Caixa.new }
|
|
61
|
+
it { must validate_presence_of(:convenio) }
|
|
62
|
+
it 'Tamanho deve ter o tamanho maximo de 6' do
|
|
63
|
+
subject.convenio = '1234567'
|
|
64
|
+
must_be_message_error(:convenio, :custom_length_maximum, {count: 6})
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "codigo do banco" do
|
|
70
|
+
subject.codigo_banco.must_equal '104'
|
|
71
|
+
end
|
|
72
|
+
it '#codigo_banco_dv' do
|
|
73
|
+
subject.codigo_banco_dv.must_equal '0'
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
describe "#nome_banco" do
|
|
77
|
+
it "valor padrão para o nome_banco" do
|
|
78
|
+
subject.nome_banco.must_equal 'CAIXA ECONOMICA FEDERAL'
|
|
79
|
+
end
|
|
80
|
+
it "deve ser possível mudar o valor do nome do banco" do
|
|
81
|
+
subject.nome_banco = 'MEU'
|
|
82
|
+
subject.nome_banco.must_equal 'MEU'
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "#versao_layout_arquivo_cnab_240" do
|
|
87
|
+
subject.versao_layout_arquivo_cnab_240.must_equal '050'
|
|
88
|
+
end
|
|
89
|
+
it "#versao_layout_lote_cnab_240" do
|
|
90
|
+
subject.versao_layout_lote_cnab_240.must_equal '030'
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
describe '#agencia_dv' do
|
|
94
|
+
it "deve ser personalizavel pelo usuario" do
|
|
95
|
+
subject.agencia_dv = 88
|
|
96
|
+
subject.agencia_dv.must_equal 88
|
|
97
|
+
end
|
|
98
|
+
it "se não passar valor deve calcular automatico" do
|
|
99
|
+
subject.agencia = '1234'
|
|
100
|
+
BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.expects(:new).with('1234').returns(stub(to_s: 5))
|
|
101
|
+
|
|
102
|
+
subject.agencia_dv.must_equal 5
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
describe '#conta_corrente_dv' do
|
|
108
|
+
it "deve ser personalizavel pelo usuario" do
|
|
109
|
+
subject.conta_corrente_dv = 88
|
|
110
|
+
subject.conta_corrente_dv.must_equal 88
|
|
111
|
+
end
|
|
112
|
+
it "se não passar valor deve calcular automatico" do
|
|
113
|
+
subject.conta_corrente_dv = nil
|
|
114
|
+
subject.conta_corrente = '6688'
|
|
115
|
+
BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.expects(:new).with('6688').returns(stub(to_s: 5))
|
|
116
|
+
|
|
117
|
+
subject.conta_corrente_dv.must_equal 5
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
describe '#convenio_dv' do
|
|
122
|
+
it "deve ser personalizavel pelo usuario" do
|
|
123
|
+
subject.convenio_dv = 88
|
|
124
|
+
subject.convenio_dv.must_equal 88
|
|
125
|
+
end
|
|
126
|
+
it "se não passar valor deve calcular automatico" do
|
|
127
|
+
subject.convenio_dv = nil
|
|
128
|
+
subject.convenio = '6688'
|
|
129
|
+
BrBoleto::Calculos::Modulo11FatorDe2a9RestoZero.expects(:new).with('006688').returns(stub(to_s: 5))
|
|
130
|
+
|
|
131
|
+
subject.convenio_dv.must_equal 5
|
|
132
|
+
end
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
describe '#versao_aplicativo' do
|
|
136
|
+
it "deve ajustar valor para 4 digitos" do
|
|
137
|
+
subject.versao_aplicativo = 14
|
|
138
|
+
subject.versao_aplicativo.must_equal '0014'
|
|
139
|
+
end
|
|
140
|
+
end
|
|
141
|
+
|
|
142
|
+
describe "#carteira_formatada - Conforme o manual da caixa deve retornar RG para carteira com registro e SR para carteira sem registro" do
|
|
143
|
+
it "para a carteira 14 deve retornar RG" do
|
|
144
|
+
subject.carteira = '14'
|
|
145
|
+
subject.carteira_formatada.must_equal 'RG'
|
|
146
|
+
end
|
|
147
|
+
it "para a carteira 24 deve retornar SR" do
|
|
148
|
+
subject.carteira = '24'
|
|
149
|
+
subject.carteira_formatada.must_equal 'SR'
|
|
150
|
+
end
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
end
|