cpf_generator 0.0.1 → 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 +4 -4
- data/README.md +25 -14
- data/lib/cpf_generator.rb +42 -32
- data/lib/cpf_generator/version.rb +1 -1
- data/spec/lib/cpf_generator_spec.rb +28 -13
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7106fd831fb3d72794651374473275139de66f71
|
4
|
+
data.tar.gz: b9c3c285ae90f98866c6ef7e1f3b205640a06d17
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c8a8178e96b3575cc17fbc1abf6ecde4ade2117fd947a2bef9eb983481151b02a37e792d4dbdcf41a1f9f2f85aff28164eba22ae2b890cedc4576ffcebabe815
|
7
|
+
data.tar.gz: d39e575ff05fe7d0095e2850da97486962f5e0752062262252350827fe92c7cf3039b9a11ac94648b9b34edca991371a53add9ce2476575dcb84e43b0783eb49
|
data/README.md
CHANGED
@@ -1,29 +1,40 @@
|
|
1
1
|
# CpfGenerator
|
2
2
|
|
3
|
-
|
3
|
+
Gerador de cpf para testes. É algo bem básico usado para gerar cpfs válidos para ser usados em testes.
|
4
4
|
|
5
|
-
|
5
|
+
EN: This is a simple gem to create brazilian cpf numbers to be used for software tests
|
6
6
|
|
7
|
-
|
7
|
+
## Instalação
|
8
8
|
|
9
|
-
|
9
|
+
Adicione essa linha no Gemfile da sua aplicação:
|
10
10
|
|
11
|
-
|
11
|
+
gem 'cpf_generator', require: false
|
12
|
+
|
13
|
+
Execute o bundle para instalar:
|
12
14
|
|
13
15
|
$ bundle
|
14
16
|
|
15
|
-
|
17
|
+
Ou se preferir, instale no seu sistema:
|
16
18
|
|
17
19
|
$ gem install cpf_generator
|
18
20
|
|
19
|
-
##
|
21
|
+
## Uso
|
22
|
+
|
23
|
+
A gem te disponibiliza dois métodos para gerar cpf. **formatted** e **unformatted**
|
24
|
+
|
25
|
+
require 'cpf_generator'
|
26
|
+
|
27
|
+
# Para gerar um cpf formatado
|
28
|
+
CpfGenerator.formatted => # 710.743.079-33
|
29
|
+
|
30
|
+
# Para gerar um cpf não formatado
|
31
|
+
CpfGenerator.unformatted => # 71074307933
|
20
32
|
|
21
|
-
TODO: Write usage instructions here
|
22
33
|
|
23
|
-
##
|
34
|
+
## Contribuindo
|
24
35
|
|
25
|
-
1. Fork
|
26
|
-
2.
|
27
|
-
3. Commit
|
28
|
-
4. Push
|
29
|
-
5.
|
36
|
+
1. Faça um Fork
|
37
|
+
2. Crie um novo branch para a sua modificação (`git checkout -b my-new-feature`)
|
38
|
+
3. Commit suas alterações (`git commit -am 'Add some feature'`)
|
39
|
+
4. Faça um Push para o branch (`git push origin my-new-feature`)
|
40
|
+
5. Crie um novo Pull Request
|
data/lib/cpf_generator.rb
CHANGED
@@ -1,42 +1,65 @@
|
|
1
1
|
require "cpf_generator/version"
|
2
2
|
|
3
3
|
module CpfGenerator
|
4
|
+
def initialize
|
5
|
+
numbers
|
6
|
+
end
|
7
|
+
|
8
|
+
def self.formatted
|
9
|
+
Cpf.new(numbers).formatted
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.unformatted
|
13
|
+
Cpf.new(numbers).unformatted
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.numbers
|
17
|
+
[*0..9].sample(9)
|
18
|
+
end
|
19
|
+
|
4
20
|
class Cpf
|
5
21
|
attr_accessor :numbers
|
6
22
|
|
7
|
-
def initialize
|
8
|
-
@numbers =
|
23
|
+
def initialize(numbers)
|
24
|
+
@numbers = numbers
|
25
|
+
end
|
26
|
+
|
27
|
+
def formatted
|
28
|
+
first_dv
|
29
|
+
second_dv
|
30
|
+
cpf = @numbers.join("")
|
31
|
+
"#{cpf[0..2]}.#{cpf[3..5]}.#{cpf[6..8]}-#{cpf[9..11]}"
|
32
|
+
end
|
33
|
+
|
34
|
+
def unformatted
|
35
|
+
first_dv
|
36
|
+
second_dv
|
37
|
+
@numbers.join("")
|
9
38
|
end
|
10
39
|
|
11
40
|
def first_dv
|
12
41
|
value = 0
|
13
|
-
|
14
|
-
up = [0,1,2,3,4,5,6,7,8]
|
42
|
+
multipliers = [10,9,8,7,6,5,4,3,2]
|
15
43
|
|
16
|
-
|
17
|
-
value += @numbers[
|
44
|
+
multipliers.each_with_index do |mult, index|
|
45
|
+
value += @numbers[index] * mult
|
18
46
|
end
|
19
47
|
|
20
|
-
|
21
|
-
if remainder < 2
|
22
|
-
@numbers << 0
|
23
|
-
0
|
24
|
-
else
|
25
|
-
@numbers << (11 - remainder)
|
26
|
-
(11 - remainder)
|
27
|
-
end
|
48
|
+
check_remainder(value % 11)
|
28
49
|
end
|
29
50
|
|
30
51
|
def second_dv
|
31
52
|
value = 0
|
32
|
-
|
33
|
-
up = [0,1,2,3,4,5,6,7,8,9]
|
53
|
+
multipliers = [11,10,9,8,7,6,5,4,3,2]
|
34
54
|
|
35
|
-
|
36
|
-
value += @numbers[
|
55
|
+
multipliers.each_with_index do |mult, index|
|
56
|
+
value += @numbers[index] * mult
|
37
57
|
end
|
38
58
|
|
39
|
-
|
59
|
+
check_remainder(value % 11)
|
60
|
+
end
|
61
|
+
|
62
|
+
def check_remainder(remainder)
|
40
63
|
if remainder < 2
|
41
64
|
@numbers << 0
|
42
65
|
0
|
@@ -45,18 +68,5 @@ module CpfGenerator
|
|
45
68
|
(11 - remainder)
|
46
69
|
end
|
47
70
|
end
|
48
|
-
|
49
|
-
def formatted
|
50
|
-
first_dv
|
51
|
-
second_dv
|
52
|
-
cpf = @numbers.join("")
|
53
|
-
"#{cpf[0..2]}.#{cpf[3..5]}.#{cpf[6..8]}-#{cpf[9..11]}"
|
54
|
-
end
|
55
|
-
|
56
|
-
def unformatted
|
57
|
-
first_dv
|
58
|
-
second_dv
|
59
|
-
@numbers.join("")
|
60
|
-
end
|
61
71
|
end
|
62
72
|
end
|
@@ -1,29 +1,44 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
require_relative '../../lib/cpf_generator'
|
3
3
|
|
4
|
-
describe
|
5
|
-
|
6
|
-
|
7
|
-
|
4
|
+
describe CpfGenerator do
|
5
|
+
|
6
|
+
it "#formatted" do
|
7
|
+
CpfGenerator.formatted.should =~ /\d{3}.\d{3}.\d{3}-\d{2}$/
|
8
|
+
end
|
9
|
+
|
10
|
+
it "a new formatted cpf always need be generated" do
|
11
|
+
CpfGenerator.formatted.should_not == CpfGenerator.formatted
|
12
|
+
end
|
13
|
+
|
14
|
+
it "#unformatted" do
|
15
|
+
CpfGenerator.unformatted.should match(/\d{11}$/)
|
16
|
+
end
|
8
17
|
|
9
|
-
|
10
|
-
|
18
|
+
it "a new unformatted cpf always need be generated" do
|
19
|
+
CpfGenerator.unformatted.should_not == CpfGenerator.unformatted
|
20
|
+
end
|
11
21
|
|
12
|
-
|
22
|
+
it "#numbers" do
|
23
|
+
CpfGenerator.numbers.size.should == 9
|
13
24
|
end
|
25
|
+
end
|
26
|
+
|
27
|
+
|
28
|
+
describe "CPF class" do
|
14
29
|
|
15
30
|
describe "#first_dv" do
|
16
31
|
it "with remainder < 2" do
|
17
|
-
cpf = CpfGenerator::Cpf.new
|
18
32
|
numbers = [3, 7, 2, 0, 5, 8, 6, 3, 9]
|
33
|
+
cpf = CpfGenerator::Cpf.new(numbers)
|
19
34
|
cpf.numbers = numbers
|
20
35
|
|
21
36
|
cpf.first_dv.should == 1
|
22
37
|
end
|
23
38
|
|
24
39
|
it "with remainder >= 2" do
|
25
|
-
cpf = CpfGenerator::Cpf.new
|
26
40
|
numbers = [2, 1, 1, 6, 3, 0, 7, 8, 9]
|
41
|
+
cpf = CpfGenerator::Cpf.new(numbers)
|
27
42
|
cpf.numbers = numbers
|
28
43
|
|
29
44
|
cpf.first_dv.should == 9
|
@@ -32,16 +47,16 @@ describe "CPF class" do
|
|
32
47
|
|
33
48
|
describe "#second_dv" do
|
34
49
|
it "with remainder < 2" do
|
35
|
-
cpf = CpfGenerator::Cpf.new
|
36
50
|
numbers = [2, 1, 1, 3, 3, 0, 7, 8, 9, 9]
|
51
|
+
cpf = CpfGenerator::Cpf.new(numbers)
|
37
52
|
cpf.numbers = numbers
|
38
53
|
|
39
54
|
cpf.second_dv.should == 0
|
40
55
|
end
|
41
56
|
|
42
57
|
it "with remainder >= 2" do
|
43
|
-
cpf = CpfGenerator::Cpf.new
|
44
58
|
numbers = [1, 7, 2, 0, 5, 8, 6, 3, 9, 0]
|
59
|
+
cpf = CpfGenerator::Cpf.new(numbers)
|
45
60
|
cpf.numbers = numbers
|
46
61
|
|
47
62
|
cpf.second_dv.should == 2
|
@@ -49,16 +64,16 @@ describe "CPF class" do
|
|
49
64
|
end
|
50
65
|
|
51
66
|
it "format as 000.000.000-00" do
|
52
|
-
cpf = CpfGenerator::Cpf.new
|
53
67
|
numbers = [3, 4, 4, 9, 6, 4, 0, 4, 5]
|
68
|
+
cpf = CpfGenerator::Cpf.new(numbers)
|
54
69
|
cpf.numbers = numbers
|
55
70
|
|
56
71
|
cpf.formatted.should == "344.964.045-32"
|
57
72
|
end
|
58
73
|
|
59
74
|
it "unformated " do
|
60
|
-
cpf = CpfGenerator::Cpf.new
|
61
75
|
numbers = [3, 4, 4, 9, 6, 4, 0, 4, 5]
|
76
|
+
cpf = CpfGenerator::Cpf.new(numbers)
|
62
77
|
cpf.numbers = numbers
|
63
78
|
|
64
79
|
cpf.unformatted.should == "34496404532"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cpf_generator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jose Carlos Ustra Junior
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -90,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
90
90
|
version: '0'
|
91
91
|
requirements: []
|
92
92
|
rubyforge_project:
|
93
|
-
rubygems_version: 2.0.
|
93
|
+
rubygems_version: 2.0.6
|
94
94
|
signing_key:
|
95
95
|
specification_version: 4
|
96
96
|
summary: Gerador de cpf para ser usados para testes
|