br_boleto 0.1.0 → 1.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.
Files changed (53) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +3 -0
  3. data/Gemfile.lock +3 -3
  4. data/README.markdown +196 -11
  5. data/Rakefile +5 -0
  6. data/br_boleto.gemspec +1 -1
  7. data/lib/br_boleto.rb +30 -12
  8. data/lib/br_boleto/{core/boleto.rb → boleto/base.rb} +83 -5
  9. data/lib/br_boleto/boleto/sicoob.rb +211 -0
  10. data/lib/br_boleto/calculos/modulo11_fator3197.rb +5 -5
  11. data/lib/br_boleto/helper/cpf_cnpj.rb +60 -0
  12. data/lib/br_boleto/helper/number.rb +15 -0
  13. data/lib/br_boleto/remessa/base.rb +89 -0
  14. data/lib/br_boleto/remessa/cnab240/base.rb +328 -0
  15. data/lib/br_boleto/remessa/cnab240/helper/header_arquivo.rb +186 -0
  16. data/lib/br_boleto/remessa/cnab240/helper/header_lote.rb +180 -0
  17. data/lib/br_boleto/remessa/cnab240/helper/segmento_p.rb +349 -0
  18. data/lib/br_boleto/remessa/cnab240/helper/segmento_q.rb +206 -0
  19. data/lib/br_boleto/remessa/cnab240/helper/segmento_r.rb +261 -0
  20. data/lib/br_boleto/remessa/cnab240/helper/segmento_s.rb +193 -0
  21. data/lib/br_boleto/remessa/cnab240/helper/trailer_arquivo.rb +88 -0
  22. data/lib/br_boleto/remessa/cnab240/helper/trailer_lote.rb +75 -0
  23. data/lib/br_boleto/remessa/cnab240/sicoob.rb +246 -0
  24. data/lib/br_boleto/remessa/lote.rb +52 -0
  25. data/lib/br_boleto/remessa/pagamento.rb +238 -0
  26. data/lib/br_boleto/string_methods.rb +21 -0
  27. data/lib/br_boleto/version.rb +2 -2
  28. data/test/br_boleto/{core/boleto_test.rb → boleto/base_test.rb} +107 -11
  29. data/test/br_boleto/{core → boleto}/sicoob_test.rb +60 -2
  30. data/test/br_boleto/remessa/base_test.rb +80 -0
  31. data/test/br_boleto/remessa/cnab240/base_test.rb +405 -0
  32. data/test/br_boleto/remessa/cnab240/helper/header_arquivo_test.rb +208 -0
  33. data/test/br_boleto/remessa/cnab240/helper/header_lote_test.rb +200 -0
  34. data/test/br_boleto/remessa/cnab240/helper/segmento_p_test.rb +390 -0
  35. data/test/br_boleto/remessa/cnab240/helper/segmento_q_test.rb +223 -0
  36. data/test/br_boleto/remessa/cnab240/helper/segmento_r_test.rb +260 -0
  37. data/test/br_boleto/remessa/cnab240/helper/segmento_s_test.rb +217 -0
  38. data/test/br_boleto/remessa/cnab240/helper/trailer_arquivo_test.rb +82 -0
  39. data/test/br_boleto/remessa/cnab240/helper/trailer_lote_test.rb +67 -0
  40. data/test/br_boleto/remessa/cnab240/sicoob_test.rb +347 -0
  41. data/test/br_boleto/remessa/lote_test.rb +49 -0
  42. data/test/br_boleto/remessa/pagamento_test.rb +339 -0
  43. data/test/factories/{boleto.rb → boleto/base.rb} +1 -1
  44. data/test/factories/{boleto_sicoob.rb → boleto/boleto_sicoob.rb} +1 -1
  45. data/test/factories/remessa/base.rb +13 -0
  46. data/test/factories/remessa/cnab240/base.rb +18 -0
  47. data/test/factories/remessa/cnab240/sicoob.rb +18 -0
  48. data/test/factories/remessa/lote.rb +7 -0
  49. data/test/factories/remessa/pagamento.rb +16 -0
  50. data/test/inheritance/boleto_test.rb +1 -1
  51. data/test/inheritance/sicoob_test.rb +1 -1
  52. metadata +65 -13
  53. data/lib/br_boleto/core/sicoob.rb +0 -169
@@ -0,0 +1,223 @@
1
+ module Helper
2
+ module SegmentoQTest
3
+ def test_SegmentoQTest_metodo_monta_segmento_q_deve_ter_o_conteudo_dos_metodos_na_sequencia
4
+ subject.stubs(:segmento_q_posicao_001_a_003).returns( " 001_a_003")
5
+ subject.stubs(:segmento_q_posicao_004_a_007).with(1).returns( " 004_a_007")
6
+ subject.stubs(:segmento_q_posicao_008_a_008).returns( " 008_a_008")
7
+ subject.stubs(:segmento_q_posicao_009_a_013).with(2).returns( " 009_a_013")
8
+ subject.stubs(:segmento_q_posicao_014_a_014).returns( " 014_a_014")
9
+ subject.stubs(:segmento_q_posicao_015_a_015).returns( " 015_a_015")
10
+ subject.stubs(:segmento_q_posicao_016_a_017).returns( " 016_a_017")
11
+ subject.stubs(:segmento_q_posicao_018_a_018).with(pagamento).returns(" 018_a_018")
12
+ subject.stubs(:segmento_q_posicao_019_a_033).with(pagamento).returns(" 019_a_033")
13
+ subject.stubs(:segmento_q_posicao_034_a_073).with(pagamento).returns(" 034_a_073")
14
+ subject.stubs(:segmento_q_posicao_074_a_113).with(pagamento).returns(" 074_a_113")
15
+ subject.stubs(:segmento_q_posicao_114_a_128).with(pagamento).returns(" 114_a_128")
16
+ subject.stubs(:segmento_q_posicao_129_a_133).with(pagamento).returns(" 129_a_133")
17
+ subject.stubs(:segmento_q_posicao_134_a_136).with(pagamento).returns(" 134_a_136")
18
+ subject.stubs(:segmento_q_posicao_137_a_151).with(pagamento).returns(" 137_a_151")
19
+ subject.stubs(:segmento_q_posicao_152_a_153).with(pagamento).returns(" 152_a_153")
20
+ subject.stubs(:segmento_q_posicao_154_a_154).with(pagamento).returns(" 154_a_154")
21
+ subject.stubs(:segmento_q_posicao_155_a_169).with(pagamento).returns(" 155_a_169")
22
+ subject.stubs(:segmento_q_posicao_170_a_209).with(pagamento).returns(" 170_a_209")
23
+ subject.stubs(:segmento_q_posicao_210_a_212).returns( " 210_a_212")
24
+ subject.stubs(:segmento_q_posicao_213_a_232).returns( " 213_a_232")
25
+ subject.stubs(:segmento_q_posicao_233_a_240).returns( " 233_a_240")
26
+ # Deve dar um upcase
27
+ subject.monta_segmento_q(pagamento, 1, 2).must_equal(" 001_A_003 004_A_007 008_A_008 009_A_013 014_A_014 015_A_015 016_A_017 018_A_018 019_A_033 034_A_073 074_A_113 114_A_128 129_A_133 134_A_136 137_A_151 152_A_153 154_A_154 155_A_169 170_A_209 210_A_212 213_A_232 233_A_240")
28
+ end
29
+
30
+ # Código do banco
31
+ # 3 posições
32
+ # Por padrão deve retornar o "codigo_banco"
33
+ #
34
+ def test_SegmentoQTest_metodo_segmento_q_posicao_001_a_003
35
+ subject.expects(:codigo_banco).returns("669")
36
+ subject.segmento_q_posicao_001_a_003.must_equal("669")
37
+ end
38
+
39
+ # Lote de Serviço: Número seqüencial para identificar univocamente um lote de serviço.
40
+ # Criado e controlado pelo responsável pela geração magnética dos dados contidos no arquivo.
41
+ # Preencher com '0001' para o primeiro lote do arquivo.
42
+ # Para os demais: número do lote anterior acrescido de 1. O número não poderá ser repetido dentro do arquivo.
43
+ # 4 posições
44
+ # Padrão recebe o nro do lote por parametro e ajusta para 4 caracteres
45
+ #
46
+ def test_SegmentoQTest_metodo_segmento_q_posicao_004_a_007
47
+ subject.segmento_q_posicao_004_a_007(5).to_s.rjust(4, '0')
48
+ end
49
+
50
+ # Tipo do registro -> Padrão 3
51
+ # 1 posição
52
+ # Por padrão retorna '3'
53
+ #
54
+ def test_SegmentoQTest_metodo_segmento_q_posicao_008_a_008
55
+ subject.segmento_q_posicao_008_a_008.must_equal '3'
56
+ end
57
+
58
+ # Nº Sequencial do Registro no Lote
59
+ # 5 posições
60
+ # Deve ajustar o numero sequencial para 5 posições
61
+ #
62
+ def test_SegmentoQTest_metodo_segmento_q_posicao_009_a_013#(sequencial)
63
+ subject.segmento_q_posicao_009_a_013(1).must_equal '00001'
64
+ end
65
+
66
+ # Cód. Segmento do Registro Detalhe
67
+ # 1 posição
68
+ # Por padrão retorna o valor 'Q'
69
+ #
70
+ def test_SegmentoQTest_metodo_segmento_q_posicao_014_a_014
71
+ subject.segmento_q_posicao_014_a_014.must_equal 'Q'
72
+ end
73
+
74
+ # Uso Exclusivo FEBRABAN/CNAB
75
+ # 1 posição
76
+ # Valor em branco
77
+ #
78
+ def test_SegmentoQTest_metodo_segmento_q_posicao_015_a_015
79
+ subject.segmento_q_posicao_015_a_015.must_equal ' '
80
+ end
81
+
82
+ # Código de Movimento Remessa
83
+ # 2 posições
84
+ # Por padrão é o valor '01'
85
+ #
86
+ def test_SegmentoQTest_metodo_segmento_q_posicao_016_a_017
87
+ subject.segmento_q_posicao_016_a_017.must_equal '01'
88
+ end
89
+
90
+ # Tipo de Inscrição (1=CPF 2=CNPJ)
91
+ # 1 posição
92
+ # Deve pegar o 'tipo_documento_sacado' com 1 posição
93
+ #
94
+ def test_SegmentoQTest_metodo_segmento_q_posicao_018_a_018#(pagamento)
95
+ pagamento.expects(:tipo_documento_sacado).with(1).returns('1')
96
+ subject.segmento_q_posicao_018_a_018(pagamento).must_equal '1'
97
+ end
98
+
99
+ # Número de Inscrição
100
+ # 15 posições
101
+ # Deve retornar o "documento_sacado" com 15 posições
102
+ #
103
+ def test_SegmentoQTest_metodo_segmento_q_posicao_019_a_033#(pagamento)
104
+ pagamento.documento_sacado = 1234567890
105
+ subject.segmento_q_posicao_019_a_033(pagamento).must_equal '000001234567890'
106
+ end
107
+
108
+ # Nome do sacado
109
+ # 40 posições
110
+ # Deve retornar o nome do sacado ajustando para 40 posições
111
+ #
112
+ def test_SegmentoQTest_metodo_segmento_q_posicao_034_a_073#(pagamento)
113
+ pagamento.nome_sacado = '556698'
114
+ subject.segmento_q_posicao_034_a_073(pagamento).must_equal '556698'.adjust_size_to(40)
115
+ end
116
+
117
+ # Endereço sacado
118
+ # 40 posições
119
+ # Deve pegar o "endereco_sacado" ajsutando para 40 posições
120
+ #
121
+ def test_SegmentoQTest_metodo_segmento_q_posicao_074_a_113#(pagamento)
122
+ pagamento.endereco_sacado = '111'.rjust(43, '2')
123
+ subject.segmento_q_posicao_074_a_113(pagamento).must_equal ''.rjust(40, '2')
124
+ end
125
+
126
+ # Bairro do sacado
127
+ # 15 posições
128
+ # Deve retornar o 'bairro_sacado' com 15 posições
129
+ #
130
+ def test_SegmentoQTest_metodo_segmento_q_posicao_114_a_128#(pagamento)
131
+ pagamento.bairro_sacado = '50'
132
+ subject.segmento_q_posicao_114_a_128(pagamento).must_equal '50'.adjust_size_to(15)
133
+ end
134
+
135
+ # CEP (prefixo)
136
+ # 5 posições
137
+ # Deve retornar o CEP com 5 posições
138
+ #
139
+ def test_SegmentoQTest_metodo_segmento_q_posicao_129_a_133#(pagamento)
140
+ pagamento.expects(:cep_sacado).returns('12345678')
141
+ subject.segmento_q_posicao_129_a_133(pagamento).must_equal '12345'
142
+ end
143
+
144
+ # CEP sufixo
145
+ # 3 posições
146
+ # Deve pegar as ultimas 3 posições do cep
147
+ #
148
+ def test_SegmentoQTest_metodo_segmento_q_posicao_134_a_136#(pagamento)
149
+ pagamento.expects(:cep_sacado).returns('12345678')
150
+ subject.segmento_q_posicao_134_a_136(pagamento).must_equal '678'
151
+ end
152
+
153
+ # Cidade
154
+ # 15 posições
155
+ # Deve retornar a "cidade_sacado" ajustando para 15 posições
156
+ #
157
+ def test_SegmentoQTest_metodo_segmento_q_posicao_137_a_151#(pagamento)
158
+ pagamento.expects(:cidade_sacado).returns('5555')
159
+ subject.segmento_q_posicao_137_a_151(pagamento).must_equal '5555'.adjust_size_to(15)
160
+ end
161
+
162
+ # Unidade da Federação
163
+ # 2 posuções
164
+ # Retorna o UF do sacado
165
+ #
166
+ def test_SegmentoQTest_metodo_segmento_q_posicao_152_a_153#(pagamento)
167
+ pagamento.expects(:uf_sacado).returns("XX")
168
+ subject.segmento_q_posicao_152_a_153(pagamento).must_equal 'XX'
169
+ end
170
+
171
+ # Tipo de Inscrição
172
+ # 1 posição
173
+ # Deve retornar o "tipo_documento_avalista" com 1 posição do pagamento
174
+ #
175
+ def test_SegmentoQTest_metodo_segmento_q_posicao_154_a_154#(pagamento)
176
+ pagamento.expects(:tipo_documento_avalista).with(1).returns("6")
177
+ subject.segmento_q_posicao_154_a_154(pagamento).must_equal '6'
178
+ end
179
+
180
+ # Número de Inscrição
181
+ # 15 posições
182
+ # Deve pegar o "documento_avalista" com 15 posições
183
+ #
184
+ def test_SegmentoQTest_metodo_segmento_q_posicao_155_a_169#(pagamento)
185
+ pagamento.expects(:documento_avalista).returns(123)
186
+ subject.segmento_q_posicao_155_a_169(pagamento).must_equal '123'.rjust(15, '0')
187
+ end
188
+
189
+ # Nome do avalista
190
+ # 40 posições
191
+ # Deve retornar o "nome_avalista" ajustando para 40 posições
192
+ #
193
+ def test_SegmentoQTest_metodo_segmento_q_posicao_170_a_209#(pagamento)
194
+ pagamento.expects(:nome_avalista).returns('avalista')
195
+ subject.segmento_q_posicao_170_a_209(pagamento).must_equal 'avalista'.adjust_size_to(40)
196
+ end
197
+
198
+ # Cód. Bco. Corresp. na Compensação
199
+ # 3 posições
200
+ # Deve retornar '000'
201
+ #
202
+ def test_SegmentoQTest_metodo_segmento_q_posicao_210_a_212
203
+ subject.segmento_q_posicao_210_a_212.must_equal ''.rjust(3, '0')
204
+ end
205
+
206
+ # Nosso Nº no Banco Correspondente
207
+ # 20 posições
208
+ # Deve retornar 20 posições em branco
209
+ #
210
+ def test_SegmentoQTest_metodo_segmento_q_posicao_213_a_232
211
+ subject.segmento_q_posicao_213_a_232.must_equal ''.rjust(20, ' ')
212
+ end
213
+
214
+ # Uso Exclusivo FEBRABAN/CNAB
215
+ # 8 posições
216
+ # Retorna 8 posições em branco
217
+ #
218
+ def test_SegmentoQTest_metodo_segmento_q_posicao_233_a_240
219
+ subject.segmento_q_posicao_233_a_240.must_equal ''.rjust(8, ' ')
220
+ end
221
+
222
+ end
223
+ end
@@ -0,0 +1,260 @@
1
+ module Helper
2
+ module SegmentoRTest
3
+ def test_SegmentoRTest_metodo_monta_segmento_r_deve_ter_o_conteudo_dos_metodos_na_sequencia
4
+ subject.stubs(:segmento_r_posicao_001_a_003) .returns( ' 001_a_003')
5
+ subject.stubs(:segmento_r_posicao_004_a_007).with(1).returns( ' 004_a_007')
6
+ subject.stubs(:segmento_r_posicao_008_a_008).returns( ' 008_a_008')
7
+ subject.stubs(:segmento_r_posicao_009_a_013).with(2).returns( ' 009_a_013')
8
+ subject.stubs(:segmento_r_posicao_014_a_014).returns( ' 014_a_014')
9
+ subject.stubs(:segmento_r_posicao_015_a_015).returns( ' 015_a_015')
10
+ subject.stubs(:segmento_r_posicao_016_a_017).returns( ' 016_a_017')
11
+ subject.stubs(:segmento_r_posicao_018_a_018).with(pagamento).returns(' 018_a_018')
12
+ subject.stubs(:segmento_r_posicao_019_a_026).with(pagamento).returns(' 019_a_026')
13
+ subject.stubs(:segmento_r_posicao_027_a_041).with(pagamento).returns(' 027_a_041')
14
+ subject.stubs(:segmento_r_posicao_042_a_042).with(pagamento).returns(' 042_a_042')
15
+ subject.stubs(:segmento_r_posicao_043_a_050).with(pagamento).returns(' 043_a_050')
16
+ subject.stubs(:segmento_r_posicao_051_a_065).with(pagamento).returns(' 051_a_065')
17
+ subject.stubs(:segmento_r_posicao_066_a_066).with(pagamento).returns(' 066_a_066')
18
+ subject.stubs(:segmento_r_posicao_067_a_074).with(pagamento).returns(' 067_a_074')
19
+ subject.stubs(:segmento_r_posicao_075_a_089).with(pagamento).returns(' 075_a_089')
20
+ subject.stubs(:segmento_r_posicao_090_a_099).returns( ' 090_a_099')
21
+ subject.stubs(:segmento_r_posicao_100_a_139).returns( ' 100_a_139')
22
+ subject.stubs(:segmento_r_posicao_140_a_179).returns( ' 140_a_179')
23
+ subject.stubs(:segmento_r_posicao_180_a_199).returns( ' 180_a_199')
24
+ subject.stubs(:segmento_r_posicao_200_a_207).returns( ' 200_a_207')
25
+ subject.stubs(:segmento_r_posicao_208_a_210).returns( ' 208_a_210')
26
+ subject.stubs(:segmento_r_posicao_211_a_215).returns( ' 211_a_215')
27
+ subject.stubs(:segmento_r_posicao_216_a_216).returns( ' 216_a_216')
28
+ subject.stubs(:segmento_r_posicao_217_a_228).returns( ' 217_a_228')
29
+ subject.stubs(:segmento_r_posicao_229_a_229).returns( ' 229_a_229')
30
+ subject.stubs(:segmento_r_posicao_230_a_230).returns( ' 230_a_230')
31
+ subject.stubs(:segmento_r_posicao_231_a_231).returns( ' 231_a_231')
32
+ subject.stubs(:segmento_r_posicao_232_a_240).returns( ' 232_a_240')
33
+ # Deve dar um upcase
34
+ subject.monta_segmento_r(pagamento, 1, 2).must_equal(" 001_A_003 004_A_007 008_A_008 009_A_013 014_A_014 015_A_015 016_A_017 018_A_018 019_A_026 027_A_041 042_A_042 043_A_050 051_A_065 066_A_066 067_A_074 075_A_089 090_A_099 100_A_139 140_A_179 180_A_199 200_A_207 208_A_210 211_A_215 216_A_216 217_A_228 229_A_229 230_A_230 231_A_231 232_A_240")
35
+ end
36
+
37
+ def test_SegmentoRHelper_deve_ter_240_posicoes
38
+ subject.stubs(:codigo_banco).returns("123")
39
+ subject.monta_segmento_r(pagamento, 1, 2).size.must_equal 240
40
+
41
+ end
42
+
43
+ # Código do banco
44
+ # 3 posições
45
+ #
46
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_001_a_003
47
+ subject.expects(:codigo_banco).returns("123")
48
+ subject.segmento_r_posicao_001_a_003 .must_equal '123'
49
+ end
50
+
51
+ # Lote de Serviço: Número seqüencial para identificar univocamente um lote de serviço.
52
+ # Criado e controlado pelo responsável pela geração magnética dos dados contidos no arquivo.
53
+ # Preencher com '0001' para o primeiro lote do arquivo.
54
+ # Para os demais: número do lote anterior acrescido de 1. O número não poderá ser repetido dentro do arquivo.
55
+ # 4 posições
56
+ #
57
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_004_a_007
58
+ subject.segmento_r_posicao_004_a_007(5).must_equal '0005'
59
+ end
60
+
61
+ # Tipo do registro -> Padrão 3
62
+ # 1 posição
63
+ #
64
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_008_a_008
65
+ subject.segmento_r_posicao_008_a_008.must_equal '3'
66
+ end
67
+
68
+ # Nº Sequencial do Registro no Lote
69
+ # 5 posições
70
+ #
71
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_009_a_013#(sequencial)
72
+ subject.segmento_r_posicao_009_a_013('4').must_equal '00004'
73
+ end
74
+
75
+ # Cód. Segmento do Registro Detalhe
76
+ # 1 posição
77
+ #
78
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_014_a_014
79
+ subject.segmento_r_posicao_014_a_014.must_equal 'R'
80
+ end
81
+
82
+ # Uso Exclusivo FEBRABAN/CNAB
83
+ # 1 posição
84
+ #
85
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_015_a_015
86
+ subject.segmento_r_posicao_015_a_015.must_equal ' '
87
+ end
88
+
89
+ # Código de Movimento Remessa - 01 = Entrada de Titulos
90
+ # 2 posições
91
+ #
92
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_016_a_017
93
+ subject.segmento_r_posicao_016_a_017.must_equal '01'
94
+ end
95
+
96
+ # Código do desconto 2
97
+ # 1 posição
98
+ #
99
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_018_a_018#(pagamento)
100
+ pagamento.expects(:desconto_2_codigo).returns('789')
101
+ subject.segmento_r_posicao_018_a_018(pagamento).must_equal '7'
102
+ end
103
+
104
+ # Data do desconto 2
105
+ # 8 posições
106
+ #
107
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_019_a_026#(pagamento)
108
+ pagamento.expects(:desconto_2_data_formatado).with('%d%m%Y').returns('02022002')
109
+ subject.segmento_r_posicao_019_a_026(pagamento).must_equal '02022002'
110
+ end
111
+
112
+ # Valor do desconto 2
113
+ # 15 posições
114
+ #
115
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_027_a_041#(pagamento)
116
+ pagamento.expects(:desconto_2_valor_formatado).with(15).returns('123456')
117
+ subject.segmento_r_posicao_027_a_041(pagamento).must_equal '123456'
118
+ end
119
+
120
+ # Código do desconto 3
121
+ # 1 posição
122
+ #
123
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_042_a_042#(pagamento)
124
+ pagamento.expects(:desconto_3_codigo).returns('897')
125
+ subject.segmento_r_posicao_042_a_042(pagamento).must_equal '8'
126
+ end
127
+
128
+ # Data do desconto 3
129
+ # 8 posições
130
+ #
131
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_043_a_050#(pagamento)
132
+ pagamento.expects(:desconto_3_data_formatado).with('%d%m%Y').returns('12345678')
133
+ subject.segmento_r_posicao_043_a_050(pagamento).must_equal '12345678'
134
+ end
135
+
136
+ # Valor do desconto 3
137
+ # 15 posições
138
+ #
139
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_051_a_065#(pagamento)
140
+ pagamento.expects(:desconto_3_valor_formatado).with(15).returns('1234567890')
141
+ subject.segmento_r_posicao_051_a_065(pagamento).must_equal '1234567890'
142
+ end
143
+
144
+ # Codigo da multa - (0 = isento, 1 = Valor fixo e 2 = Percentual)
145
+ # 1 posição
146
+ #
147
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_066_a_066#(pagamento)
148
+ pagamento.expects(:codigo_multa).returns('55555555')
149
+ subject.segmento_r_posicao_066_a_066(pagamento).must_equal '5'
150
+ end
151
+
152
+ # Data da multa
153
+ # 1 posição
154
+ #
155
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_067_a_074#(pagamento)
156
+ pagamento.expects(:data_multa_formatado).with('%d%m%Y').returns('12345678')
157
+ subject.segmento_r_posicao_067_a_074(pagamento).must_equal '12345678'
158
+ end
159
+
160
+ # valor da multa
161
+ # 15 posições
162
+ #
163
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_075_a_089#(pagamento)
164
+ pagamento.expects(:valor_multa_formatado).with(15).returns('123456')
165
+ subject.segmento_r_posicao_075_a_089(pagamento).must_equal '123456'
166
+ end
167
+
168
+ # Informação ao pagador
169
+ # 10 posições
170
+ #
171
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_090_a_099
172
+ subject.segmento_r_posicao_090_a_099.must_equal ''.rjust(10, " ")
173
+ end
174
+
175
+ # Informação 3
176
+ # 40 posições
177
+ #
178
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_100_a_139
179
+ subject.segmento_r_posicao_100_a_139.must_equal ''.rjust(40, " ")
180
+ end
181
+
182
+ # Informação 4
183
+ # 40 posições
184
+ #
185
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_140_a_179
186
+ subject.segmento_r_posicao_140_a_179.must_equal ''.rjust(40, " ")
187
+ end
188
+
189
+ # CNAB Uso exclusivo FEBRABAN
190
+ # 20 posições
191
+ #
192
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_180_a_199
193
+ subject.segmento_r_posicao_180_a_199.must_equal ''.rjust(20, " ")
194
+ end
195
+
196
+ # Cod. Ocor. do pagador
197
+ # 8 posições
198
+ #
199
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_200_a_207
200
+ subject.segmento_r_posicao_200_a_207.must_equal ''.rjust(8, "0")
201
+ end
202
+
203
+ # Cod. do banco para débido
204
+ # 3 posições
205
+ #
206
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_208_a_210
207
+ subject.segmento_r_posicao_208_a_210.must_equal ''.rjust(3, "0")
208
+ end
209
+
210
+ # Agencia para débido
211
+ # 5 posições
212
+ #
213
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_211_a_215
214
+ subject.segmento_r_posicao_211_a_215.must_equal ''.rjust(5, "0")
215
+ end
216
+
217
+ # DV agencia para débido
218
+ # 1 posições
219
+ #
220
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_216_a_216
221
+ subject.segmento_r_posicao_216_a_216.must_equal " "
222
+ end
223
+
224
+ # Conta corrente para débito
225
+ # 12 posições
226
+ #
227
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_217_a_228
228
+ subject.segmento_r_posicao_217_a_228.must_equal "".rjust(12, '0')
229
+ end
230
+
231
+ # DV Conta corrente para débito
232
+ # 1 posições
233
+ #
234
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_229_a_229
235
+ subject.segmento_r_posicao_229_a_229.must_equal " "
236
+ end
237
+
238
+ # DV Aencia/Conta
239
+ # 1 posições
240
+ #
241
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_230_a_230
242
+ subject.segmento_r_posicao_230_a_230.must_equal " "
243
+ end
244
+
245
+ # Ident. Da emissão do Aviso Debito Automatico
246
+ # 1 posição
247
+ #
248
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_231_a_231
249
+ subject.segmento_r_posicao_231_a_231.must_equal "0"
250
+ end
251
+
252
+ # Uso exclusivo
253
+ # 9 posições
254
+ #
255
+ def test_SegmentoRHelper_metodo_segmento_r_posicao_232_a_240
256
+ subject.segmento_r_posicao_232_a_240.must_equal "".rjust(9, " ")
257
+ end
258
+
259
+ end
260
+ end