br_boleto 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +15 -0
- data/Gemfile.lock +145 -0
- data/History.txt +4 -0
- data/LICENSE +20 -0
- data/README.markdown +156 -0
- data/Rakefile +8 -0
- data/br_boleto.gemspec +26 -0
- data/lib/br_boleto.rb +87 -0
- data/lib/br_boleto/calculos/digitos.rb +35 -0
- data/lib/br_boleto/calculos/fator_vencimento.rb +129 -0
- data/lib/br_boleto/calculos/fatores_de_multiplicacao.rb +67 -0
- data/lib/br_boleto/calculos/linha_digitavel.rb +158 -0
- data/lib/br_boleto/calculos/modulo10.rb +83 -0
- data/lib/br_boleto/calculos/modulo11.rb +54 -0
- data/lib/br_boleto/calculos/modulo11_fator3197.rb +88 -0
- data/lib/br_boleto/calculos/modulo11_fator_de2a7.rb +97 -0
- data/lib/br_boleto/calculos/modulo11_fator_de2a9.rb +83 -0
- data/lib/br_boleto/calculos/modulo11_fator_de2a9_resto_zero.rb +29 -0
- data/lib/br_boleto/calculos/modulo11_fator_de9a2.rb +65 -0
- data/lib/br_boleto/calculos/modulo11_fator_de9a2_resto_x.rb +55 -0
- data/lib/br_boleto/calculos/modulo_numero_de_controle.rb +117 -0
- data/lib/br_boleto/core/boleto.rb +558 -0
- data/lib/br_boleto/core/sicoob.rb +169 -0
- data/lib/br_boleto/version.rb +8 -0
- data/test/br_boleto/calculos/digitos_test.rb +15 -0
- data/test/br_boleto/calculos/fator_vencimento_test.rb +56 -0
- data/test/br_boleto/calculos/fatores_de_multiplicacao_test.rb +66 -0
- data/test/br_boleto/calculos/linha_digitavel_test.rb +58 -0
- data/test/br_boleto/calculos/modulo10_test.rb +54 -0
- data/test/br_boleto/calculos/modulo11_fator3197_test.rb +43 -0
- data/test/br_boleto/calculos/modulo11_fator_de2a7_test.rb +44 -0
- data/test/br_boleto/calculos/modulo11_fator_de2a9_resto_zero_test.rb +40 -0
- data/test/br_boleto/calculos/modulo11_fator_de2a9_test.rb +68 -0
- data/test/br_boleto/calculos/modulo11_fator_de9a2_resto_x_test.rb +38 -0
- data/test/br_boleto/calculos/modulo11_fator_de9a2_test.rb +32 -0
- data/test/br_boleto/calculos/modulo11_test.rb +28 -0
- data/test/br_boleto/calculos/modulo_numero_de_controle_test.rb +38 -0
- data/test/br_boleto/core/boleto_test.rb +221 -0
- data/test/br_boleto/core/sicoob_test.rb +138 -0
- data/test/factories/boleto.rb +22 -0
- data/test/factories/boleto_sicoob.rb +23 -0
- data/test/inheritance/boleto_test.rb +15 -0
- data/test/inheritance/sicoob_test.rb +25 -0
- data/test/test_helper.rb +37 -0
- metadata +151 -0
@@ -0,0 +1,138 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
describe BrBoleto::Core::Sicoob do
|
5
|
+
subject { BrBoleto::Core::Sicoob.new }
|
6
|
+
context "on validations" do
|
7
|
+
it { must validate_length_of(:agencia).is_at_most(4) }
|
8
|
+
|
9
|
+
it { must validate_length_of(:codigo_cedente).is_at_most(7) }
|
10
|
+
|
11
|
+
it { must validate_length_of(:numero_documento).is_at_most(7) }
|
12
|
+
|
13
|
+
it { must validate_inclusion_of(:carteira).in_array(%w(1 3)) }
|
14
|
+
it { wont allow_value(9).for(:carteira) }
|
15
|
+
it { wont allow_value(6).for(:carteira) }
|
16
|
+
|
17
|
+
it { must validate_numericality_of(:valor_documento).is_less_than_or_equal_to(99999999.99) }
|
18
|
+
|
19
|
+
end
|
20
|
+
context "#agencia" do
|
21
|
+
it "get value when have a value" do
|
22
|
+
subject.agencia = '215'
|
23
|
+
subject.agencia.must_equal '0215'
|
24
|
+
end
|
25
|
+
|
26
|
+
it "returns nil when is nil" do
|
27
|
+
subject.agencia = nil
|
28
|
+
subject.agencia.must_be_nil
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
context "#conta_corrente" do
|
33
|
+
it "when have a value" do
|
34
|
+
subject.codigo_cedente = '9201'
|
35
|
+
subject.codigo_cedente.must_equal '0009201'
|
36
|
+
end
|
37
|
+
|
38
|
+
it "when is nil" do
|
39
|
+
subject.codigo_cedente = nil
|
40
|
+
subject.codigo_cedente.must_be_nil
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
context "#numero_documento" do
|
45
|
+
it "when have a value" do
|
46
|
+
subject.numero_documento = '1'
|
47
|
+
subject.numero_documento.must_equal '0000001'
|
48
|
+
end
|
49
|
+
|
50
|
+
it "when is nil" do
|
51
|
+
subject.numero_documento = nil
|
52
|
+
subject.numero_documento.must_be_nil
|
53
|
+
end
|
54
|
+
end
|
55
|
+
describe "#carteira" do
|
56
|
+
it "when have a value" do
|
57
|
+
subject.carteira = '1'
|
58
|
+
|
59
|
+
subject.carteira.must_equal '1'
|
60
|
+
end
|
61
|
+
|
62
|
+
it "when is nil" do
|
63
|
+
subject.carteira = nil
|
64
|
+
subject.carteira.must_be_nil
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
describe "#codigo_banco" do
|
69
|
+
it{ subject.codigo_banco.must_equal '756' }
|
70
|
+
end
|
71
|
+
|
72
|
+
describe "#digito_codigo_banco" do
|
73
|
+
it { subject.digito_codigo_banco.must_equal '0' }
|
74
|
+
end
|
75
|
+
|
76
|
+
describe "#agencia_codigo_beneficiario" do
|
77
|
+
subject { FactoryGirl.build(:boleto_sicoob, agencia: 48, codigo_cedente: '7368') }
|
78
|
+
|
79
|
+
it { subject.agencia_codigo_cedente.must_equal '0048 / 0007368' }
|
80
|
+
end
|
81
|
+
|
82
|
+
describe "#digito_verificador_nosso_numero" do
|
83
|
+
it "deve calcular pelo Modulo11Fator3197" do
|
84
|
+
subject.agencia = 1
|
85
|
+
subject.codigo_cedente = 33
|
86
|
+
subject.numero_documento = 111
|
87
|
+
BrBoleto::Calculos::Modulo11Fator3197.expects(:new).with("000100000000330000111").returns("meu_resultado")
|
88
|
+
subject.digito_verificador_nosso_numero.must_equal "meu_resultado"
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
describe "#nosso_numero" do
|
93
|
+
subject { FactoryGirl.build(:boleto_sicoob, numero_documento: '68315') }
|
94
|
+
|
95
|
+
it "deve retornar o numero do documento com o digito_verificador_nosso_numero" do
|
96
|
+
subject.stubs(:digito_verificador_nosso_numero).returns('9')
|
97
|
+
subject.numero_documento = '3646'
|
98
|
+
subject.nosso_numero.must_equal "0003646-9"
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
describe "#codigo_de_barras_do_banco" do
|
103
|
+
subject do
|
104
|
+
FactoryGirl.build(:boleto_sicoob,
|
105
|
+
carteira: '1',
|
106
|
+
agencia: '78',
|
107
|
+
codigo_cedente: '66',
|
108
|
+
# modalidade_cobranca: '1',
|
109
|
+
# parcelas: '1'
|
110
|
+
)
|
111
|
+
end
|
112
|
+
it "name" do
|
113
|
+
subject.stubs(:nosso_numero).returns('1234567-8')
|
114
|
+
subject.codigo_de_barras_do_banco.must_equal "1007801000006612345678001"
|
115
|
+
end
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
describe "#codigo_de_barras" do
|
120
|
+
subject do
|
121
|
+
FactoryGirl.build(:boleto_sicoob) do |sicoob|
|
122
|
+
sicoob.agencia = 3069
|
123
|
+
sicoob.codigo_cedente = 828_190 # Para o sicoob é o código do cliente
|
124
|
+
sicoob.numero_documento = 100_10
|
125
|
+
sicoob.carteira = 1
|
126
|
+
sicoob.valor_documento = 93015.78
|
127
|
+
sicoob.data_vencimento = Date.parse('2020-02-17')
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
it { subject.codigo_de_barras.must_equal '75699816800093015781306901082819000100107001' }
|
132
|
+
it { subject.linha_digitavel.must_equal '75691.30698 01082.819002 01001.070018 9 81680009301578' }
|
133
|
+
end
|
134
|
+
|
135
|
+
describe "#carteiras_suportadas" do
|
136
|
+
it { subject.class.carteiras_suportadas.must_equal ["1","3"] }
|
137
|
+
end
|
138
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
FactoryGirl.define do
|
4
|
+
factory :core_boleto, class: BrBoleto::Core::Boleto do
|
5
|
+
numero_documento '191075'
|
6
|
+
valor_documento 101.99
|
7
|
+
data_vencimento Date.new(2015, 07, 10)
|
8
|
+
carteira '175'
|
9
|
+
agencia '0098'
|
10
|
+
conta_corrente '98701'
|
11
|
+
cedente 'Nome da razao social'
|
12
|
+
sacado 'Teste'
|
13
|
+
documento_sacado '725.275.005-10'
|
14
|
+
endereco_sacado 'Rua teste, 23045'
|
15
|
+
instrucoes1 'Lembrar de algo 1'
|
16
|
+
instrucoes2 'Lembrar de algo 2'
|
17
|
+
instrucoes3 'Lembrar de algo 3'
|
18
|
+
instrucoes4 'Lembrar de algo 4'
|
19
|
+
instrucoes5 'Lembrar de algo 5'
|
20
|
+
instrucoes6 'Lembrar de algo 6'
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
|
3
|
+
FactoryGirl.define do
|
4
|
+
factory :boleto_sicoob, class: BrBoleto::Core::Sicoob do
|
5
|
+
agencia 95
|
6
|
+
codigo_cedente 6532
|
7
|
+
numero_documento 1101
|
8
|
+
carteira 1
|
9
|
+
valor_documento 93015.78
|
10
|
+
data_vencimento Date.parse('2019-02-17')
|
11
|
+
conta_corrente '98701'
|
12
|
+
cedente 'Nome da razao social'
|
13
|
+
sacado 'Teste'
|
14
|
+
documento_sacado '725.275.005-10'
|
15
|
+
endereco_sacado 'Rua teste, 23045'
|
16
|
+
instrucoes1 'Lembrar de algo 1'
|
17
|
+
instrucoes2 'Lembrar de algo 2'
|
18
|
+
instrucoes3 'Lembrar de algo 3'
|
19
|
+
instrucoes4 'Lembrar de algo 4'
|
20
|
+
instrucoes5 'Lembrar de algo 5'
|
21
|
+
instrucoes6 'Lembrar de algo 6'
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class TesteBoleto < BrBoleto::Boleto
|
5
|
+
def self.valor_documento_tamanho_maximo
|
6
|
+
9_999.99 # Default 99999999.99
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
describe TesteBoleto do
|
11
|
+
subject { TesteBoleto.new() }
|
12
|
+
context "on validations" do
|
13
|
+
it { must validate_numericality_of(:valor_documento).is_less_than_or_equal_to(9_999.99) }
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# encoding: utf-8
|
2
|
+
require 'test_helper'
|
3
|
+
|
4
|
+
class TesteSicoob < BrBoleto::Sicoob
|
5
|
+
def self.valor_documento_tamanho_maximo
|
6
|
+
456.50 # Default 99999999.99
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.carteiras_suportadas
|
10
|
+
%w[1] # Default %w[1 3]
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
describe TesteSicoob do
|
15
|
+
subject { TesteSicoob.new() }
|
16
|
+
|
17
|
+
describe "on validations" do
|
18
|
+
it { must validate_numericality_of(:valor_documento).is_less_than_or_equal_to(456.50) }
|
19
|
+
|
20
|
+
it { must validate_inclusion_of(:carteira).in_array(%w(1)) }
|
21
|
+
it { wont allow_value(3).for(:carteira) }
|
22
|
+
it { wont allow_value(6).for(:carteira) }
|
23
|
+
it { wont allow_value(9).for(:carteira) }
|
24
|
+
end
|
25
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# encoding: UTF-8
|
2
|
+
require 'bundler/setup'
|
3
|
+
Bundler.require(:default, :test)
|
4
|
+
|
5
|
+
ENV["RAILS_ENV"] = "test"
|
6
|
+
require "rails/test_help"
|
7
|
+
require 'minitest/autorun'
|
8
|
+
require "minitest/rails"
|
9
|
+
require 'minitest/matchers_vaccine'
|
10
|
+
|
11
|
+
require 'shoulda/matchers'
|
12
|
+
require "minitest/reporters"
|
13
|
+
require 'mocha/mini_test'
|
14
|
+
|
15
|
+
|
16
|
+
require 'factory_girl_rails'
|
17
|
+
|
18
|
+
|
19
|
+
Minitest::Reporters.use!
|
20
|
+
|
21
|
+
ActiveSupport::TestCase.test_order = :sorted
|
22
|
+
|
23
|
+
FactoryGirl.definition_file_paths = [File.expand_path('../factories', __FILE__)]
|
24
|
+
FactoryGirl.find_definitions
|
25
|
+
|
26
|
+
class Module
|
27
|
+
include Minitest::Spec::DSL
|
28
|
+
end
|
29
|
+
|
30
|
+
class Object
|
31
|
+
alias context describe
|
32
|
+
end
|
33
|
+
|
34
|
+
class MiniTest::Spec
|
35
|
+
include Shoulda::Matchers::ActiveModel
|
36
|
+
include FactoryGirl::Syntax::Methods
|
37
|
+
end
|
metadata
ADDED
@@ -0,0 +1,151 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: br_boleto
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Bruno M. Mergen
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-07-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 0.8.7
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 0.8.7
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '4.2'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '4.2'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: activemodel
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '4.2'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '4.2'
|
55
|
+
description: Emissão de Boletos Bancários em Ruby
|
56
|
+
email:
|
57
|
+
- brunomergen@gmail.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- Gemfile
|
63
|
+
- Gemfile.lock
|
64
|
+
- History.txt
|
65
|
+
- LICENSE
|
66
|
+
- README.markdown
|
67
|
+
- Rakefile
|
68
|
+
- br_boleto.gemspec
|
69
|
+
- lib/br_boleto.rb
|
70
|
+
- lib/br_boleto/calculos/digitos.rb
|
71
|
+
- lib/br_boleto/calculos/fator_vencimento.rb
|
72
|
+
- lib/br_boleto/calculos/fatores_de_multiplicacao.rb
|
73
|
+
- lib/br_boleto/calculos/linha_digitavel.rb
|
74
|
+
- lib/br_boleto/calculos/modulo10.rb
|
75
|
+
- lib/br_boleto/calculos/modulo11.rb
|
76
|
+
- lib/br_boleto/calculos/modulo11_fator3197.rb
|
77
|
+
- lib/br_boleto/calculos/modulo11_fator_de2a7.rb
|
78
|
+
- lib/br_boleto/calculos/modulo11_fator_de2a9.rb
|
79
|
+
- lib/br_boleto/calculos/modulo11_fator_de2a9_resto_zero.rb
|
80
|
+
- lib/br_boleto/calculos/modulo11_fator_de9a2.rb
|
81
|
+
- lib/br_boleto/calculos/modulo11_fator_de9a2_resto_x.rb
|
82
|
+
- lib/br_boleto/calculos/modulo_numero_de_controle.rb
|
83
|
+
- lib/br_boleto/core/boleto.rb
|
84
|
+
- lib/br_boleto/core/sicoob.rb
|
85
|
+
- lib/br_boleto/version.rb
|
86
|
+
- test/br_boleto/calculos/digitos_test.rb
|
87
|
+
- test/br_boleto/calculos/fator_vencimento_test.rb
|
88
|
+
- test/br_boleto/calculos/fatores_de_multiplicacao_test.rb
|
89
|
+
- test/br_boleto/calculos/linha_digitavel_test.rb
|
90
|
+
- test/br_boleto/calculos/modulo10_test.rb
|
91
|
+
- test/br_boleto/calculos/modulo11_fator3197_test.rb
|
92
|
+
- test/br_boleto/calculos/modulo11_fator_de2a7_test.rb
|
93
|
+
- test/br_boleto/calculos/modulo11_fator_de2a9_resto_zero_test.rb
|
94
|
+
- test/br_boleto/calculos/modulo11_fator_de2a9_test.rb
|
95
|
+
- test/br_boleto/calculos/modulo11_fator_de9a2_resto_x_test.rb
|
96
|
+
- test/br_boleto/calculos/modulo11_fator_de9a2_test.rb
|
97
|
+
- test/br_boleto/calculos/modulo11_test.rb
|
98
|
+
- test/br_boleto/calculos/modulo_numero_de_controle_test.rb
|
99
|
+
- test/br_boleto/core/boleto_test.rb
|
100
|
+
- test/br_boleto/core/sicoob_test.rb
|
101
|
+
- test/factories/boleto.rb
|
102
|
+
- test/factories/boleto_sicoob.rb
|
103
|
+
- test/inheritance/boleto_test.rb
|
104
|
+
- test/inheritance/sicoob_test.rb
|
105
|
+
- test/test_helper.rb
|
106
|
+
homepage: https://github.com/Brunomm/br_boleto
|
107
|
+
licenses:
|
108
|
+
- BSD
|
109
|
+
metadata: {}
|
110
|
+
post_install_message:
|
111
|
+
rdoc_options: []
|
112
|
+
require_paths:
|
113
|
+
- lib
|
114
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
115
|
+
requirements:
|
116
|
+
- - ">="
|
117
|
+
- !ruby/object:Gem::Version
|
118
|
+
version: '2.1'
|
119
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
120
|
+
requirements:
|
121
|
+
- - ">="
|
122
|
+
- !ruby/object:Gem::Version
|
123
|
+
version: '0'
|
124
|
+
requirements: []
|
125
|
+
rubyforge_project:
|
126
|
+
rubygems_version: 2.4.6
|
127
|
+
signing_key:
|
128
|
+
specification_version: 4
|
129
|
+
summary: Emissão de Boletos Bancários em Ruby
|
130
|
+
test_files:
|
131
|
+
- test/br_boleto/calculos/digitos_test.rb
|
132
|
+
- test/br_boleto/calculos/fator_vencimento_test.rb
|
133
|
+
- test/br_boleto/calculos/fatores_de_multiplicacao_test.rb
|
134
|
+
- test/br_boleto/calculos/linha_digitavel_test.rb
|
135
|
+
- test/br_boleto/calculos/modulo10_test.rb
|
136
|
+
- test/br_boleto/calculos/modulo11_fator3197_test.rb
|
137
|
+
- test/br_boleto/calculos/modulo11_fator_de2a7_test.rb
|
138
|
+
- test/br_boleto/calculos/modulo11_fator_de2a9_resto_zero_test.rb
|
139
|
+
- test/br_boleto/calculos/modulo11_fator_de2a9_test.rb
|
140
|
+
- test/br_boleto/calculos/modulo11_fator_de9a2_resto_x_test.rb
|
141
|
+
- test/br_boleto/calculos/modulo11_fator_de9a2_test.rb
|
142
|
+
- test/br_boleto/calculos/modulo11_test.rb
|
143
|
+
- test/br_boleto/calculos/modulo_numero_de_controle_test.rb
|
144
|
+
- test/br_boleto/core/boleto_test.rb
|
145
|
+
- test/br_boleto/core/sicoob_test.rb
|
146
|
+
- test/factories/boleto.rb
|
147
|
+
- test/factories/boleto_sicoob.rb
|
148
|
+
- test/inheritance/boleto_test.rb
|
149
|
+
- test/inheritance/sicoob_test.rb
|
150
|
+
- test/test_helper.rb
|
151
|
+
has_rdoc:
|