check_cpf_cnpj 0.1.2 → 0.2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d453ddf9debfc3ce1dfc4bbbd1077926f6f1fbbe
4
- data.tar.gz: f59b4e001812d563bbcec64ac8eb1f2d7655aa62
3
+ metadata.gz: c930b298e0c5b8c15d9bb7bffc196d40b9637507
4
+ data.tar.gz: 25b22a1b97b031efdc751ef26702c1fb8e6b5f52
5
5
  SHA512:
6
- metadata.gz: f839c93160e8d750660213812d0ce7e87d6f25b4c31e54e8276801b34c90517674d82ce309b4a700444439fca95153cb1887ec548517733c4a28c2c2a242712d
7
- data.tar.gz: ee723bd30608d0117420aa822bc2c4ec361960598f196f27a485bf78eea9bef59bd726172d66f1aa37809e08c5f6572eaf6242ac8aad2815fe808f9493cdef46
6
+ metadata.gz: bc6bd39400359fbc705e4b5404856b6ff84e43df5f91e768b7ea80a49bfcbd55bafd5353abf5c890246a1365bea950f460554d309c681621360db480ea78b046
7
+ data.tar.gz: 215f3981872f86d4d06605702100f3bbd346fd234dee89ea001db3b385f11d58b62b083d1b3ecab5df580a5a1dbc4d73a0192ed3fc7911ea1c75a30eb4a4e9cc
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = "check_cpf_cnpj"
3
- s.version = "0.1.2"
3
+ s.version = "0.2.0"
4
4
  s.summary = "Simple gem to validate CPF and CNPJ"
5
5
  s.author = "Thiago Varanda"
6
6
  s.files = Dir["{lib/**/*.rb,README.rdoc,test/**/*.rb,Rakefile,*.gemspec}"]
@@ -1,6 +1,6 @@
1
1
  module CheckCpfCnpj
2
-
3
2
  require 'cpf/cpf'
3
+ require 'cnpj/cnpj'
4
4
 
5
5
  def self.valid_cpf?(number)
6
6
  return false if number.size != 11
@@ -16,7 +16,18 @@ module CheckCpfCnpj
16
16
  Cpf.new(number).only_numbers
17
17
  end
18
18
 
19
- end
19
+ def self.valid_cnpj?(number)
20
+ return false if number.size != 14
21
+ Cnpj.new(number).valid?
22
+ end
20
23
 
24
+ def self.formatted_cnpj(number)
25
+ return false if number.size != 14
26
+ Cnpj.new(number).formatted
27
+ end
21
28
 
22
- CheckCpfCnpj.valid_cpf?('93463833808')
29
+ def self.only_cnpj_numbers(number)
30
+ Cnpj.new(number).only_numbers
31
+ end
32
+
33
+ end
data/lib/cnpj/cnpj.rb ADDED
@@ -0,0 +1,32 @@
1
+ class Cnpj
2
+
3
+ def initialize(number=nil)
4
+ return false if number.nil?
5
+ @number = number.to_s
6
+ end
7
+
8
+ def only_numbers
9
+ return @number.gsub(".", "").gsub("-", "").gsub("/", "")
10
+ end
11
+
12
+ def formatted
13
+ return @number.insert(2, '.').insert(6, '.').insert(10, '/').insert(15, '-')
14
+ end
15
+
16
+ def valid?
17
+ return false if @number == '00000000000000'
18
+ return false if @number[12].to_i != check_digits(@number[0..11].split("").reverse)
19
+ return false if @number[13].to_i != check_digits(@number[0..12].split("").reverse)
20
+ return true
21
+ end
22
+
23
+ def check_digits(digits)
24
+ #receives digits reverted to simplify iteration
25
+ #array_check also is reverted to iteration
26
+ array_check = [2,3,4,5,6,7,8,9,2,3,4,5,6]
27
+ sum = 0
28
+ digits.each_with_index{ |digit, index| sum += digit.to_i * array_check[index].to_i }
29
+ mod = sum % 11
30
+ if mod < 2 then 0 else 11-mod end
31
+ end
32
+ end
data/lib/cpf/cpf.rb CHANGED
@@ -1,5 +1,12 @@
1
1
  class Cpf
2
2
 
3
+ INVALID_CPF = [
4
+ '11111111111', '22222222222', '33333333333',
5
+ '44444444444', '55555555555', '66666666666',
6
+ '77777777777', '88888888888', '99999999999',
7
+ '00000000000'
8
+ ]
9
+
3
10
  def initialize(number)
4
11
  return false if number.nil?
5
12
  @number = number.to_s
@@ -14,6 +21,7 @@ class Cpf
14
21
  end
15
22
 
16
23
  def valid?
24
+ return false if INVALID_CPF.include?(@number)
17
25
  return false if @number[9].to_i != check_digits(@number[0..8].split(""))
18
26
  return false if @number[10].to_i != check_digits(@number[0..9].split(""))
19
27
  return true
@@ -29,5 +37,4 @@ class Cpf
29
37
  mod = sum%11
30
38
  if mod < 2 then 0 else 11-mod end
31
39
  end
32
-
33
40
  end
data/test/cnpj_test.rb ADDED
@@ -0,0 +1,40 @@
1
+ require 'minitest/autorun'
2
+ require 'check_cpf_cnpj.rb'
3
+
4
+ # 27.332.993/0001-55
5
+ class CnpjTest < MiniTest::Test
6
+ def test_valid_formatted_cnpj
7
+ assert_equal "27.332.993/0001-55", CheckCpfCnpj.formatted_cnpj('27332993000155')
8
+ end
9
+
10
+ def test_invalid_formatted_cnpj
11
+ refute CheckCpfCnpj.formatted_cpf('2733299300015') # 13 digits
12
+ end
13
+
14
+ def test_only_cnpj_numbers
15
+ assert_equal "27332993000155", CheckCpfCnpj.only_cnpj_numbers('27.332.993/0001-55')
16
+ end
17
+
18
+ def test_valid_cnpj
19
+ assert CheckCpfCnpj.valid_cnpj?('27332993000155')
20
+ assert CheckCpfCnpj.valid_cnpj?('82743906000160')
21
+ end
22
+
23
+ def test_invalid_cnpj
24
+ refute CheckCpfCnpj.valid_cnpj?('27335993000155')
25
+ refute CheckCpfCnpj.valid_cnpj?('00000000000000')
26
+ end
27
+
28
+ def test_invalid_fist_digit
29
+ refute CheckCpfCnpj.valid_cnpj?('27332993000145')
30
+ end
31
+
32
+ def test_invalid_second_digit
33
+ refute CheckCpfCnpj.valid_cnpj?('27332993000154')
34
+ end
35
+
36
+ def test_invalid_digits
37
+ refute CheckCpfCnpj.valid_cnpj?('27332993000122')
38
+ end
39
+
40
+ end
@@ -1,7 +1,7 @@
1
1
  require 'minitest/autorun'
2
2
  require 'check_cpf_cnpj'
3
3
 
4
- class CheckCpfCnpjTest < MiniTest::Unit::TestCase
4
+ class CpfTest < MiniTest::Test
5
5
  def test_valid_formatted_cpf
6
6
  assert_equal "934.638.338-08", CheckCpfCnpj.formatted_cpf('93463833808')
7
7
  end
@@ -20,6 +20,16 @@ class CheckCpfCnpjTest < MiniTest::Unit::TestCase
20
20
 
21
21
  def test_invalid_cpf
22
22
  refute CheckCpfCnpj.valid_cpf?('93363833808')
23
+ refute CheckCpfCnpj.valid_cpf?('00000000000')
24
+ refute CheckCpfCnpj.valid_cpf?('11111111111')
25
+ refute CheckCpfCnpj.valid_cpf?('22222222222')
26
+ refute CheckCpfCnpj.valid_cpf?('33333333333')
27
+ refute CheckCpfCnpj.valid_cpf?('44444444444')
28
+ refute CheckCpfCnpj.valid_cpf?('55555555555')
29
+ refute CheckCpfCnpj.valid_cpf?('66666666666')
30
+ refute CheckCpfCnpj.valid_cpf?('77777777777')
31
+ refute CheckCpfCnpj.valid_cpf?('88888888888')
32
+ refute CheckCpfCnpj.valid_cpf?('99999999999')
23
33
  end
24
34
 
25
35
  def test_invalid_fist_digit
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: check_cpf_cnpj
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thiago Varanda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-08-03 00:00:00.000000000 Z
11
+ date: 2016-08-04 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -19,8 +19,10 @@ files:
19
19
  - Rakefile
20
20
  - check_cpf_cnpj.gemspec
21
21
  - lib/check_cpf_cnpj.rb
22
+ - lib/cnpj/cnpj.rb
22
23
  - lib/cpf/cpf.rb
23
- - test/check_cpf_cnpj_test.rb
24
+ - test/cnpj_test.rb
25
+ - test/cpf_test.rb
24
26
  homepage:
25
27
  licenses: []
26
28
  metadata: {}