cnpj_utils 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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.rspec +2 -0
- data/.travis.yml +6 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +88 -0
- data/Rakefile +1 -0
- data/cnpj_utils.gemspec +27 -0
- data/lib/cnpj_utils/cnpj.rb +62 -0
- data/lib/cnpj_utils/string.rb +73 -0
- data/lib/cnpj_utils/version.rb +3 -0
- data/lib/cnpj_utils.rb +58 -0
- data/spec/cnpj_utils/cnpj.rb +62 -0
- data/spec/cnpj_utils/string_spec.rb +75 -0
- data/spec/cpnj_utils_spec.rb +41 -0
- data/spec/spec_helper.rb +2 -0
- metadata +108 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4f5a743199e16a48ece16505917acefc348c166f
|
4
|
+
data.tar.gz: 7741e5bf1b25670f57d2190a022bf45ecf5e8ac0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 614863a451a1ecae3ad92c3258f26e3f316ff0ddcc08975db905a5c28d674a97cec56164637b225102018c147d1e177d696bd4d49d9758960920a3e8688e0490
|
7
|
+
data.tar.gz: 606c5c76c4c029995c64c5557280027a64556d481ad23ec0c16d48855685d8f54232cd3bed82ff1d87683a5392b725b027df86a0f41b0756c85e32aeaa7f22c4
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 Jackson Pires
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,88 @@
|
|
1
|
+
# CnpjUtils
|
2
|
+
|
3
|
+
CnpjUtils é uma suite de funcionalidades para CNPJ.
|
4
|
+
O CnpjUtils é capaz de gerar CNPJ para testes no formado tradicional ou apenas numérico, testa se determinado número de CNPJ é válido, gera dígitos verificadores para determinado número candidato a CNPJ, dentre outras coisas.
|
5
|
+
|
6
|
+
## Instalação
|
7
|
+
|
8
|
+
Adicione essa linha na Gemfile da sua aplicação:
|
9
|
+
|
10
|
+
gem 'cnpj_utils'
|
11
|
+
|
12
|
+
E então execute:
|
13
|
+
|
14
|
+
$ bundle
|
15
|
+
|
16
|
+
Ou instale você mesmo, conforme abaixo:
|
17
|
+
|
18
|
+
$ gem install cnpj_utils
|
19
|
+
|
20
|
+
## Uso
|
21
|
+
|
22
|
+
O CnpjUtils é muito fácil de usar, por exempo:
|
23
|
+
|
24
|
+
# Para gerar um número de CNPJ:
|
25
|
+
CnpjUtils.cnpj => # "61287395000140"
|
26
|
+
|
27
|
+
# Para gerar um CNPJ formatado:
|
28
|
+
CnpjUtils.cnpj_formatted => # "61.287.395/0001-40"
|
29
|
+
|
30
|
+
# Para verificar se um CNPJ é válido:
|
31
|
+
CnpjUtils.valid_cnpj?("61287395000140") => # true
|
32
|
+
CnpjUtils.valid_cnpj?(61287395000140) => # true
|
33
|
+
CnpjUtils.valid_cnpj?("61.287.395/0001-40") => # true
|
34
|
+
|
35
|
+
# Outra forma de verificar se um CNPJ é válido:
|
36
|
+
"61287395000140".valid_cnpj? => # true
|
37
|
+
"61.287.395/0001-40".valid_cnpj? => # true
|
38
|
+
|
39
|
+
# Para verificar se uma máscara de CNPJ é válida:
|
40
|
+
"61.287.395/0001-40".valid_cnpj_mask? => # true
|
41
|
+
"61.287..395/0001-40".valid_cnpj_mask? => # false
|
42
|
+
|
43
|
+
# Para formatar um número válido de CNPJ:
|
44
|
+
"61287395000140".to_cnpj_format => # "61.287.395/0001-40"
|
45
|
+
|
46
|
+
# Para gerar um número de CNPJ a partir de um número candidato de 12 dígitos:
|
47
|
+
"612873950001".generate_cnpj => # "61287395000140"
|
48
|
+
|
49
|
+
# Para gerar um número de CNPJ formatado a partir de um número candidato de 12 dígitos:
|
50
|
+
"612873950001".generate_cnpj_formatted => # "61.287.395/0001-40"
|
51
|
+
|
52
|
+
Também é possível usar métodos em português:
|
53
|
+
|
54
|
+
# Para gerar um número de CNPJ:
|
55
|
+
CnpjUtils.cnpj => # "61287395000140"
|
56
|
+
|
57
|
+
# Para gerar um CNPJ formatado:
|
58
|
+
CnpjUtils.cnpj_formatado => # "61.287.395/0001-40"
|
59
|
+
|
60
|
+
# Para verificar se um CNPJ é válido:
|
61
|
+
CnpjUtils.cnpj_valido?("61287395000140") => # true
|
62
|
+
CnpjUtils.cnpj_valido?(61287395000140) => # true
|
63
|
+
CnpjUtils.cnpj_valido?("61.287.395/0001-40") => # true
|
64
|
+
|
65
|
+
# Outra forma de verificar se um CNPJ é válido:
|
66
|
+
"61287395000140".cnpj_valido? => # true
|
67
|
+
"61.287.395/0001-40".cnpj_valido? => # true
|
68
|
+
|
69
|
+
# Para verificar se uma máscara de CNPJ é válida:
|
70
|
+
"61.287.395/0001-40".mascara_de_cnpj_valida? => # true
|
71
|
+
"61.287..395/0001-40".mascara_de_cnpj_valida? => # false
|
72
|
+
|
73
|
+
# Para formatar um número válido de CNPJ:
|
74
|
+
"61287395000140".para_formato_cnpj => # "61.287.395/0001-40"
|
75
|
+
|
76
|
+
# Para gerar um número de CNPJ a partir de um número candidato de 12 dígitos:
|
77
|
+
"612873950001".gerar_cnpj => # "61287395000140"
|
78
|
+
|
79
|
+
# Para gerar um número de CNPJ formatado a partir de um número candidato de 12 dígitos:
|
80
|
+
"612873950001".gerar_cnpj_formatado => # "61.287.395/0001-40"
|
81
|
+
|
82
|
+
## Contribuindo
|
83
|
+
|
84
|
+
1. Faça um Fork
|
85
|
+
2. Crie um branch para a nova funcionalidade (`git checkout -b minha-nova-funcionalidade`)
|
86
|
+
3. Faça o commit de suas alterações (`git commit -am 'Adicionada nova funcionalidade'`)
|
87
|
+
4. Faça um push da sua nova funconalidade (`git push origin minha-nova-funcionalidade`)
|
88
|
+
5. Submeta uma nova Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/cnpj_utils.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'cnpj_utils/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "cnpj_utils"
|
8
|
+
spec.version = CnpjUtils::VERSION
|
9
|
+
spec.authors = ["Jackson Pires"]
|
10
|
+
spec.email = ["jackson.pires@gmail.com"]
|
11
|
+
spec.description = %q{Uma suíte de funcionalidades para o CNPJ.}
|
12
|
+
spec.summary = %q{Gera CNPJ para testes no formado tradicional ou apenas
|
13
|
+
numérico, testa se determinado número de CNPJ
|
14
|
+
é válido, além muitas outras funcionalidades descritas
|
15
|
+
na documentação.}
|
16
|
+
spec.homepage = "https://github.com/jacksonpires/cnpj_utils"
|
17
|
+
spec.license = "MIT"
|
18
|
+
|
19
|
+
spec.files = `git ls-files`.split($/)
|
20
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
21
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
22
|
+
spec.require_paths = ["lib"]
|
23
|
+
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
25
|
+
spec.add_development_dependency "rake"
|
26
|
+
spec.add_development_dependency "rspec", "~> 2.14.1"
|
27
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
module CnpjUtils
|
2
|
+
class Cnpj
|
3
|
+
|
4
|
+
# Acessor de leitura para os números
|
5
|
+
attr_reader :numbers
|
6
|
+
|
7
|
+
# Inicializador da classe
|
8
|
+
def initialize(numbers)
|
9
|
+
if numbers.is_a? String
|
10
|
+
numbers = numbers.split('')
|
11
|
+
elsif numbers.is_a? Fixnum
|
12
|
+
numbers = numbers.to_s.split('')
|
13
|
+
end
|
14
|
+
|
15
|
+
@numbers = numbers
|
16
|
+
end
|
17
|
+
|
18
|
+
# Gera o CNPJ propriamente dito
|
19
|
+
def generate_cnpj
|
20
|
+
@numbers << first_digit
|
21
|
+
@numbers << second_digit
|
22
|
+
@numbers.join("")
|
23
|
+
end
|
24
|
+
|
25
|
+
# Gera o primeiro dígito verificador
|
26
|
+
def first_digit
|
27
|
+
if @numbers.size == 12
|
28
|
+
value = 0
|
29
|
+
multipliers = [5,4,3,2,9,8,7,6,5,4,3,2]
|
30
|
+
|
31
|
+
multipliers.each_with_index do |mult, index|
|
32
|
+
value += @numbers[index].to_i * mult
|
33
|
+
end
|
34
|
+
|
35
|
+
check_remainder(value % 11)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
# Gera o segundo dígito verificador
|
40
|
+
def second_digit
|
41
|
+
if @numbers.size == 13
|
42
|
+
value = 0
|
43
|
+
multipliers = [6,5,4,3,2,9,8,7,6,5,4,3,2]
|
44
|
+
|
45
|
+
multipliers.each_with_index do |mult, index|
|
46
|
+
value += @numbers[index].to_i * mult
|
47
|
+
end
|
48
|
+
|
49
|
+
check_remainder(value % 11)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
# Checa o resto da divisão
|
54
|
+
def check_remainder(remainder)
|
55
|
+
if remainder < 2
|
56
|
+
0
|
57
|
+
else
|
58
|
+
(11 - remainder)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
class String
|
2
|
+
|
3
|
+
# Verifica se uma máscara de CNPJ é válida:
|
4
|
+
#
|
5
|
+
# "61.287.395/0001-40".valid_cnpj_mask? => # true
|
6
|
+
# "45.698..394/0001-54".valid_cnpj_mask? => # false
|
7
|
+
def valid_cnpj_mask?
|
8
|
+
without_mask = !!(self =~ /^[0-9]{14}+$/)
|
9
|
+
with_mask = !!(self =~ /^[0-9]{2}\.[0-9]{3}\.[0-9]{3}\/[0-9]{4}-[0-9]{2}+$/)
|
10
|
+
with_mask || without_mask
|
11
|
+
end
|
12
|
+
|
13
|
+
# Verifica se um CNPJ é válido:
|
14
|
+
#
|
15
|
+
# "61287395000140".valid_cnpj? => # true
|
16
|
+
# "61.287.395/0001-40".valid_cnpj? => # true
|
17
|
+
def valid_cnpj?
|
18
|
+
if valid_cnpj_mask?
|
19
|
+
original_cnpj = self.gsub(/\.?\/?/,"",)
|
20
|
+
tested_cnpj = original_cnpj[0..11]
|
21
|
+
|
22
|
+
tested_cnpj << CnpjUtils::Cnpj.new(original_cnpj[0..11]).first_digit.to_s
|
23
|
+
tested_cnpj << CnpjUtils::Cnpj.new(tested_cnpj[0..12]).second_digit.to_s
|
24
|
+
|
25
|
+
tested_cnpj == original_cnpj ? true : false
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# Para formatar um número válido de CNPJ:
|
30
|
+
#
|
31
|
+
# "61287395000140".to_cnpj_format => # "61.287.395/0001-40"
|
32
|
+
def to_cnpj_format
|
33
|
+
if self.valid_cnpj?
|
34
|
+
"#{self[0..1]}.#{self[2..4]}.#{self[5..7]}/#{self[8..11]}-#{self[12..13]}"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
# Para gerar um número de CNPJ a partir de um número candidato:
|
39
|
+
#
|
40
|
+
# "456983940001".generate_cnpj => # "61287395000140"
|
41
|
+
def generate_cnpj
|
42
|
+
if !!(self =~ /^[0-9]{12}+$/)
|
43
|
+
final_cnpj = self
|
44
|
+
|
45
|
+
final_cnpj << CnpjUtils::Cnpj.new(final_cnpj[0..11]).first_digit.to_s
|
46
|
+
final_cnpj << CnpjUtils::Cnpj.new(final_cnpj[0..12]).second_digit.to_s
|
47
|
+
|
48
|
+
final_cnpj
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# Gera um número de CNPJ formatado a partir de um número candidato:
|
53
|
+
#
|
54
|
+
# "456983940001".generate_cnpj_formatted => # "61.287.395/0001-40"
|
55
|
+
def generate_cnpj_formatted
|
56
|
+
generate_cnpj.to_cnpj_format
|
57
|
+
end
|
58
|
+
|
59
|
+
# Apelido 'mascara_de_cnpj_valida' para o método valid_cnpj_mask
|
60
|
+
alias_method :mascara_de_cnpj_valida?, :valid_cnpj_mask?
|
61
|
+
|
62
|
+
# Apelido 'cnpj_valido?' para o método valid_cnpj?
|
63
|
+
alias_method :cnpj_valido?, :valid_cnpj?
|
64
|
+
|
65
|
+
# Apelido 'para_formato_cnpj' para o método to_cnpj_format
|
66
|
+
alias_method :para_formato_cnpj, :to_cnpj_format
|
67
|
+
|
68
|
+
# Apelido 'gerar_cnpj' para o método generate_cnpj
|
69
|
+
alias_method :gerar_cnpj, :generate_cnpj
|
70
|
+
|
71
|
+
# Apelido 'gerar_cnpj_formatado' para o método generate_cnpj_formatted
|
72
|
+
alias_method :gerar_cnpj_formatado, :generate_cnpj_formatted
|
73
|
+
end
|
data/lib/cnpj_utils.rb
ADDED
@@ -0,0 +1,58 @@
|
|
1
|
+
require "cnpj_utils/version"
|
2
|
+
require "cnpj_utils/string"
|
3
|
+
require "cnpj_utils/cnpj"
|
4
|
+
|
5
|
+
module CnpjUtils
|
6
|
+
|
7
|
+
# Gera um número de CNPJ.
|
8
|
+
#
|
9
|
+
# Exemplo:
|
10
|
+
# CnpjUtils.cnpj => # "61287395000140"
|
11
|
+
def self.cnpj
|
12
|
+
Cnpj.new(sample_numbers).generate_cnpj
|
13
|
+
end
|
14
|
+
|
15
|
+
# Gera um número de Cnpj formatado.
|
16
|
+
#
|
17
|
+
# Exemplo:
|
18
|
+
# CnpjUtils.cnpj_formatted => # "61.287.395/0001-40"
|
19
|
+
def self.cnpj_formatted
|
20
|
+
Cnpj.new(sample_numbers).generate_cnpj.to_cnpj_format
|
21
|
+
end
|
22
|
+
|
23
|
+
# Gera um número de Cnpj formatado.
|
24
|
+
#
|
25
|
+
# Exemplo:
|
26
|
+
# CnpjUtils.cnpj_formatado => # "61.287.395/0001-40"
|
27
|
+
def self.cnpj_formatado
|
28
|
+
self.cnpj_formatted
|
29
|
+
end
|
30
|
+
|
31
|
+
# Verifica se um Cnpj é válido.
|
32
|
+
#
|
33
|
+
# Exemplo:
|
34
|
+
# CnpjUtils.valid_cnpj?(61287395000140) => # true
|
35
|
+
# CnpjUtils.valid_cnpj?("61287395000140") => # true
|
36
|
+
# CnpjUtils.valid_cnpj?("61.287.395/0001-40") => # true
|
37
|
+
def self.valid_cnpj?(cnpj_number)
|
38
|
+
cnpj_number.to_s.valid_cnpj?
|
39
|
+
end
|
40
|
+
|
41
|
+
# Verifica se um Cnpj é válido.
|
42
|
+
#
|
43
|
+
# Exemplo:
|
44
|
+
# CnpjUtils.cnpj_valido?(61287395000140) => # true
|
45
|
+
# CnpjUtils.cnpj_valido?("61287395000140") => # true
|
46
|
+
# CnpjUtils.cnpj_valido?("61.287.395/0001-40") => # true
|
47
|
+
def self.cnpj_valido?(cnpj_number)
|
48
|
+
self.valid_cnpj?(cnpj_number)
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
# Sorteia 12 números para compor um novo Cnpj
|
54
|
+
def self.sample_numbers
|
55
|
+
cnpj_candidate = [*0..9].sample(8)
|
56
|
+
cnpj_candidate.concat [0,0,0,1]
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe CnpjUtils do
|
4
|
+
|
5
|
+
context 'CnpjUtils::Cnpj' do
|
6
|
+
|
7
|
+
it "#initialize - Text" do
|
8
|
+
cnpj = CnpjUtils::Cnpj.new("123456780001")
|
9
|
+
expect(cnpj.numbers).to be_a_kind_of(Array)
|
10
|
+
expect(cnpj.numbers.size).to eql(12)
|
11
|
+
end
|
12
|
+
|
13
|
+
it "#initialize - Fixnum" do
|
14
|
+
cnpj = CnpjUtils::Cnpj.new(123456780001)
|
15
|
+
expect(cnpj.numbers).to be_a_kind_of(Array)
|
16
|
+
expect(cnpj.numbers.size).to eql(12)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "#initialize - Array" do
|
20
|
+
cnpj = CnpjUtils::Cnpj.new([1, 2, 3, 4, 5, 6, 7, 8, 0, 0, 0, 1])
|
21
|
+
expect(cnpj.numbers).to be_a_kind_of(Array)
|
22
|
+
expect(cnpj.numbers.size).to eql(12)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "#generate_cnpj" do
|
26
|
+
cnpj = CnpjUtils::Cnpj.new("123456780001")
|
27
|
+
complete_cnpj = cnpj.generate_cnpj
|
28
|
+
expect(complete_cnpj.size).to eql(14)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "#first_digit" do
|
32
|
+
cnpj = CnpjUtils::Cnpj.new("612873950001")
|
33
|
+
first_digit = cnpj.first_digit
|
34
|
+
expect(first_digit).to eql(4)
|
35
|
+
end
|
36
|
+
|
37
|
+
it "#first_digit - false" do
|
38
|
+
cnpj = CnpjUtils::Cnpj.new("123")
|
39
|
+
first_digit = cnpj.first_digit
|
40
|
+
expect(first_digit).to be_false
|
41
|
+
end
|
42
|
+
|
43
|
+
it "#second_digit" do
|
44
|
+
cnpj = CnpjUtils::Cnpj.new("6128739500014")
|
45
|
+
second_digit = cnpj.second_digit
|
46
|
+
expect(second_digit).to eql(0)
|
47
|
+
end
|
48
|
+
|
49
|
+
it "#second_digit - false" do
|
50
|
+
cnpj = CnpjUtils::Cnpj.new("123")
|
51
|
+
second_digit = cnpj.second_digit
|
52
|
+
expect(second_digit).to be_false
|
53
|
+
end
|
54
|
+
|
55
|
+
it "#check_remainder" do
|
56
|
+
cnpj = CnpjUtils::Cnpj.new("123456780001")
|
57
|
+
expect(cnpj.check_remainder(0)).to eql(0)
|
58
|
+
expect(cnpj.check_remainder(1)).to eql(0)
|
59
|
+
expect(cnpj.check_remainder(2)).to eql(9)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe String do
|
4
|
+
it "#valid_cnpj_mask?" do
|
5
|
+
expect("61.287.395/0001-40".valid_cnpj_mask?).to be_true
|
6
|
+
expect("61287395000140".valid_cnpj_mask?).to be_true
|
7
|
+
end
|
8
|
+
|
9
|
+
it "#mascara_de_cnpj_valida?" do
|
10
|
+
expect("61.287.395/0001-40".mascara_de_cnpj_valida?).to be_true
|
11
|
+
expect("61287395000140".mascara_de_cnpj_valida?).to be_true
|
12
|
+
end
|
13
|
+
|
14
|
+
it "#valid_cnpj_mask? - be false" do
|
15
|
+
expect("45.698.394//0001-54".valid_cnpj_mask?).to be_false
|
16
|
+
expect("45.698..394/0001-54".valid_cnpj_mask?).to be_false
|
17
|
+
expect("45.698.394/00O1-54".valid_cnpj_mask?).to be_false
|
18
|
+
end
|
19
|
+
|
20
|
+
it "#mascara_de_cnpj_valida? - be false" do
|
21
|
+
expect("45.698.394//0001-54".mascara_de_cnpj_valida?).to be_false
|
22
|
+
expect("45.698..394/0001-54".mascara_de_cnpj_valida?).to be_false
|
23
|
+
expect("45.698.394/00O1-54".mascara_de_cnpj_valida?).to be_false
|
24
|
+
end
|
25
|
+
|
26
|
+
it "#valid_cnpj?" do
|
27
|
+
cnpj = CnpjUtils.cnpj
|
28
|
+
expect(cnpj.valid_cnpj?).to be_true
|
29
|
+
end
|
30
|
+
|
31
|
+
it "#cnpj_valido?" do
|
32
|
+
cnpj = CnpjUtils.cnpj
|
33
|
+
expect(cnpj.cnpj_valido?).to be_true
|
34
|
+
end
|
35
|
+
|
36
|
+
it "#to_cnpj_format?" do
|
37
|
+
cnpj = CnpjUtils.cnpj
|
38
|
+
expect(cnpj.to_cnpj_format).to match(/^[0-9]{2}\.[0-9]{3}\.[0-9]{3}\/[0-9]{4}-[0-9]{2}+$/)
|
39
|
+
end
|
40
|
+
|
41
|
+
it "#para_formato_cnpj?" do
|
42
|
+
cnpj = CnpjUtils.cnpj
|
43
|
+
expect(cnpj.para_formato_cnpj).to match(/^[0-9]{2}\.[0-9]{3}\.[0-9]{3}\/[0-9]{4}-[0-9]{2}+$/)
|
44
|
+
end
|
45
|
+
|
46
|
+
it "#generate_cnpj" do
|
47
|
+
valid_cnpj = CnpjUtils.cnpj
|
48
|
+
final_cnpj = valid_cnpj[0..11].generate_cnpj
|
49
|
+
|
50
|
+
expect(final_cnpj).to be_a_kind_of(String)
|
51
|
+
expect(final_cnpj.length).to eql(14)
|
52
|
+
end
|
53
|
+
|
54
|
+
it "#gerar_cnpj" do
|
55
|
+
valid_cnpj = CnpjUtils.cnpj
|
56
|
+
final_cnpj = valid_cnpj[0..11].gerar_cnpj
|
57
|
+
|
58
|
+
expect(final_cnpj).to be_a_kind_of(String)
|
59
|
+
expect(final_cnpj.length).to eql(14)
|
60
|
+
end
|
61
|
+
|
62
|
+
it "#gerar_cnpj_formatado" do
|
63
|
+
valid_cnpj = CnpjUtils.cnpj
|
64
|
+
final_cnpj = valid_cnpj[0..11].gerar_cnpj_formatado
|
65
|
+
|
66
|
+
expect(final_cnpj).to match(/^[0-9]{2}\.[0-9]{3}\.[0-9]{3}\/[0-9]{4}-[0-9]{2}+$/)
|
67
|
+
end
|
68
|
+
|
69
|
+
it "#generate_cnpj_formatted" do
|
70
|
+
valid_cnpj = CnpjUtils.cnpj
|
71
|
+
final_cnpj = valid_cnpj[0..11].generate_cnpj_formatted
|
72
|
+
|
73
|
+
expect(final_cnpj).to match(/^[0-9]{2}\.[0-9]{3}\.[0-9]{3}\/[0-9]{4}-[0-9]{2}+$/)
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe CnpjUtils do
|
4
|
+
|
5
|
+
it ".cnpj" do
|
6
|
+
valid_cnpj = CnpjUtils.cnpj
|
7
|
+
expect(valid_cnpj).to be_a_kind_of(String)
|
8
|
+
expect(valid_cnpj.length).to eql(14)
|
9
|
+
end
|
10
|
+
|
11
|
+
it ".cnpj_formatted" do
|
12
|
+
valid_cnpj = CnpjUtils.cnpj_formatted
|
13
|
+
expect(valid_cnpj).to match(/^[0-9]{2}\.[0-9]{3}\.[0-9]{3}\/[0-9]{4}-[0-9]{2}+$/)
|
14
|
+
end
|
15
|
+
|
16
|
+
it ".cnpj_formatado" do
|
17
|
+
valid_cnpj = CnpjUtils.cnpj_formatado
|
18
|
+
expect(valid_cnpj).to match(/^[0-9]{2}\.[0-9]{3}\.[0-9]{3}\/[0-9]{4}-[0-9]{2}+$/)
|
19
|
+
end
|
20
|
+
|
21
|
+
it ".valid_cnpj?" do
|
22
|
+
valid_cnpj = CnpjUtils.cnpj
|
23
|
+
expect(CnpjUtils.valid_cnpj? valid_cnpj).to be_true
|
24
|
+
end
|
25
|
+
|
26
|
+
it ".cnpj_valido?" do
|
27
|
+
cnpj_valido = CnpjUtils.cnpj
|
28
|
+
expect(CnpjUtils.cnpj_valido? cnpj_valido).to be_true
|
29
|
+
end
|
30
|
+
|
31
|
+
it ".valid_cnpj? - be false" do
|
32
|
+
invalid_cnpj = "12.345.678/0001-12"
|
33
|
+
expect(CnpjUtils.valid_cnpj? invalid_cnpj).to be_false
|
34
|
+
end
|
35
|
+
|
36
|
+
it ".sample_numbers" do
|
37
|
+
numbers = CnpjUtils.sample_numbers
|
38
|
+
expect(numbers.size).to eql(12)
|
39
|
+
expect(numbers).to be_a_kind_of(Array)
|
40
|
+
end
|
41
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: cnpj_utils
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jackson Pires
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ~>
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 2.14.1
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ~>
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 2.14.1
|
55
|
+
description: Uma suíte de funcionalidades para o CNPJ.
|
56
|
+
email:
|
57
|
+
- jackson.pires@gmail.com
|
58
|
+
executables: []
|
59
|
+
extensions: []
|
60
|
+
extra_rdoc_files: []
|
61
|
+
files:
|
62
|
+
- .gitignore
|
63
|
+
- .rspec
|
64
|
+
- .travis.yml
|
65
|
+
- Gemfile
|
66
|
+
- LICENSE.txt
|
67
|
+
- README.md
|
68
|
+
- Rakefile
|
69
|
+
- cnpj_utils.gemspec
|
70
|
+
- lib/cnpj_utils.rb
|
71
|
+
- lib/cnpj_utils/cnpj.rb
|
72
|
+
- lib/cnpj_utils/string.rb
|
73
|
+
- lib/cnpj_utils/version.rb
|
74
|
+
- spec/cnpj_utils/cnpj.rb
|
75
|
+
- spec/cnpj_utils/string_spec.rb
|
76
|
+
- spec/cpnj_utils_spec.rb
|
77
|
+
- spec/spec_helper.rb
|
78
|
+
homepage: https://github.com/jacksonpires/cnpj_utils
|
79
|
+
licenses:
|
80
|
+
- MIT
|
81
|
+
metadata: {}
|
82
|
+
post_install_message:
|
83
|
+
rdoc_options: []
|
84
|
+
require_paths:
|
85
|
+
- lib
|
86
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - '>='
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
requirements: []
|
97
|
+
rubyforge_project:
|
98
|
+
rubygems_version: 2.0.3
|
99
|
+
signing_key:
|
100
|
+
specification_version: 4
|
101
|
+
summary: Gera CNPJ para testes no formado tradicional ou apenas numérico, testa se
|
102
|
+
determinado número de CNPJ é válido, além muitas outras funcionalidades descritas
|
103
|
+
na documentação.
|
104
|
+
test_files:
|
105
|
+
- spec/cnpj_utils/cnpj.rb
|
106
|
+
- spec/cnpj_utils/string_spec.rb
|
107
|
+
- spec/cpnj_utils_spec.rb
|
108
|
+
- spec/spec_helper.rb
|