brcobranca 10.0.0 → 10.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +47 -21
  3. data/README.md +5 -0
  4. data/lib/brcobranca/arquivos/templates/modelo_generico2.eps +9967 -0
  5. data/lib/brcobranca/boleto/banco_brasil.rb +5 -1
  6. data/lib/brcobranca/boleto/base.rb +2 -0
  7. data/lib/brcobranca/boleto/template/base.rb +4 -0
  8. data/lib/brcobranca/boleto/template/rghost2.rb +255 -0
  9. data/lib/brcobranca/boleto/template/rghost_bolepix.rb +279 -0
  10. data/lib/brcobranca/remessa/pagamento.rb +13 -11
  11. data/lib/brcobranca/retorno/cnab400/banco_brasil.rb +3 -0
  12. data/lib/brcobranca/retorno/cnab400/base.rb +1 -1
  13. data/lib/brcobranca/version.rb +1 -1
  14. data/lib/brcobranca.rb +2 -0
  15. metadata +8 -139
  16. data/spec/brcobranca/base_spec.rb +0 -179
  17. data/spec/brcobranca/boleto/ailos_spec.rb +0 -148
  18. data/spec/brcobranca/boleto/banco_brasil_spec.rb +0 -336
  19. data/spec/brcobranca/boleto/banco_brasilia_spec.rb +0 -153
  20. data/spec/brcobranca/boleto/banco_nordeste_spec.rb +0 -160
  21. data/spec/brcobranca/boleto/banestes_spec.rb +0 -193
  22. data/spec/brcobranca/boleto/banrisul_spec.rb +0 -180
  23. data/spec/brcobranca/boleto/bradesco_spec.rb +0 -214
  24. data/spec/brcobranca/boleto/caixa_spec.rb +0 -160
  25. data/spec/brcobranca/boleto/citibank_spec.rb +0 -195
  26. data/spec/brcobranca/boleto/credisis_spec.rb +0 -160
  27. data/spec/brcobranca/boleto/hsbc_spec.rb +0 -171
  28. data/spec/brcobranca/boleto/itau_spec.rb +0 -261
  29. data/spec/brcobranca/boleto/safra_spec.rb +0 -171
  30. data/spec/brcobranca/boleto/santander_spec.rb +0 -142
  31. data/spec/brcobranca/boleto/sicoob_spec.rb +0 -192
  32. data/spec/brcobranca/boleto/sicredi_spec.rb +0 -194
  33. data/spec/brcobranca/boleto/unicred_spec.rb +0 -139
  34. data/spec/brcobranca/boletos_em_lote_spec.rb +0 -38
  35. data/spec/brcobranca/calculo_data_spec.rb +0 -33
  36. data/spec/brcobranca/calculo_spec.rb +0 -187
  37. data/spec/brcobranca/currency_spec.rb +0 -79
  38. data/spec/brcobranca/formatacao_spec.rb +0 -46
  39. data/spec/brcobranca/formatacao_string_spec.rb +0 -31
  40. data/spec/brcobranca/limpeza_spec.rb +0 -10
  41. data/spec/brcobranca/remessa/base_spec.rb +0 -66
  42. data/spec/brcobranca/remessa/cnab240/ailos_spec.rb +0 -165
  43. data/spec/brcobranca/remessa/cnab240/banco_brasil_spec.rb +0 -222
  44. data/spec/brcobranca/remessa/cnab240/base_spec.rb +0 -114
  45. data/spec/brcobranca/remessa/cnab240/caixa_spec.rb +0 -165
  46. data/spec/brcobranca/remessa/cnab240/sicoob_banco_brasil_spec.rb +0 -272
  47. data/spec/brcobranca/remessa/cnab240/sicoob_spec.rb +0 -200
  48. data/spec/brcobranca/remessa/cnab240/sicredi_spec.rb +0 -203
  49. data/spec/brcobranca/remessa/cnab240/unicred_spec.rb +0 -195
  50. data/spec/brcobranca/remessa/cnab400/banco_brasil_spec.rb +0 -190
  51. data/spec/brcobranca/remessa/cnab400/banco_brasilia_spec.rb +0 -188
  52. data/spec/brcobranca/remessa/cnab400/banco_nordeste_spec.rb +0 -192
  53. data/spec/brcobranca/remessa/cnab400/banrisul_spec.rb +0 -192
  54. data/spec/brcobranca/remessa/cnab400/base_spec.rb +0 -68
  55. data/spec/brcobranca/remessa/cnab400/bradesco_spec.rb +0 -203
  56. data/spec/brcobranca/remessa/cnab400/citibank_spec.rb +0 -128
  57. data/spec/brcobranca/remessa/cnab400/credisis_spec.rb +0 -190
  58. data/spec/brcobranca/remessa/cnab400/itau_spec.rb +0 -192
  59. data/spec/brcobranca/remessa/cnab400/santander_spec.rb +0 -154
  60. data/spec/brcobranca/remessa/cnab400/sicoob_spec.rb +0 -217
  61. data/spec/brcobranca/remessa/cnab400/unicred_spec.rb +0 -186
  62. data/spec/brcobranca/remessa/pagamento_spec.rb +0 -228
  63. data/spec/brcobranca/retorno/cnab240/base_spec.rb +0 -24
  64. data/spec/brcobranca/retorno/cnab240/cecred_spec.rb +0 -52
  65. data/spec/brcobranca/retorno/cnab240/santander_spec.rb +0 -52
  66. data/spec/brcobranca/retorno/cnab240/sicoob_spec.rb +0 -52
  67. data/spec/brcobranca/retorno/cnab240/sicredi_spec.rb +0 -33
  68. data/spec/brcobranca/retorno/cnab400/banco_brasilia_spec.rb +0 -37
  69. data/spec/brcobranca/retorno/cnab400/banco_nordeste_spec.rb +0 -40
  70. data/spec/brcobranca/retorno/cnab400/banrisul_spec.rb +0 -42
  71. data/spec/brcobranca/retorno/cnab400/base_spec.rb +0 -57
  72. data/spec/brcobranca/retorno/cnab400/bradesco_spec.rb +0 -59
  73. data/spec/brcobranca/retorno/cnab400/credisis_spec.rb +0 -26
  74. data/spec/brcobranca/retorno/cnab400/itau_spec.rb +0 -60
  75. data/spec/brcobranca/retorno/cnab400/santander_spec.rb +0 -40
  76. data/spec/brcobranca/retorno/cnab400/unicred_spec.rb +0 -38
  77. data/spec/brcobranca/retorno/retorno_cbr643_spec.rb +0 -69
  78. data/spec/brcobranca/retorno/retorno_cnab400_spec.rb +0 -58
  79. data/spec/brcobranca/retorno/retorno_cnab_240_spec.rb +0 -53
  80. data/spec/brcobranca/rghost_spec.rb +0 -29
  81. data/spec/brcobranca/util/empresa_spec.rb +0 -35
  82. data/spec/brcobranca_spec.rb +0 -33
@@ -1,187 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Calculo do
6
- it 'Calcula módulo 10' do
7
- expect { ''.modulo10 }.to raise_error(ArgumentError)
8
- expect { ' '.modulo10 }.to raise_error(ArgumentError)
9
- expect(0.modulo10).to be(0)
10
- expect('0'.modulo10).to be(0)
11
- expect('001905009'.modulo10).to be(5)
12
- expect('4014481606'.modulo10).to be(9)
13
- expect('0680935031'.modulo10).to be(4)
14
- expect('29004590'.modulo10).to be(5)
15
- expect('341911012'.modulo10).to be(1)
16
- expect('3456788005'.modulo10).to be(8)
17
- expect('7123457000'.modulo10).to be(1)
18
- expect('00571234511012345678'.modulo10).to be(8)
19
- expect('001905009'.modulo10).to be_a_kind_of(Integer)
20
- expect(1_905_009.modulo10).to be(5)
21
- expect(4_014_481_606.modulo10).to be(9)
22
- expect(680_935_031.modulo10).to be(4)
23
- expect(29_004_590.modulo10).to be(5)
24
- expect(1_905_009.modulo10).to be_a_kind_of(Integer)
25
- end
26
-
27
- it 'Multiplicador' do
28
- expect('85068014982'.multiplicador(fatores: [2, 3, 4, 5, 6, 7, 8, 9])).to be(255)
29
- expect('05009401448'.multiplicador(fatores: [2, 3, 4, 5, 6, 7, 8, 9])).to be(164)
30
- expect('12387987777700168'.multiplicador(fatores: [2, 3, 4, 5, 6, 7, 8, 9])).to be(460)
31
- expect('34230'.multiplicador(fatores: [2, 3, 4, 5, 6, 7, 8, 9])).to be(55)
32
- expect('258281'.multiplicador(fatores: [2, 3, 4, 5, 6, 7, 8, 9])).to be(118)
33
- expect('5444'.multiplicador(fatores: [2, 3, 4, 5, 6, 7, 8, 9])).to be_a_kind_of(Integer)
34
- expect('000000005444'.multiplicador(fatores: [2, 3, 4, 5, 6, 7, 8, 9])).to be_a_kind_of(Integer)
35
- expect(85_068_014_982.multiplicador(fatores: [2, 3, 4, 5, 6, 7, 8, 9])).to be(255)
36
- expect(5_009_401_448.multiplicador(fatores: [2, 3, 4, 5, 6, 7, 8, 9])).to be(164)
37
- expect(5444.multiplicador(fatores: [2, 3, 4, 5, 6, 7, 8, 9])).to be(61)
38
- expect(1_129_004_590.multiplicador(fatores: [2, 3, 4, 5, 6, 7, 8, 9])).to be(162)
39
- expect(5444.multiplicador(fatores: [2, 3, 4, 5, 6, 7, 8, 9])).to be_a_kind_of(Integer)
40
- expect { '2582fd81'.multiplicador(fatores: [2, 3, 4, 5, 6, 7, 8, 9]) }.to raise_error(ArgumentError)
41
- expect { 5444.multiplicador }.to raise_error(ArgumentError)
42
- end
43
-
44
- describe 'módulo 11 de 9 até 2' do
45
- def modulo_11_de_9_ate_2(numero)
46
- numero.modulo11
47
- end
48
-
49
- it 'Calcula o resultado' do
50
- expect(modulo_11_de_9_ate_2('85068014982')).to be(9)
51
- expect(modulo_11_de_9_ate_2('05009401448')).to be(1)
52
- expect(modulo_11_de_9_ate_2('12387987777700168')).to be(2)
53
- expect(modulo_11_de_9_ate_2('4042')).to be(8)
54
- expect(modulo_11_de_9_ate_2('61900')).to be(0)
55
- expect(modulo_11_de_9_ate_2('0719')).to be(6)
56
- expect(modulo_11_de_9_ate_2('000000005444')).to be(5)
57
- expect(modulo_11_de_9_ate_2('5444')).to be(5)
58
- expect(modulo_11_de_9_ate_2('01129004590')).to be(3)
59
- expect(modulo_11_de_9_ate_2('15735')).to be(10)
60
- expect(modulo_11_de_9_ate_2('777700168')).to be(0)
61
- expect(modulo_11_de_9_ate_2('77700168')).to be(3)
62
- expect(modulo_11_de_9_ate_2('00015448')).to be(2)
63
- expect(modulo_11_de_9_ate_2('15448')).to be(2)
64
- expect(modulo_11_de_9_ate_2('12345678')).to be(9)
65
- expect(modulo_11_de_9_ate_2('34230')).to be(0)
66
- expect(modulo_11_de_9_ate_2('258281')).to be(3)
67
- expect(modulo_11_de_9_ate_2(85_068_014_982)).to be(9)
68
- expect(modulo_11_de_9_ate_2(5_009_401_448)).to be(1)
69
- expect(modulo_11_de_9_ate_2(12_387_987_777_700_168)).to be(2)
70
- expect(modulo_11_de_9_ate_2(4042)).to be(8)
71
- expect(modulo_11_de_9_ate_2(61_900)).to be(0)
72
- expect(modulo_11_de_9_ate_2(719)).to be(6)
73
- expect(modulo_11_de_9_ate_2(5444)).to be(5)
74
- expect(modulo_11_de_9_ate_2(1_129_004_590)).to be(3)
75
- end
76
-
77
- it 'Retorna o tipo correto' do
78
- expect(modulo_11_de_9_ate_2(5444)).to be_a_kind_of(Integer)
79
- expect(modulo_11_de_9_ate_2('5444')).to be_a_kind_of(Integer)
80
- expect(modulo_11_de_9_ate_2('000000005444')).to be_a_kind_of(Integer)
81
- end
82
- end
83
-
84
- describe 'Módulo 11 de 9 até 2 trocando 10 por X' do
85
- def modulo_11_de_9_ate_2_map_10_X(numero)
86
- numero.modulo11(mapeamento: { 10 => 'X' })
87
- end
88
-
89
- it 'Calcula o resultado' do
90
- expect(modulo_11_de_9_ate_2_map_10_X('85068014982')).to be(9)
91
- expect(modulo_11_de_9_ate_2_map_10_X('05009401448')).to be(1)
92
- expect(modulo_11_de_9_ate_2_map_10_X('12387987777700168')).to be(2)
93
- expect(modulo_11_de_9_ate_2_map_10_X('4042')).to be(8)
94
- expect(modulo_11_de_9_ate_2_map_10_X('61900')).to be(0)
95
- expect(modulo_11_de_9_ate_2_map_10_X('0719')).to be(6)
96
- expect(modulo_11_de_9_ate_2_map_10_X('000000005444')).to be(5)
97
- expect(modulo_11_de_9_ate_2_map_10_X('5444')).to be(5)
98
- expect(modulo_11_de_9_ate_2_map_10_X('01129004590')).to be(3)
99
- expect(modulo_11_de_9_ate_2_map_10_X('15735')).to eql('X')
100
- end
101
-
102
- it 'Retorna o tipo correto' do
103
- expect(modulo_11_de_9_ate_2_map_10_X('15735')).to be_a_kind_of(String)
104
- expect(modulo_11_de_9_ate_2_map_10_X('5444')).to be_a_kind_of(Integer)
105
- expect(modulo_11_de_9_ate_2_map_10_X('000000005444')).to be_a_kind_of(Integer)
106
- end
107
-
108
- it { expect { modulo_11_de_9_ate_2_map_10_X '2582fd81' }.to raise_error(ArgumentError) }
109
- end
110
-
111
- describe 'Módulo 11 de 2 até 9' do
112
- def modulo_11_de_2_ate_9(numero)
113
- numero.modulo11(
114
- multiplicador: (2..9).to_a,
115
- mapeamento: { 0 => 1, 10 => 1, 11 => 1 }
116
- ) { |total| 11 - (total % 11) }
117
- end
118
-
119
- it 'Calcula o resultado' do
120
- expect(modulo_11_de_2_ate_9('0019373700000001000500940144816060680935031')).to be(3)
121
- expect(modulo_11_de_2_ate_9('3419166700000123451101234567880057123457000')).to be(6)
122
- expect(modulo_11_de_2_ate_9('7459588800000774303611264424020000000002674')).to be(4)
123
- expect(modulo_11_de_2_ate_9('7459588800000580253611264424020000000003131')).to be(1)
124
- expect(modulo_11_de_2_ate_9(19_373_700_000_001_000_500_940_144_816_060_680_935_031)).to be(3)
125
- end
126
-
127
- it 'Retorna o tipo correto' do
128
- expect(modulo_11_de_2_ate_9(19_373_700_000_001_000_500_940_144_816_060_680_935_031)).to be_a_kind_of(Integer)
129
- expect(modulo_11_de_2_ate_9('0019373700000001000500940144816060680935031')).to be_a_kind_of(Integer)
130
- end
131
-
132
- it { expect { modulo_11_de_2_ate_9 '2582fd81' }.to raise_error(ArgumentError) }
133
- end
134
-
135
- # Ex: Sicoob
136
- describe 'Módulo 11 com multiplicadores 3, 7, 9, 1, trocando 11 e 10 por 0' do
137
- def modulo_11_com_3_7_9_1_map_10_e_10_por_0(numero)
138
- numero.modulo11(
139
- multiplicador: [3, 7, 9, 1],
140
- mapeamento: { 10 => 0, 11 => 0 }
141
- ) { |t| 11 - (t % 11) }
142
- end
143
-
144
- it { expect(modulo_11_com_3_7_9_1_map_10_e_10_por_0('000100000000190000045')).to be(4) }
145
- it { expect(modulo_11_com_3_7_9_1_map_10_e_10_por_0('442300000520270100183')).to be(4) }
146
- it { expect(modulo_11_com_3_7_9_1_map_10_e_10_por_0('442300000520270100184')).to be(1) }
147
- end
148
-
149
- # Ex: Bradesco
150
- describe 'Módulo 11 de 2 até 7 trocando 10 por P e 11 por 0' do
151
- def modulo_11_de_2_ate_7_map_10_P_e_11_0(numero)
152
- numero.modulo11(
153
- multiplicador: [2, 3, 4, 5, 6, 7],
154
- mapeamento: { 10 => 'P', 11 => 0 }
155
- ) { |total| 11 - (total % 11) }
156
- end
157
-
158
- it 'Calcula o resultado' do
159
- expect(modulo_11_de_2_ate_7_map_10_P_e_11_0('19669')).to eql('P')
160
- expect(modulo_11_de_2_ate_7_map_10_P_e_11_0('19694')).to be(0)
161
- end
162
- end
163
-
164
- it 'Calcula a soma dos digitos de um número com mais de 1 algarismo' do
165
- expect(11.soma_digitos).to be(2)
166
- expect(8.soma_digitos).to be(8)
167
- expect('11'.soma_digitos).to be(2)
168
- expect('8'.soma_digitos).to be(8)
169
- expect(0.soma_digitos).to be(0)
170
- expect(11.soma_digitos).to be_a_kind_of(Integer)
171
- expect('11'.soma_digitos).to be_a_kind_of(Integer)
172
- end
173
-
174
- describe '#duplo_digito' do
175
- specify(:aggregate_failures) do
176
- expect(111.duplo_digito).to eql('50')
177
- expect(8.duplo_digito).to eql('33')
178
- expect('111'.duplo_digito).to eql('50')
179
- expect('8'.duplo_digito).to eql('33')
180
- expect(0.duplo_digito).to eql('00')
181
- expect(19_669.duplo_digito).to eql('28')
182
- expect('00000032000272012924021'.duplo_digito).to eql('79')
183
- expect('00000033000272012924021'.duplo_digito).to eql('65')
184
- expect('9194'.duplo_digito).to eql('38')
185
- end
186
- end
187
- end
@@ -1,79 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Currency::String do
6
- it 'returns true if value seted is a valid ruby number' do
7
- expect('1234').to be_numeric
8
- expect('123.4').to be_numeric
9
- expect('123,4').to be_numeric
10
- expect('1234.03').to be_numeric
11
- expect('1234,03').to be_numeric
12
- expect('-1234').to be_numeric
13
- expect('-123.4').to be_numeric
14
- expect('-123,4').to be_numeric
15
- expect('-1234.03').to be_numeric
16
- expect('-1234,03').to be_numeric
17
- expect('+1234').to be_numeric
18
- expect('+123.4').to be_numeric
19
- expect('+123,4').to be_numeric
20
- expect('+1234.03').to be_numeric
21
- expect('+1234,03').to be_numeric
22
- end
23
-
24
- it 'returns false if value seted is NOT a valid ruby number' do
25
- expect('1234,').not_to be_numeric
26
- expect('1234.').not_to be_numeric
27
- expect('1,234.03').not_to be_numeric
28
- expect('1.234.03').not_to be_numeric
29
- expect('1,234,03').not_to be_numeric
30
- expect('12.340,03').not_to be_numeric
31
- expect('1234ab').not_to be_numeric
32
- expect('ab1213').not_to be_numeric
33
- expect('ffab').not_to be_numeric
34
- end
35
-
36
- it 'converts value seted to valid ruby number' do
37
- expect('1234'.to_number).to be(1234.0)
38
- expect('123.4'.to_number).to be(123.4)
39
- expect('123,4'.to_number).to be(123.4)
40
- expect('1234.03'.to_number).to be(1234.03)
41
- expect('1234,03'.to_number).to be(1234.03)
42
- end
43
-
44
- it 'returns nil when is not possible convert value seted' do
45
- expect('1234,'.to_number).to be_nil
46
- expect('1234.'.to_number).to be_nil
47
- expect('1,234.03'.to_number).to be_nil
48
- expect('1.234.03'.to_number).to be_nil
49
- expect('1,234,03'.to_number).to be_nil
50
- expect('12.340,03'.to_number).to be_nil
51
- expect('1234ab'.to_number).to be_nil
52
- expect('ab1213'.to_number).to be_nil
53
- expect('ffab'.to_number).to be_nil
54
- end
55
- end
56
-
57
- RSpec.describe Brcobranca::Currency::Number do
58
- it 'converts value seted to currency value' do
59
- expect(1234.to_currency).to eql('1.234,00')
60
- expect(123.4.to_currency).to eql('123,40')
61
- expect(1234.03.to_currency).to eql('1.234,03')
62
- expect(1234.03.to_currency(options = { unit: 'R$ ' })).to eql('R$ 1.234,03')
63
- expect(1234.03.to_currency(options = { unit: 'R$ ', separator: '.' })).to eql('R$ 1.234.03')
64
- expect(1234.03.to_currency(options = { unit: 'R$ ', separator: '.', delimiter: ',' })).to eql('R$ 1,234.03')
65
- expect(1234.03.to_currency(options = { unit: 'R$ ', precision: 3 })).to eql('R$ 1.234,030')
66
- end
67
-
68
- it 'converts value seted using delimiter and separator' do
69
- expect(1234.with_delimiter).to eql('1,234')
70
- expect(123.4.with_delimiter).to eql('123.4')
71
- expect(1234.03.with_delimiter).to eql('1,234.03')
72
- end
73
-
74
- it 'converts value seted using precision' do
75
- expect(1234.with_precision).to eql('1234.000')
76
- expect(123.4.with_precision).to eql('123.400')
77
- expect(1234.03.with_precision).to eql('1234.030')
78
- end
79
- end
@@ -1,46 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Formatacao do
6
- it 'Formata o CPF' do
7
- expect(98_789_298_790.to_br_cpf).to eql('987.892.987-90')
8
- expect('98789298790'.to_br_cpf).to eql('987.892.987-90')
9
- expect('987.892.987-90'.to_br_cpf).to eql('987.892.987-90')
10
- end
11
-
12
- it 'Formata o CEP' do
13
- expect(85_253_100.to_br_cep).to eql('85253-100')
14
- expect('85253100'.to_br_cep).to eql('85253-100')
15
- expect('85253-100'.to_br_cep).to eql('85253-100')
16
- end
17
-
18
- it 'Formata o CNPJ' do
19
- expect(88_394_510_000_103.to_br_cnpj).to eql('88.394.510/0001-03')
20
- expect('88394510000103'.to_br_cnpj).to eql('88.394.510/0001-03')
21
- expect('88.394.510/0001-03'.to_br_cnpj).to eql('88.394.510/0001-03')
22
- end
23
-
24
- it 'Formata números automáticamente de acordo com o número de caracteres' do
25
- expect(98_789_298_790.formata_documento).to eql('987.892.987-90')
26
- expect('98789298790'.formata_documento).to eql('987.892.987-90')
27
- expect('987.892.987-90'.formata_documento).to eql('987.892.987-90')
28
- expect(85_253_100.formata_documento).to eql('85253-100')
29
- expect('85253100'.formata_documento).to eql('85253-100')
30
- expect('85253-100'.formata_documento).to eql('85253-100')
31
- expect(88_394_510_000_103.formata_documento).to eql('88.394.510/0001-03')
32
- expect('88394510000103'.formata_documento).to eql('88.394.510/0001-03')
33
- expect('88.394.510/0001-03'.formata_documento).to eql('88.394.510/0001-03')
34
- expect('8839'.formata_documento).to eql('8839')
35
- expect('8839451000010388394510000103'.formata_documento).to eql('8839451000010388394510000103')
36
- end
37
-
38
- it 'Monta linha digitável' do
39
- expect('00192376900000135000000001238798777770016818'.linha_digitavel).to eql('00190.00009 01238.798779 77700.168188 2 37690000013500')
40
- expect('00192376900000135000000001238798777770016818'.linha_digitavel).to be_a_kind_of(String)
41
- expect { ''.linha_digitavel }.to raise_error(ArgumentError)
42
- expect { '00193373700'.linha_digitavel }.to raise_error(ArgumentError)
43
- expect { '0019337370000193373700'.linha_digitavel }.to raise_error(ArgumentError)
44
- expect { '00b193373700bb00193373700'.linha_digitavel }.to raise_error(ArgumentError)
45
- end
46
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::FormatacaoString do
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 {
17
- expect("SOÇIEDADE, BRASI@?!+-_LEIR'\"A DE ZÔÔLOGIA LTDA.".format_size(30)).to eql('SOCIEDADE BRASILEIRA DE ZOOLOG')
18
- }
19
-
20
- it { expect('pablo diego JOSÉ FRANCISCO DE PAULA JUAN'.format_size(30)).to eql('pablo diego JOSE FRANCISCO DE ') }
21
-
22
- it {
23
- expect('DF 250, KM 4 Cond. La Foret , Qd. M Casa 03'.format_size(40)).to eql('DF 250 KM 4 Cond La Foret Qd M Casa 03 ')
24
- }
25
- end
26
-
27
- context 'bellow size' do
28
- it { expect('SOCIEDADE'.format_size(30)).to eql('SOCIEDADE ') }
29
- it { expect('caçaróla'.format_size(30)).to eql('cacarola ') }
30
- end
31
- end
@@ -1,10 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Limpeza do
6
- it 'Formata Float em String' do
7
- expect(1234.03.limpa_valor_moeda).to eq('123403')
8
- expect(1234.3.limpa_valor_moeda).to eq('123430')
9
- end
10
- end
@@ -1,66 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Remessa::Base do
6
- let(:pagamento) do
7
- Brcobranca::Remessa::Pagamento.new(valor: 199.9,
8
- data_vencimento: Date.current,
9
- nosso_numero: 123,
10
- documento_sacado: '12345678901',
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
- uf_sacado: 'SP')
17
- end
18
- let(:params) do
19
- { empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
20
- agencia: '123',
21
- conta_corrente: '1234',
22
- pagamentos: [pagamento] }
23
- end
24
- let(:base) { subject.class.new(params) }
25
-
26
- context 'validacoes' do
27
- context '@pagamentos' do
28
- it 'deve ser invalido se nao possuir ao menos um pagamento' do
29
- objeto = subject.class.new(params.merge!(pagamentos: nil))
30
- expect(objeto.invalid?).to be true
31
- expect(objeto.errors.full_messages).to include('Pagamentos não pode estar em branco.')
32
- end
33
-
34
- it 'deve ser invalido se nao for uma colecao (array)' do
35
- objeto = subject.class.new(params.merge!(pagamentos: 'teste'))
36
- expect(objeto.invalid?).to be true
37
- expect(objeto.errors.full_messages).to include('Pagamentos deve ser uma coleção (Array).')
38
- end
39
-
40
- it 'deve ser invalido se a colecao estiver vazia' do
41
- objeto = subject.class.new(params.merge!(pagamentos: []))
42
- expect(objeto.invalid?).to be true
43
- expect(objeto.errors.full_messages).to include('Pagamentos não pode estar vazio.')
44
- end
45
-
46
- it 'deve ser invalido se a colecao nao for de objetos Pagamento' do
47
- objeto = subject.class.new(params.merge!(pagamentos: ['teste']))
48
- expect(objeto.invalid?).to be true
49
- expect(objeto.errors.full_messages).to include('Pagamentos cada item deve ser um objeto Pagamento.')
50
- end
51
-
52
- it 'deve ser invalido se um objeto da colecao for invalido' do
53
- objeto = subject.class.new(params.merge!(pagamentos: [Brcobranca::Remessa::Pagamento.new]))
54
- expect(objeto.invalid?).to be true
55
- end
56
- end
57
-
58
- context '@empresa_mae' do
59
- it 'deve ser invalido se nao possuir uma empresa mae' do
60
- objeto = subject.class.new(params.merge!(empresa_mae: nil))
61
- expect(objeto.invalid?).to be true
62
- expect(objeto.errors.full_messages).to include('Empresa mae não pode estar em branco.')
63
- end
64
- end
65
- end
66
- end
@@ -1,165 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- RSpec.describe Brcobranca::Remessa::Cnab240::Ailos do
6
- let(:pagamento) do
7
- Brcobranca::Remessa::Pagamento.new(valor: 199.9,
8
- data_vencimento: Date.current,
9
- nosso_numero: 123,
10
- numero: 123,
11
- documento: 6969,
12
- documento_sacado: '12345678901',
13
- nome_sacado: 'PABLO DIEGO JOSÉ FRANCISCO,!^.?\/@ DE PAULA JUAN NEPOMUCENO MARÍA DE LOS REMEDIOS CIPRIANO DE LA SANTÍSSIMA TRINIDAD RUIZ Y PICASSO',
14
- endereco_sacado: 'RUA RIO GRANDE DO SUL,!^.?\/@ São paulo Minas caçapa da silva junior',
15
- bairro_sacado: 'São josé dos quatro apostolos magros',
16
- cep_sacado: '12345678',
17
- cidade_sacado: 'Santa rita de cássia maria da silva',
18
- uf_sacado: 'SP',
19
- codigo_multa: '2',
20
- percentual_multa: 2.0)
21
- end
22
- let(:params) do
23
- { empresa_mae: 'SOCIEDADE BRASILEIRA DE ZOOLOGIA LTDA',
24
- agencia: '12345',
25
- conta_corrente: '1234567',
26
- documento_cedente: '12345678901',
27
- convenio: '123456',
28
- digito_agencia: '1',
29
- sequencial_remessa: '000001',
30
- pagamentos: [pagamento] }
31
- end
32
- let(:ailos) { subject.class.new(params) }
33
-
34
- context 'validacoes' do
35
- context '@digito_agencia' do
36
- it 'deve ser invalido se nao possuir o digito da agencia' do
37
- objeto = subject.class.new(params.merge!(digito_agencia: nil))
38
- expect(objeto.invalid?).to be true
39
- expect(objeto.errors.full_messages).to include('Digito agencia não pode estar em branco.')
40
- end
41
-
42
- it 'deve ser invalido se o digito da agencia nao tiver 1 digito' do
43
- ailos.digito_agencia = '12'
44
- expect(ailos.invalid?).to be true
45
- expect(ailos.errors.full_messages).to include('Digito agencia deve ter 1 dígito.')
46
- end
47
- end
48
-
49
- context '@convenio' do
50
- it 'deve ser invalido se nao possuir o convenio' do
51
- objeto = subject.class.new(params.merge!(convenio: nil))
52
- expect(objeto.invalid?).to be true
53
- expect(objeto.errors.full_messages).to include('Convenio não pode estar em branco.')
54
- end
55
-
56
- it 'deve ser invalido se o convenio tiver mais de 6 digitos' do
57
- ailos.convenio = '1234567'
58
- expect(ailos.invalid?).to be true
59
- expect(ailos.errors.full_messages).to include('Convenio deve ter 6 dígitos.')
60
- end
61
- end
62
-
63
- context '@conta_corrente' do
64
- it 'deve ser invalido se nao possuir o conta corrente' do
65
- objeto = subject.class.new(params.merge!(conta_corrente: nil))
66
- expect(objeto.invalid?).to be true
67
- expect(objeto.errors.full_messages).to include('Conta corrente não pode estar em branco.')
68
- end
69
-
70
- it 'deve ser invalido se o conta corrente tiver mais de 7 digitos' do
71
- ailos.conta_corrente = ''.rjust(8, '0')
72
- expect(ailos.invalid?).to be true
73
- expect(ailos.errors.full_messages).to include('Conta corrente deve ter 7 dígitos.')
74
- end
75
- end
76
- end
77
-
78
- context 'formatacao' do
79
- it 'codigo do banco deve retornar 085' do
80
- expect(ailos.cod_banco).to eq '085'
81
- end
82
-
83
- it 'nome do banco deve ser Ailos com 30 posicoes' do
84
- nome_banco = ailos.nome_banco
85
- expect(nome_banco.size).to eq 30
86
- expect(nome_banco[0..4]).to eq 'AILOS'
87
- end
88
-
89
- it 'versao do layout do arquivo deve retornar 087' do
90
- expect(ailos.versao_layout_arquivo).to eq '087'
91
- end
92
-
93
- it 'versao do layout do lote deve ser 045' do
94
- expect(ailos.versao_layout_lote).to eq '045'
95
- end
96
-
97
- it 'codigo do convenio deve ser 20 caracteres' do
98
- expect(ailos.codigo_convenio).to eq '123456'.ljust(20, ' ')
99
- end
100
-
101
- it 'convenio lote deve retornar as informacoes nas posicoes corretas' do
102
- conv_lote = ailos.convenio_lote
103
- expect(conv_lote[0..5]).to eq '123456'
104
- expect(conv_lote[6..19]).to eq ''.rjust(14, ' ')
105
- end
106
-
107
- it 'info_conta deve retornar as informacoes nas posicoes corretas' do
108
- info_conta = ailos.info_conta
109
- expect(info_conta[0..4]).to eq '12345' # agencia
110
- expect(info_conta[5]).to eq '1' # digito agencia
111
- expect(info_conta[6..17]).to eq '000001234567' # conta corrente
112
- expect(info_conta[18]).to eq '9' # dv conta corrente
113
- expect(info_conta[19]).to eq ' ' # dv agencia/conta
114
- end
115
-
116
- it 'complemento header deve retornar as informacoes nas posicoes corretas' do
117
- comp_header = ailos.complemento_header
118
- expect(comp_header.size).to eq 29
119
- expect(comp_header[0..28]).to eq ''.rjust(29, ' ')
120
- end
121
-
122
- it 'complemento trailer deve retornar as informacoes nas posicoes corretas' do
123
- comp_trailer = ailos.complemento_trailer
124
- expect(comp_trailer.size).to eq 217
125
-
126
- total_cobranca_simples = '00000100000000000019990'
127
- total_cobranca_vinculada = ''.rjust(23, '0')
128
- total_cobranca_caucionada = ''.rjust(23, '0')
129
- total_cobranca_descontada = ''.rjust(23, '0')
130
-
131
- expect(comp_trailer).to eq "#{total_cobranca_simples}#{total_cobranca_vinculada}"\
132
- "#{total_cobranca_caucionada}#{total_cobranca_descontada}".ljust(217, ' ')
133
- end
134
-
135
- it 'complemento P deve retornar as informacoes nas posicoes corretas' do
136
- comp_p = ailos.complemento_p pagamento
137
- expect(comp_p.size).to eq 34
138
- expect(comp_p[0..11]).to eq '000001234567' # conta corrente
139
- expect(comp_p[12]).to eq '9' # dv conta corrente
140
- expect(comp_p[13]).to eq ' ' # dv agencia/conta
141
- expect(comp_p[14..33]).to eq '12345679000000123'.ljust(20, ' ') # nosso numero
142
- end
143
-
144
- it 'tipo do documento deve ser 1 - Tradicional' do
145
- expect(ailos.tipo_documento).to eq '1'
146
- end
147
-
148
- it 'deve conter a identificacao do titulo da empresa' do
149
- segmento_p = ailos.monta_segmento_p(pagamento, 1, 2)
150
- expect(segmento_p[195..219]).to eq '6969'.ljust(25, ' ')
151
- end
152
- end
153
-
154
- context 'geracao remessa' do
155
- it_behaves_like 'cnab240'
156
-
157
- context 'arquivo' do
158
- before { Timecop.freeze(Time.local(2015, 7, 14, 16, 15, 15)) }
159
-
160
- after { Timecop.return }
161
-
162
- it { expect(ailos.gera_arquivo).to eq(read_remessa('remessa-ailos-cnab240.rem', ailos.gera_arquivo)) }
163
- end
164
- end
165
- end