brcobranca 6.0.1 → 6.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +3 -1
  3. data/Gemfile +1 -1
  4. data/Gemfile.lock +4 -4
  5. data/README.md +5 -3
  6. data/lib/brcobranca/formatacao_string.rb +5 -2
  7. data/lib/brcobranca/remessa/base.rb +0 -1
  8. data/lib/brcobranca/remessa/cnab240/banco_brasil.rb +120 -2
  9. data/lib/brcobranca/remessa/cnab240/base.rb +108 -108
  10. data/lib/brcobranca/remessa/cnab400/base.rb +1 -1
  11. data/lib/brcobranca/remessa/cnab400/bradesco.rb +3 -3
  12. data/lib/brcobranca/remessa/cnab400/citibank.rb +1 -1
  13. data/lib/brcobranca/remessa/cnab400/santander.rb +2 -2
  14. data/lib/brcobranca/version.rb +1 -1
  15. data/spec/brcobranca/formatacao_string_spec.rb +25 -0
  16. data/spec/brcobranca/remessa/base_spec.rb +10 -16
  17. data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +13 -6
  18. data/spec/brcobranca/remessa/cnab240/base_spec.rb +5 -5
  19. data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +24 -17
  20. data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +7 -7
  21. data/spec/brcobranca/remessa/cnab400/base_spec.rb +10 -10
  22. data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +59 -52
  23. data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +43 -36
  24. data/spec/brcobranca/remessa/cnab400/itau_spec.rb +61 -54
  25. data/spec/brcobranca/remessa/cnab400/santander_spec.rb +43 -36
  26. data/spec/brcobranca/remessa/pagamento_spec.rb +9 -9
  27. data/spec/fixtures/remessa/remessa-banco_brasil-cnab240.rem +6 -0
  28. data/spec/fixtures/remessa/{remessa-bancoob.rem → remessa-bancoob-cnab240.rem} +3 -3
  29. data/spec/fixtures/remessa/remessa-bradesco-cnab400.rem +3 -0
  30. data/spec/fixtures/remessa/remessa-caixa-cnab240.rem +6 -0
  31. data/spec/fixtures/remessa/remessa-citibank-cnab400.rem +3 -0
  32. data/spec/fixtures/remessa/remessa-itau-cnab400.rem +3 -0
  33. data/spec/fixtures/remessa/remessa-santander-cnab400.rem +3 -0
  34. data/spec/support/shared_examples/cnab240.rb +87 -85
  35. data/spec/support/shared_examples/cnab400.rb +17 -16
  36. metadata +18 -4
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ RSpec.describe Brcobranca::FormatacaoString do
5
+
6
+ context 'no arguments' do
7
+ it { expect { ''.format_size }.to raise_error(ArgumentError) }
8
+ end
9
+
10
+ context 'blank' do
11
+ it { expect(' '.format_size(10)).to eq(' ') }
12
+ it { expect(''.format_size(10)).to eq(' ') }
13
+ end
14
+
15
+ context 'above size' do
16
+ it { expect('SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA'.format_size(30)).to eql('SOCIEDADE BRASILEIRA DE ZOOLOG') }
17
+ it { expect('pablo diego JOSÉ FRANCISCO DE PAULA JUAN'.format_size(30)).to eql('pablo diego JOSE FRANCISCO DE ') }
18
+ end
19
+
20
+ context 'bellow size' do
21
+ it { expect('SOCIEDADE'.format_size(30)).to eql('SOCIEDADE ') }
22
+ it { expect('caçaróla'.format_size(30)).to eql('cacarola ') }
23
+ end
24
+
25
+ end
@@ -4,18 +4,18 @@ require 'spec_helper'
4
4
  RSpec.describe Brcobranca::Remessa::Base do
5
5
  let(:pagamento) do
6
6
  Brcobranca::Remessa::Pagamento.new(valor: 199.9,
7
- data_vencimento: Date.today,
8
- nosso_numero: 123,
9
- documento_sacado: '12345678901',
10
- nome_sacado: 'nome',
11
- endereco_sacado: 'endereco',
12
- bairro_sacado: 'bairro',
13
- cep_sacado: '12345678',
14
- cidade_sacado: 'cidade',
15
- uf_sacado: 'SP')
7
+ data_vencimento: Date.today,
8
+ nosso_numero: 123,
9
+ documento_sacado: '12345678901',
10
+ nome_sacado: 'PABLO DIEGO JOSÉ FRANCISCO DE PAULA JUAN NEPOMUCENO MARÍA DE LOS REMEDIOS CIPRIANO DE LA SANTÍSSIMA TRINIDAD RUIZ Y PICASSO',
11
+ endereco_sacado: 'RUA RIO GRANDE DO SUL São paulo Minas caçapa da silva junior',
12
+ bairro_sacado: 'São josé dos quatro apostolos magros',
13
+ cep_sacado: '12345678',
14
+ cidade_sacado: 'Santa rita de cássia maria da silva',
15
+ uf_sacado: 'SP')
16
16
  end
17
17
  let(:params) do
18
- { empresa_mae: 'teste',
18
+ { empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
19
19
  agencia: '123',
20
20
  conta_corrente: '1234',
21
21
  pagamentos: [pagamento] }
@@ -60,12 +60,6 @@ RSpec.describe Brcobranca::Remessa::Base do
60
60
  expect(objeto.invalid?).to be true
61
61
  expect(objeto.errors.full_messages).to include('Empresa mae não pode estar em branco.')
62
62
  end
63
-
64
- it 'deve ser invalido se a empresa tiver mais de 30 caracteres' do
65
- base.empresa_mae = 'teste'.ljust(40, ' ')
66
- expect(base.invalid?).to be true
67
- expect(base.errors.full_messages).to include('Empresa mae deve ser menor ou igual a 30 caracteres.')
68
- end
69
63
  end
70
64
  end
71
65
  end
@@ -7,15 +7,15 @@ RSpec.describe Brcobranca::Remessa::Cnab240::BancoBrasil do
7
7
  data_vencimento: Date.today,
8
8
  nosso_numero: 123,
9
9
  documento_sacado: '12345678901',
10
- nome_sacado: 'nome',
11
- endereco_sacado: 'endereco',
12
- bairro_sacado: 'bairro',
10
+ nome_sacado: 'PABLO DIEGO JOSÉ FRANCISCO DE PAULA JUAN NEPOMUCENO MARÍA DE LOS REMEDIOS CIPRIANO DE LA SANTÍSSIMA TRINIDAD RUIZ Y PICASSO',
11
+ endereco_sacado: 'RUA RIO GRANDE DO SUL São paulo Minas caçapa da silva junior',
12
+ bairro_sacado: 'São josé dos quatro apostolos magros',
13
13
  cep_sacado: '12345678',
14
- cidade_sacado: 'cidade',
14
+ cidade_sacado: 'Santa rita de cássia maria da silva',
15
15
  uf_sacado: 'SP')
16
16
  end
17
17
  let(:params) do
18
- { empresa_mae: 'teste',
18
+ { empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
19
19
  agencia: '1234',
20
20
  conta_corrente: '12345',
21
21
  documento_cedente: '12345678901',
@@ -149,7 +149,7 @@ RSpec.describe Brcobranca::Remessa::Cnab240::BancoBrasil do
149
149
  end
150
150
 
151
151
  it 'complemento trailer deve retornar espacos em branco' do
152
- expect(banco_brasil.complemento_trailer).to eq ''.rjust(217, ' ')
152
+ expect(banco_brasil.complemento_trailer).to eq ''.rjust(217, '0')
153
153
  end
154
154
 
155
155
  context 'formatacao nosso numero' do
@@ -205,5 +205,12 @@ RSpec.describe Brcobranca::Remessa::Cnab240::BancoBrasil do
205
205
 
206
206
  context 'geracao remessa' do
207
207
  it_behaves_like 'cnab240'
208
+
209
+ context 'arquivo' do
210
+ before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
211
+ after { Timecop.return }
212
+
213
+ it { expect(banco_brasil.gera_arquivo).to eq(read_remessa('remessa-banco_brasil-cnab240.rem', banco_brasil.gera_arquivo)) }
214
+ end
208
215
  end
209
216
  end
@@ -7,15 +7,15 @@ RSpec.describe Brcobranca::Remessa::Cnab240::Base do
7
7
  data_vencimento: Date.today,
8
8
  nosso_numero: 123,
9
9
  documento_sacado: '12345678901',
10
- nome_sacado: 'nome',
11
- endereco_sacado: 'endereco',
12
- bairro_sacado: 'bairro',
10
+ nome_sacado: 'PABLO DIEGO JOSÉ FRANCISCO DE PAULA JUAN NEPOMUCENO MARÍA DE LOS REMEDIOS CIPRIANO DE LA SANTÍSSIMA TRINIDAD RUIZ Y PICASSO',
11
+ endereco_sacado: 'RUA RIO GRANDE DO SUL São paulo Minas caçapa da silva junior',
12
+ bairro_sacado: 'São josé dos quatro apostolos magros',
13
13
  cep_sacado: '12345678',
14
- cidade_sacado: 'cidade',
14
+ cidade_sacado: 'Santa rita de cássia maria da silva',
15
15
  uf_sacado: 'SP')
16
16
  end
17
17
  let(:params) do
18
- { empresa_mae: 'teste',
18
+ { empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
19
19
  agencia: '123',
20
20
  conta_corrente: '1234',
21
21
  documento_cedente: '12345678901',
@@ -4,18 +4,18 @@ require 'spec_helper'
4
4
  RSpec.describe Brcobranca::Remessa::Cnab240::Caixa do
5
5
  let(:pagamento) do
6
6
  Brcobranca::Remessa::Pagamento.new(valor: 199.9,
7
- data_vencimento: Date.today,
8
- nosso_numero: 123,
9
- documento_sacado: '12345678901',
10
- nome_sacado: 'nome',
11
- endereco_sacado: 'endereco',
12
- bairro_sacado: 'bairro',
13
- cep_sacado: '12345678',
14
- cidade_sacado: 'cidade',
15
- uf_sacado: 'SP')
7
+ data_vencimento: Date.today,
8
+ nosso_numero: 123,
9
+ documento_sacado: '12345678901',
10
+ nome_sacado: 'PABLO DIEGO JOSÉ FRANCISCO DE PAULA JUAN NEPOMUCENO MARÍA DE LOS REMEDIOS CIPRIANO DE LA SANTÍSSIMA TRINIDAD RUIZ Y PICASSO',
11
+ endereco_sacado: 'RUA RIO GRANDE DO SUL São paulo Minas caçapa da silva junior',
12
+ bairro_sacado: 'São josé dos quatro apostolos magros',
13
+ cep_sacado: '12345678',
14
+ cidade_sacado: 'Santa rita de cássia maria da silva',
15
+ uf_sacado: 'SP')
16
16
  end
17
17
  let(:params) do
18
- { empresa_mae: 'teste',
18
+ { empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
19
19
  agencia: '12345',
20
20
  conta_corrente: '1234',
21
21
  documento_cedente: '12345678901',
@@ -113,15 +113,15 @@ RSpec.describe Brcobranca::Remessa::Cnab240::Caixa do
113
113
 
114
114
  it 'info_conta deve retornar as informacoes nas posicoes corretas' do
115
115
  info_conta = caixa.info_conta
116
- expect(info_conta[0..4]).to eq '12345' # agencia
117
- expect(info_conta[5]).to eq '1' # digito agencia
118
- expect(info_conta[6..11]).to eq '123456' # convenio
116
+ expect(info_conta[0..4]).to eq '12345' # agencia
117
+ expect(info_conta[5]).to eq '1' # digito agencia
118
+ expect(info_conta[6..11]).to eq '123456' # convenio
119
119
  end
120
120
 
121
121
  it 'complemento header deve retornar as informacoes nas posicoes corretas' do
122
122
  comp_header = caixa.complemento_header
123
123
  expect(comp_header.size).to eq 29
124
- expect(comp_header[0..3]).to eq '1234' # versao do aplicativo
124
+ expect(comp_header[0..3]).to eq '1234' # versao do aplicativo
125
125
  end
126
126
 
127
127
  it 'complemento trailer deve retornar as informacoes nas posicoes corretas' do
@@ -134,13 +134,20 @@ RSpec.describe Brcobranca::Remessa::Cnab240::Caixa do
134
134
  it 'complemento P deve retornar as informacoes nas posicoes corretas' do
135
135
  comp_p = caixa.complemento_p pagamento
136
136
  expect(comp_p.size).to eq 34
137
- expect(comp_p[0..5]).to eq '123456' # convenio
138
- expect(comp_p[17..18]).to eq '14' # modalidade carteira
139
- expect(comp_p[19..33]).to eq '000000000000123' # nosso numero
137
+ expect(comp_p[0..5]).to eq '123456' # convenio
138
+ expect(comp_p[17..18]).to eq '14' # modalidade carteira
139
+ expect(comp_p[19..33]).to eq '000000000000123' # nosso numero
140
140
  end
141
141
  end
142
142
 
143
143
  context 'geracao remessa' do
144
144
  it_behaves_like 'cnab240'
145
+
146
+ context 'arquivo' do
147
+ before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
148
+ after { Timecop.return }
149
+
150
+ it { expect(caixa.gera_arquivo).to eq(read_remessa('remessa-caixa-cnab240.rem', caixa.gera_arquivo)) }
151
+ end
145
152
  end
146
153
  end
@@ -8,18 +8,18 @@ RSpec.describe Brcobranca::Remessa::Cnab240::Sicoob do
8
8
  data_vencimento: Date.today,
9
9
  nosso_numero: '429715',
10
10
  documento_sacado: '82136760505',
11
- nome_sacado: 'Jose da Silva',
12
- endereco_sacado: 'Av. Burkhard Hehn Simoes',
13
- bairro_sacado: 'Sao Francisco',
14
- cep_sacado: '24360440',
15
- cidade_sacado: 'Rio de Janeiro',
11
+ nome_sacado: 'PABLO DIEGO JOSÉ FRANCISCO DE PAULA JUAN NEPOMUCENO MARÍA DE LOS REMEDIOS CIPRIANO DE LA SANTÍSSIMA TRINIDAD RUIZ Y PICASSO',
12
+ endereco_sacado: 'RUA RIO GRANDE DO SUL São paulo Minas caçapa da silva junior',
13
+ bairro_sacado: 'São josé dos quatro apostolos magros',
14
+ cep_sacado: '12345678',
15
+ cidade_sacado: 'Santa rita de cássia maria da silva',
16
16
  uf_sacado: 'RJ'
17
17
  )
18
18
  end
19
19
 
20
20
  let(:params) do
21
21
  {
22
- empresa_mae: 'SEBASTIAN ELIAS PUBLICIDADE',
22
+ empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
23
23
  agencia: '4327',
24
24
  conta_corrente: '03666',
25
25
  documento_cedente: '74576177000177',
@@ -149,7 +149,7 @@ RSpec.describe Brcobranca::Remessa::Cnab240::Sicoob do
149
149
  before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
150
150
  after { Timecop.return }
151
151
 
152
- it { expect(sicoob.gera_arquivo).to eq(read_remessa('remessa-bancoob.rem', sicoob.gera_arquivo)) }
152
+ it { expect(sicoob.gera_arquivo).to eq(read_remessa('remessa-bancoob-cnab240.rem', sicoob.gera_arquivo)) }
153
153
  end
154
154
  end
155
155
  end
@@ -4,18 +4,18 @@ require 'spec_helper'
4
4
  RSpec.describe Brcobranca::Remessa::Cnab400::Base do
5
5
  let(:pagamento) do
6
6
  Brcobranca::Remessa::Pagamento.new(valor: 199.9,
7
- data_vencimento: Date.today,
8
- nosso_numero: 123,
9
- documento_sacado: '12345678901',
10
- nome_sacado: 'nome',
11
- endereco_sacado: 'endereco',
12
- bairro_sacado: 'bairro',
13
- cep_sacado: '12345678',
14
- cidade_sacado: 'cidade',
15
- uf_sacado: 'SP')
7
+ data_vencimento: Date.today,
8
+ nosso_numero: 123,
9
+ documento_sacado: '12345678901',
10
+ nome_sacado: 'PABLO DIEGO JOSÉ FRANCISCO DE PAULA JUAN NEPOMUCENO MARÍA DE LOS REMEDIOS CIPRIANO DE LA SANTÍSSIMA TRINIDAD RUIZ Y PICASSO',
11
+ endereco_sacado: 'RUA RIO GRANDE DO SUL São paulo Minas caçapa da silva junior',
12
+ bairro_sacado: 'São josé dos quatro apostolos magros',
13
+ cep_sacado: '12345678',
14
+ cidade_sacado: 'Santa rita de cássia maria da silva',
15
+ uf_sacado: 'SP')
16
16
  end
17
17
  let(:params) do
18
- { empresa_mae: 'teste',
18
+ { empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
19
19
  agencia: '123',
20
20
  conta_corrente: '1234',
21
21
  digito_conta: '1',
@@ -4,27 +4,27 @@ require 'spec_helper'
4
4
  RSpec.describe Brcobranca::Remessa::Cnab400::Bradesco do
5
5
  let(:pagamento) do
6
6
  Brcobranca::Remessa::Pagamento.new(valor: 199.9,
7
- data_vencimento: Date.today,
8
- nosso_numero: 123,
9
- documento_sacado: '12345678901',
10
- nome_sacado: 'nome',
11
- endereco_sacado: 'endereco',
12
- bairro_sacado: 'bairro',
13
- cep_sacado: '12345678',
14
- cidade_sacado: 'cidade',
15
- uf_sacado: 'SP')
7
+ data_vencimento: Date.today,
8
+ nosso_numero: 123,
9
+ documento_sacado: '12345678901',
10
+ nome_sacado: 'PABLO DIEGO JOSÉ FRANCISCO DE PAULA JUAN NEPOMUCENO MARÍA DE LOS REMEDIOS CIPRIANO DE LA SANTÍSSIMA TRINIDAD RUIZ Y PICASSO',
11
+ endereco_sacado: 'RUA RIO GRANDE DO SUL São paulo Minas caçapa da silva junior',
12
+ bairro_sacado: 'São josé dos quatro apostolos magros',
13
+ cep_sacado: '12345678',
14
+ cidade_sacado: 'Santa rita de cássia maria da silva',
15
+ uf_sacado: 'SP')
16
16
  end
17
17
  let(:params) do
18
18
  { carteira: '01',
19
19
  agencia: '12345',
20
20
  conta_corrente: '1234567',
21
21
  digito_conta: '1',
22
- empresa_mae: 'asd',
22
+ empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
23
23
  sequencial_remessa: '1',
24
24
  codigo_empresa: '123',
25
25
  pagamentos: [pagamento] }
26
26
  end
27
- let(:bradesco_cnab400) { subject.class.new(params) }
27
+ let(:bradesco) { subject.class.new(params) }
28
28
 
29
29
  context 'validacoes dos campos' do
30
30
  context '@agencia' do
@@ -35,9 +35,9 @@ RSpec.describe Brcobranca::Remessa::Cnab400::Bradesco do
35
35
  end
36
36
 
37
37
  it 'deve ser invalido se a agencia tiver mais de 5 digitos' do
38
- bradesco_cnab400.agencia = '123456'
39
- expect(bradesco_cnab400.invalid?).to be true
40
- expect(bradesco_cnab400.errors.full_messages).to include('Agencia deve ter 5 dígitos.')
38
+ bradesco.agencia = '123456'
39
+ expect(bradesco.invalid?).to be true
40
+ expect(bradesco.errors.full_messages).to include('Agencia deve ter 5 dígitos.')
41
41
  end
42
42
  end
43
43
 
@@ -49,9 +49,9 @@ RSpec.describe Brcobranca::Remessa::Cnab400::Bradesco do
49
49
  end
50
50
 
51
51
  it 'deve ser invalido se a carteira tiver mais de 1 digito' do
52
- bradesco_cnab400.digito_conta = '12'
53
- expect(bradesco_cnab400.invalid?).to be true
54
- expect(bradesco_cnab400.errors.full_messages).to include('Digito conta deve ter 1 dígito.')
52
+ bradesco.digito_conta = '12'
53
+ expect(bradesco.invalid?).to be true
54
+ expect(bradesco.errors.full_messages).to include('Digito conta deve ter 1 dígito.')
55
55
  end
56
56
  end
57
57
 
@@ -63,9 +63,9 @@ RSpec.describe Brcobranca::Remessa::Cnab400::Bradesco do
63
63
  end
64
64
 
65
65
  it 'deve ser invalido se a conta corrente tiver mais de 8 digitos' do
66
- bradesco_cnab400.conta_corrente = '12345678'
67
- expect(bradesco_cnab400.invalid?).to be true
68
- expect(bradesco_cnab400.errors.full_messages).to include('Conta corrente deve ter 7 dígitos.')
66
+ bradesco.conta_corrente = '12345678'
67
+ expect(bradesco.invalid?).to be true
68
+ expect(bradesco.errors.full_messages).to include('Conta corrente deve ter 7 dígitos.')
69
69
  end
70
70
  end
71
71
 
@@ -77,9 +77,9 @@ RSpec.describe Brcobranca::Remessa::Cnab400::Bradesco do
77
77
  end
78
78
 
79
79
  it 'deve ser invalido se a carteira tiver mais de 2 digitos' do
80
- bradesco_cnab400.carteira = '123'
81
- expect(bradesco_cnab400.invalid?).to be true
82
- expect(bradesco_cnab400.errors.full_messages).to include('Carteira deve ter no máximo 2 dígitos.')
80
+ bradesco.carteira = '123'
81
+ expect(bradesco.invalid?).to be true
82
+ expect(bradesco.errors.full_messages).to include('Carteira deve ter no máximo 2 dígitos.')
83
83
  end
84
84
  end
85
85
 
@@ -91,9 +91,9 @@ RSpec.describe Brcobranca::Remessa::Cnab400::Bradesco do
91
91
  end
92
92
 
93
93
  it 'deve ser invalido se sequencial de remessa tiver mais de 8 digitos' do
94
- bradesco_cnab400.sequencial_remessa = '12345678'
95
- expect(bradesco_cnab400.invalid?).to be true
96
- expect(bradesco_cnab400.errors.full_messages).to include('Sequencial remessa deve ter 7 dígitos.')
94
+ bradesco.sequencial_remessa = '12345678'
95
+ expect(bradesco.invalid?).to be true
96
+ expect(bradesco.errors.full_messages).to include('Sequencial remessa deve ter 7 dígitos.')
97
97
  end
98
98
  end
99
99
 
@@ -105,41 +105,41 @@ RSpec.describe Brcobranca::Remessa::Cnab400::Bradesco do
105
105
  end
106
106
 
107
107
  it 'deve ser invalido se codigo da empresa tiver mais de 20 digitos' do
108
- bradesco_cnab400.codigo_empresa = ''.rjust(21, '0')
109
- expect(bradesco_cnab400.invalid?).to be true
110
- expect(bradesco_cnab400.errors.full_messages).to include('Codigo empresa deve ser menor ou igual a 20 dígitos.')
108
+ bradesco.codigo_empresa = ''.rjust(21, '0')
109
+ expect(bradesco.invalid?).to be true
110
+ expect(bradesco.errors.full_messages).to include('Codigo empresa deve ser menor ou igual a 20 dígitos.')
111
111
  end
112
112
  end
113
113
  end
114
114
 
115
115
  context 'formatacoes dos valores' do
116
116
  it 'cod_banco deve ser 237' do
117
- expect(bradesco_cnab400.cod_banco).to eq '237'
117
+ expect(bradesco.cod_banco).to eq '237'
118
118
  end
119
119
 
120
120
  it 'nome_banco deve ser BRADESCO com 15 posicoes' do
121
- nome_banco = bradesco_cnab400.nome_banco
121
+ nome_banco = bradesco.nome_banco
122
122
  expect(nome_banco.size).to eq 15
123
123
  expect(nome_banco.strip).to eq 'BRADESCO'
124
124
  end
125
125
 
126
126
  it 'complemento deve ter 294 caracteres com as informacoes nas posicoes corretas' do
127
- complemento = bradesco_cnab400.complemento
127
+ complemento = bradesco.complemento
128
128
  expect(complemento.size).to eq 294
129
129
  expect(complemento[8..9]).to eq 'MX'
130
130
  expect(complemento[10..16]).to eq '0000001'
131
131
  end
132
132
 
133
133
  it 'info_conta deve ter 20 posicoes' do
134
- expect(bradesco_cnab400.info_conta.size).to eq 20
134
+ expect(bradesco.info_conta.size).to eq 20
135
135
  end
136
136
 
137
137
  it 'identificacao da empresa deve ter as informacoes nas posicoes corretas' do
138
- id_empresa = bradesco_cnab400.identificacao_empresa
139
- expect(id_empresa[1..3]).to eq '001' # carteira (com 3 digitos)
140
- expect(id_empresa[4..8]).to eq '12345' # agencia
141
- expect(id_empresa[9..15]).to eq '1234567' # conta corrente
142
- expect(id_empresa[16]).to eq '1' # digito da conta corrente
138
+ id_empresa = bradesco.identificacao_empresa
139
+ expect(id_empresa[1..3]).to eq '001' # carteira (com 3 digitos)
140
+ expect(id_empresa[4..8]).to eq '12345' # agencia
141
+ expect(id_empresa[9..15]).to eq '1234567' # conta corrente
142
+ expect(id_empresa[16]).to eq '1' # digito da conta corrente
143
143
  end
144
144
 
145
145
  it 'calcula o digito verificador do nosso numero' do
@@ -154,7 +154,7 @@ RSpec.describe Brcobranca::Remessa::Cnab400::Bradesco do
154
154
  # 23/11 = 2 com resto 1
155
155
  # quando resto 1 codigo sera P
156
156
  #
157
- expect(bradesco_cnab400.digito_nosso_numero(123)).to eq 'P'
157
+ expect(bradesco.digito_nosso_numero(123)).to eq 'P'
158
158
  end
159
159
  end
160
160
 
@@ -163,25 +163,32 @@ RSpec.describe Brcobranca::Remessa::Cnab400::Bradesco do
163
163
 
164
164
  context 'header' do
165
165
  it 'informacoes devem estar posicionadas corretamente no header' do
166
- header = bradesco_cnab400.monta_header
167
- expect(header[1]).to eq '1' # tipo operacao (1 = remessa)
168
- expect(header[2..8]).to eq 'REMESSA' # literal da operacao
169
- expect(header[26..45]).to eq bradesco_cnab400.info_conta # informacoes da conta
170
- expect(header[76..78]).to eq '237' # codigo do banco
166
+ header = bradesco.monta_header
167
+ expect(header[1]).to eq '1' # tipo operacao (1 = remessa)
168
+ expect(header[2..8]).to eq 'REMESSA' # literal da operacao
169
+ expect(header[26..45]).to eq bradesco.info_conta # informacoes da conta
170
+ expect(header[76..78]).to eq '237' # codigo do banco
171
171
  end
172
172
  end
173
173
 
174
174
  context 'detalhe' do
175
175
  it 'informacoes devem estar posicionadas corretamente no detalhe' do
176
- detalhe = bradesco_cnab400.monta_detalhe pagamento, 1
177
- expect(detalhe[70..80]).to eq '00000000123' # nosso numero
178
- expect(detalhe[81]).to eq 'P' # digito nosso numero (para nosso numero 123 o digito e P)
179
- expect(detalhe[120..125]).to eq Date.today.strftime('%d%m%y') # data de vencimento
180
- expect(detalhe[126..138]).to eq '0000000019990' # valor do documento
181
- expect(detalhe[220..233]).to eq '00012345678901' # documento do pagador
182
- expect(detalhe[234..273]).to eq 'NOME'.ljust(40, ' ') # nome do pagador
183
- expect(detalhe[274..313]).to eq bradesco_cnab400.formata_endereco_sacado(pagamento).upcase # endereco do pagador
176
+ detalhe = bradesco.monta_detalhe pagamento, 1
177
+ expect(detalhe[70..80]).to eq '00000000123' # nosso numero
178
+ expect(detalhe[81]).to eq 'P' # digito nosso numero (para nosso numero 123 o digito e P)
179
+ expect(detalhe[120..125]).to eq Date.today.strftime('%d%m%y') # data de vencimento
180
+ expect(detalhe[126..138]).to eq '0000000019990' # valor do documento
181
+ expect(detalhe[220..233]).to eq '00012345678901' # documento do pagador
182
+ expect(detalhe[234..273]).to eq 'PABLO DIEGO JOSE FRANCISCO DE PAULA JUAN' # nome do pagador
183
+ expect(detalhe[274..313]).to eq bradesco.formata_endereco_sacado(pagamento).upcase # endereco do pagador
184
184
  end
185
185
  end
186
+
187
+ context 'arquivo' do
188
+ before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
189
+ after { Timecop.return }
190
+
191
+ it { expect(bradesco.gera_arquivo).to eq(read_remessa('remessa-bradesco-cnab400.rem', bradesco.gera_arquivo)) }
192
+ end
186
193
  end
187
194
  end
@@ -4,26 +4,26 @@ require 'spec_helper'
4
4
  RSpec.describe Brcobranca::Remessa::Cnab400::Citibank do
5
5
  let(:pagamento) do
6
6
  Brcobranca::Remessa::Pagamento.new(valor: 199.9,
7
- data_vencimento: Date.today,
8
- nosso_numero: 123,
9
- documento_sacado: '12345678901',
10
- nome_sacado: 'nome',
11
- endereco_sacado: 'endereco',
12
- bairro_sacado: 'bairro',
13
- cep_sacado: '12345678',
14
- cidade_sacado: 'cidade',
15
- uf_sacado: 'SP')
7
+ data_vencimento: Date.today,
8
+ nosso_numero: 123,
9
+ documento_sacado: '12345678901',
10
+ nome_sacado: 'PABLO DIEGO JOSÉ FRANCISCO DE PAULA JUAN NEPOMUCENO MARÍA DE LOS REMEDIOS CIPRIANO DE LA SANTÍSSIMA TRINIDAD RUIZ Y PICASSO',
11
+ endereco_sacado: 'RUA RIO GRANDE DO SUL São paulo Minas caçapa da silva junior',
12
+ bairro_sacado: 'São josé dos quatro apostolos magros',
13
+ cep_sacado: '12345678',
14
+ cidade_sacado: 'Santa rita de cássia maria da silva',
15
+ uf_sacado: 'SP')
16
16
  end
17
17
  let(:params) do
18
18
  {
19
19
  portfolio: '17777751042700080112',
20
20
  carteira: '1',
21
- empresa_mae: 'asd',
21
+ empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
22
22
  documento_cedente: '12345678910',
23
23
  pagamentos: [pagamento]
24
24
  }
25
25
  end
26
- let(:citibank_cnab400) { subject.class.new(params) }
26
+ let(:citibank) { subject.class.new(params) }
27
27
 
28
28
  context 'validacoes dos campos' do
29
29
  context '@carteira' do
@@ -34,9 +34,9 @@ RSpec.describe Brcobranca::Remessa::Cnab400::Citibank do
34
34
  end
35
35
 
36
36
  it 'deve ser invalido se a carteira tiver mais de 3 digitos' do
37
- citibank_cnab400.carteira = '1234'
38
- expect(citibank_cnab400.invalid?).to be true
39
- expect(citibank_cnab400.errors.full_messages).to include('Carteira deve ter no máximo 1 dígito.')
37
+ citibank.carteira = '1234'
38
+ expect(citibank.invalid?).to be true
39
+ expect(citibank.errors.full_messages).to include('Carteira deve ter no máximo 1 dígito.')
40
40
  end
41
41
  end
42
42
 
@@ -48,9 +48,9 @@ RSpec.describe Brcobranca::Remessa::Cnab400::Citibank do
48
48
  end
49
49
 
50
50
  it 'deve ser invalido se o documento do cedente nao tiver entre 11 e 14 digitos' do
51
- citibank_cnab400.documento_cedente = '123'
52
- expect(citibank_cnab400.invalid?).to be true
53
- expect(citibank_cnab400.errors.full_messages).to include('Documento cedente deve ter entre 11 e 14 dígitos.')
51
+ citibank.documento_cedente = '123'
52
+ expect(citibank.invalid?).to be true
53
+ expect(citibank.errors.full_messages).to include('Documento cedente deve ter entre 11 e 14 dígitos.')
54
54
  end
55
55
  end
56
56
 
@@ -62,31 +62,31 @@ RSpec.describe Brcobranca::Remessa::Cnab400::Citibank do
62
62
  end
63
63
 
64
64
  it 'deve ser invalido se o deve ter no máximo 20 dígitos.' do
65
- citibank_cnab400.portfolio = '123456789012345678901'
66
- expect(citibank_cnab400.invalid?).to be true
67
- expect(citibank_cnab400.errors.full_messages).to include('Portfolio deve ter no máximo 20 dígitos.')
65
+ citibank.portfolio = '123456789012345678901'
66
+ expect(citibank.invalid?).to be true
67
+ expect(citibank.errors.full_messages).to include('Portfolio deve ter no máximo 20 dígitos.')
68
68
  end
69
69
  end
70
70
  end
71
71
 
72
72
  context 'formatacoes dos valores' do
73
73
  it 'cod_banco deve ser 341' do
74
- expect(citibank_cnab400.cod_banco).to eq '745'
74
+ expect(citibank.cod_banco).to eq '745'
75
75
  end
76
76
 
77
77
  it 'nome_banco deve ser CITIBANK' do
78
- nome_banco = citibank_cnab400.nome_banco
78
+ nome_banco = citibank.nome_banco
79
79
  expect(nome_banco.strip).to eq 'CITIBANK'
80
80
  end
81
81
 
82
82
  it 'complemento deve retornar 294 caracteres' do
83
- expect(citibank_cnab400.complemento.size).to eq 294
83
+ expect(citibank.complemento.size).to eq 294
84
84
  end
85
85
 
86
86
  it 'info_conta deve retornar com 20 posicoes as informacoes da conta' do
87
- info_conta = citibank_cnab400.info_conta
87
+ info_conta = citibank.info_conta
88
88
  expect(info_conta.size).to eq 20
89
- expect(info_conta[0..19]).to eq '17777751042700080112' # portfolio
89
+ expect(info_conta[0..19]).to eq '17777751042700080112' # portfolio
90
90
  end
91
91
  end
92
92
 
@@ -95,23 +95,30 @@ RSpec.describe Brcobranca::Remessa::Cnab400::Citibank do
95
95
 
96
96
  context 'header' do
97
97
  it 'informacoes devem estar posicionadas corretamente no header' do
98
- header = citibank_cnab400.monta_header
99
- expect(header[1]).to eq '1' # tipo operacao (1 = remessa)
100
- expect(header[2..8]).to eq 'REMESSA' # literal da operacao
101
- expect(header[26..45]).to eq citibank_cnab400.info_conta # informacoes da conta
102
- expect(header[76..78]).to eq '745' # codigo do banco
98
+ header = citibank.monta_header
99
+ expect(header[1]).to eq '1' # tipo operacao (1 = remessa)
100
+ expect(header[2..8]).to eq 'REMESSA' # literal da operacao
101
+ expect(header[26..45]).to eq citibank.info_conta # informacoes da conta
102
+ expect(header[76..78]).to eq '745' # codigo do banco
103
103
  end
104
104
  end
105
105
 
106
106
  context 'detalhe' do
107
107
  it 'informacoes devem estar posicionadas corretamente no detalhe' do
108
- detalhe = citibank_cnab400.monta_detalhe pagamento, 1
109
- expect(detalhe[64..75]).to eq '000000000123' # nosso numero
110
- expect(detalhe[120..125]).to eq Date.today.strftime('%d%m%y') # data de vencimento
111
- expect(detalhe[126..138]).to eq '0000000019990' # valor do titulo
112
- expect(detalhe[220..233]).to eq '00012345678901' # documento do pagador
113
- expect(detalhe[234..263]).to eq 'NOME'.ljust(30, ' ') # nome do pagador
108
+ detalhe = citibank.monta_detalhe pagamento, 1
109
+ expect(detalhe[64..75]).to eq '000000000123' # nosso numero
110
+ expect(detalhe[120..125]).to eq Date.today.strftime('%d%m%y') # data de vencimento
111
+ expect(detalhe[126..138]).to eq '0000000019990' # valor do titulo
112
+ expect(detalhe[220..233]).to eq '00012345678901' # documento do pagador
113
+ expect(detalhe[234..263]).to eq 'PABLO DIEGO JOSE FRANCISCO DE ' # nome do pagador
114
114
  end
115
115
  end
116
+
117
+ context 'arquivo' do
118
+ before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
119
+ after { Timecop.return }
120
+
121
+ it { expect(citibank.gera_arquivo).to eq(read_remessa('remessa-citibank-cnab400.rem', citibank.gera_arquivo)) }
122
+ end
116
123
  end
117
124
  end